1 29 30 package com.caucho.quercus.env; 31 32 import com.caucho.quercus.expr.Expr; 33 import com.caucho.quercus.program.AbstractFunction; 34 import com.caucho.vfs.WriteStream; 35 36 import java.io.IOException ; 37 import java.io.Serializable ; 38 import java.util.Map ; 39 import java.net.URL ; 40 import java.util.Calendar ; 41 import java.util.Collection ; 42 import java.util.Date ; 43 import java.util.IdentityHashMap ; 44 import java.util.List ; 45 46 49 public class Var extends Value 50 implements Serializable 51 { 52 Value _value; 53 private int _refCount; 54 55 public Var() 56 { 57 _value = NullValue.NULL; 58 } 59 60 public Var(Value value) 61 { 62 _value = value; 63 } 64 65 68 public void setReference() 69 { 70 _refCount = 1; 71 } 72 73 76 public void setGlobal() 77 { 78 _refCount = 1; 79 } 80 81 84 public Value set(Value value) 85 { 86 _value = value.toValue(); 87 88 return _value; 89 } 90 91 94 protected Value setRaw(Value value) 95 { 96 _value = value; 98 99 return _value; 100 } 101 102 105 public String getType() 106 { 107 return _value.getType(); 108 } 109 110 113 public boolean isset() 114 { 115 return _value.isset(); 116 } 117 118 121 public boolean isA(String name) 122 { 123 return _value.isA(name); 124 } 125 126 129 public boolean isNull() 130 { 131 return _value.isNull(); 132 } 133 134 137 public boolean isLongConvertible() 138 { 139 return _value.isLongConvertible(); 140 } 141 142 145 public boolean isDoubleConvertible() 146 { 147 return _value.isDoubleConvertible(); 148 } 149 150 153 public boolean isNumberConvertible() 154 { 155 return _value.isNumberConvertible(); 156 } 157 158 161 @Override 162 public boolean isNumeric() 163 { 164 return _value.isNumeric(); 165 } 166 167 170 176 177 180 public boolean isString() 181 { 182 return _value.isString(); 183 } 184 185 188 public boolean isBinary() 189 { 190 return _value.isBinary(); 191 } 192 193 196 public boolean isUnicode() 197 { 198 return _value.isUnicode(); 199 } 200 201 205 public String toString() 206 { 207 return _value.toString(); 208 } 209 210 213 public boolean toBoolean() 214 { 215 return _value.toBoolean(); 216 } 217 218 221 public long toLong() 222 { 223 return _value.toLong(); 224 } 225 226 229 public double toDouble() 230 { 231 return _value.toDouble(); 232 } 233 234 237 public Value toLongValue() 238 { 239 return _value.toLongValue(); 240 } 241 242 245 public Value toDoubleValue() 246 { 247 return _value.toDoubleValue(); 248 } 249 250 254 public StringValue toString(Env env) 255 { 256 return _value.toString(env); 257 } 258 259 262 public Object toJavaObject() 263 { 264 return _value.toJavaObject(); 265 } 266 267 270 @Override 271 public Object toJavaObject(Env env, Class type) 272 { 273 return _value.toJavaObject(env, type); 274 } 275 276 279 @Override 280 public Object toJavaObjectNotNull(Env env, Class type) 281 { 282 return _value.toJavaObjectNotNull(env, type); 283 } 284 285 288 public Collection toJavaCollection(Env env, Class type) 289 { 290 return _value.toJavaCollection(env, type); 291 } 292 293 296 public List toJavaList(Env env, Class type) 297 { 298 return _value.toJavaList(env, type); 299 } 300 301 304 public Map toJavaMap(Env env, Class type) 305 { 306 return _value.toJavaMap(env, type); 307 } 308 309 312 @Override 313 public Calendar toJavaCalendar() 314 { 315 return _value.toJavaCalendar(); 316 } 317 318 321 @Override 322 public Date toJavaDate() 323 { 324 return _value.toJavaDate(); 325 } 326 327 330 @Override 331 public URL toJavaURL(Env env) 332 { 333 return _value.toJavaURL(env); 334 } 335 336 339 public Value toArray() 340 { 341 return _value.toArray(); 342 } 343 344 347 @Override 348 public ArrayValue toArrayValue(Env env) 349 { 350 return _value.toArrayValue(env); 351 } 352 353 356 public Value toAutoArray() 357 { 358 _value = _value.toAutoArray(); 359 360 return _value; 361 } 362 363 366 public Value toObject(Env env) 367 { 368 return _value.toObject(env); 369 } 370 371 374 public void appendTo(StringBuilderValue sb) 375 { 376 _value.appendTo(sb); 377 } 378 379 382 public void appendTo(BinaryBuilderValue sb) 383 { 384 _value.appendTo(sb); 385 } 386 387 390 public final Value getRawValue() 391 { 392 return _value; 393 } 394 395 398 public Value toValue() 399 { 400 return _value; 401 } 402 403 406 @Override 407 public Value toArgValueReadOnly() 408 { 409 return _value; 410 } 411 412 415 @Override 416 public Value toArgValue() 417 { 418 return _value.toArgValue(); 419 } 420 421 425 @Override 426 public Value toRefValue() 427 { 428 return _value.toRefValue(); 430 } 431 432 435 @Override 436 public Var toVar() 437 { 438 return new Var(_value.toArgValue()); 440 } 441 442 445 public Var toRefVar() 446 { 447 _refCount = 2; 448 449 return this; 450 } 451 452 455 public Value toKey() 456 { 457 return _value.toKey(); 458 } 459 460 @Override 461 public StringValue toStringValue() 462 { 463 return _value.toStringValue(); 464 } 465 466 @Override 467 public BinaryValue toBinaryValue(Env env) 468 { 469 return _value.toBinaryValue(env); 470 } 471 472 @Override 473 public UnicodeValue toUnicodeValue(Env env) 474 { 475 return _value.toUnicodeValue(env); 476 } 477 478 @Override 479 public StringValue toStringBuilder() 480 { 481 return _value.toStringBuilder(); 482 } 483 484 488 491 public Value copy() 492 { 493 return _value.copy(); 495 } 496 497 500 public Value copyArrayItem() 501 { 502 _refCount = 2; 503 504 return this; 506 } 507 508 511 public Value copyReturn() 512 { 513 if (_refCount < 1) 514 return _value; 515 else 516 return _value.copy(); 517 } 518 519 522 public Value toRef() 523 { 524 _refCount = 2; 525 526 return new RefVar(this); 527 } 528 529 532 public boolean isArray() 533 { 534 return _value.isArray(); 535 } 536 537 540 public Value neg() 541 { 542 return _value.neg(); 543 } 544 545 548 public Value add(Value rValue) 549 { 550 return _value.add(rValue); 551 } 552 553 556 @Override 557 public Value add(long rValue) 558 { 559 return _value.add(rValue); 560 } 561 562 565 public Value preincr(int incr) 566 { 567 _value = _value.preincr(incr); 568 569 return _value; 570 } 571 572 575 public Value postincr(int incr) 576 { 577 Value value = _value; 578 579 _value = value.postincr(incr); 580 581 return value; 582 } 583 584 587 public Value sub(Value rValue) 588 { 589 return _value.sub(rValue); 590 } 591 592 595 public Value mul(Value rValue) 596 { 597 return _value.mul(rValue); 598 } 599 600 603 public Value mul(long lValue) 604 { 605 return _value.mul(lValue); 606 } 607 608 611 public Value div(Value rValue) 612 { 613 return _value.div(rValue); 614 } 615 616 619 public Value lshift(Value rValue) 620 { 621 return _value.lshift(rValue); 622 } 623 624 627 public Value rshift(Value rValue) 628 { 629 return _value.rshift(rValue); 630 } 631 632 635 public boolean eq(Value rValue) 636 { 637 return _value.eq(rValue); 638 } 639 640 643 public boolean eql(Value rValue) 644 { 645 return _value.eql(rValue); 646 } 647 648 651 public int cmp(Value rValue) 652 { 653 return _value.cmp(rValue); 654 } 655 656 659 public int getSize() 660 { 661 return _value.getSize(); 662 } 663 664 667 public Collection <Value> getIndices() 668 { 669 return _value.getIndices(); 670 } 671 672 675 public Value []getKeyArray() 676 { 677 return _value.getKeyArray(); 678 } 679 680 683 public Value []getValueArray(Env env) 684 { 685 return _value.getValueArray(env); 686 } 687 688 691 public Value getArray() 692 { 693 if (! _value.isset()) 694 _value = new ArrayValueImpl(); 695 696 return _value; 697 } 698 699 702 public Value getObject(Env env) 703 { 704 if (! _value.isset()) 705 _value = env.createObject(); 706 707 return _value; 708 } 709 710 713 public Value get(Value index) 714 { 715 return _value.get(index); 716 } 717 718 721 public Value getRef(Value index) 722 { 723 if (! _value.isset()) 725 _value = new ArrayValueImpl(); 726 727 return _value.getRef(index); 728 } 729 730 733 public Value getArg(Value index) 734 { 735 if (_value.isset()) 736 return _value.getArg(index); 737 else 738 return new ArgGetValue(this, index); } 740 741 744 public Value getArgRef(Value index) 745 { 746 if (_value.isset()) 747 return _value.getArgRef(index); 748 else 749 return new ArgGetValue(this, index); 750 } 751 752 755 public Value getArray(Value index) 756 { 757 _value = _value.toAutoArray(); 759 760 return _value.getArray(index); 761 } 762 763 766 public Value getDirty(Value index) 767 { 768 return _value.getDirty(index); 769 } 770 771 774 public Value getObject(Env env, Value index) 775 { 776 _value = _value.toAutoArray(); 778 779 return _value.getObject(env, index); 780 } 781 782 785 public Value put(Value index, Value value) 786 { 787 _value = _value.toAutoArray(); 788 789 return _value.put(index, value); 790 } 791 792 795 public Value put(Value value) 796 { 797 _value = _value.toAutoArray(); 798 799 return _value.put(value); 800 } 801 802 805 public Value putRef() 806 { 807 _value = _value.toAutoArray(); 808 809 return _value.putRef(); 810 } 811 812 815 public Value remove(Value index) 816 { 817 return _value.remove(index); 818 } 819 820 823 @Override 824 public Value getField(Env env, String index) 825 { 826 return _value.getField(env, index); 827 } 828 829 832 public Value getFieldRef(Env env, String index) 833 { 834 _value = _value.toAutoObject(env); 836 837 return _value.getFieldRef(env, index); 838 } 839 840 843 public Value getFieldArg(Env env, String index) 844 { 845 if (_value.isset()) 846 return _value.getFieldArg(env, index); 847 else 848 return new ArgGetFieldValue(env, this, index); 849 } 850 851 854 public Value getFieldArray(Env env, String index) 855 { 856 _value = _value.toAutoObject(env); 858 859 return _value.getFieldArray(env, index); 860 } 861 862 865 public Value getFieldObject(Env env, String index) 866 { 867 _value = _value.toAutoObject(env); 868 869 return _value.getFieldObject(env, index); 870 } 871 872 875 public Value putField(Env env, String index, Value value) 876 { 877 _value = _value.toAutoObject(env); 879 880 return _value.putField(env, index, value); 881 } 882 883 886 public void removeField(String index) 887 { 888 _value.removeField(index); 889 } 890 891 894 @Override 895 public Value charValueAt(long index) 896 { 897 return _value.charValueAt(index); 898 } 899 900 903 @Override 904 public Value setCharValueAt(long index, String value) 905 { 906 return _value.setCharValueAt(index, value); 907 } 908 909 912 public boolean hasCurrent() 913 { 914 return _value.hasCurrent(); 915 } 916 917 920 public Value key() 921 { 922 return _value.key(); 923 } 924 925 928 public Value current() 929 { 930 return _value.current(); 931 } 932 933 936 public Value next() 937 { 938 return _value.next(); 939 } 940 941 944 public Value callMethod(Env env, String methodName, Expr []args) 945 { 946 return _value.callMethod(env, methodName, args); 947 } 948 949 952 public Value callMethod(Env env, String methodName, Value []args) 953 { 954 return _value.callMethod(env, methodName, args); 955 } 956 957 960 public Value callMethod(Env env, String methodName) 961 { 962 return _value.callMethod(env, methodName); 963 } 964 965 968 public Value callMethod(Env env, String methodName, Value a0) 969 { 970 return _value.callMethod(env, methodName, a0); 971 } 972 973 976 public Value callMethod(Env env, String methodName, Value a0, Value a1) 977 { 978 return _value.callMethod(env, methodName, a0, a1); 979 } 980 981 984 public Value callMethod(Env env, String methodName, 985 Value a0, Value a1, Value a2) 986 { 987 return _value.callMethod(env, methodName, a0, a1, a2); 988 } 989 990 993 public Value callMethod(Env env, String methodName, 994 Value a0, Value a1, Value a2, Value a3) 995 { 996 return _value.callMethod(env, methodName, a0, a1, a2, a3); 997 } 998 999 1002 public Value callMethod(Env env, String methodName, 1003 Value a0, Value a1, Value a2, Value a3, Value a4) 1004 { 1005 return _value.callMethod(env, methodName, a0, a1, a2, a3, a4); 1006 } 1007 1008 1011 public Value callMethodRef(Env env, String methodName, Expr []args) 1012 { 1013 return _value.callMethodRef(env, methodName, args); 1014 } 1015 1016 1019 public Value callMethodRef(Env env, String methodName, Value []args) 1020 { 1021 return _value.callMethodRef(env, methodName, args); 1022 } 1023 1024 1027 public Value callMethodRef(Env env, String methodName) 1028 { 1029 return _value.callMethodRef(env, methodName); 1030 } 1031 1032 1035 public Value callMethodRef(Env env, String methodName, Value a0) 1036 { 1037 return _value.callMethodRef(env, methodName, a0); 1038 } 1039 1040 1043 public Value callMethodRef(Env env, String methodName, Value a0, Value a1) 1044 { 1045 return _value.callMethodRef(env, methodName, a0, a1); 1046 } 1047 1048 1051 public Value callMethodRef(Env env, String methodName, 1052 Value a0, Value a1, Value a2) 1053 { 1054 return _value.callMethodRef(env, methodName, a0, a1, a2); 1055 } 1056 1057 1060 public Value callMethodRef(Env env, String methodName, 1061 Value a0, Value a1, Value a2, Value a3) 1062 { 1063 return _value.callMethodRef(env, methodName, a0, a1, a2, a3); 1064 } 1065 1066 1069 public Value callMethodRef(Env env, String methodName, 1070 Value a0, Value a1, Value a2, Value a3, Value a4) 1071 { 1072 return _value.callMethodRef(env, methodName, a0, a1, a2, a3, a4); 1073 } 1074 1075 1078 public Value callClassMethod(Env env, AbstractFunction fun, Value []args) 1079 { 1080 return _value.callClassMethod(env, fun, args); 1081 } 1082 1083 1087 public void print(Env env) 1088 { 1089 _value.print(env); 1090 } 1091 1092 1095 public void serialize(StringBuilder sb) 1096 { 1097 _value.serialize(sb); 1098 } 1099 1100 public void varDumpImpl(Env env, 1101 WriteStream out, 1102 int depth, 1103 IdentityHashMap <Value, String > valueSet) 1104 throws IOException 1105 { 1106 out.print("&"); 1107 _value.varDump(env, out, depth, valueSet); 1108 } 1109 1110 1114 public Object writeReplace() 1115 { 1116 return _value; 1117 } 1118} 1119 1120 | Popular Tags |