1 29 30 package com.caucho.quercus.expr; 31 32 import com.caucho.quercus.Location; 33 import com.caucho.quercus.env.BooleanValue; 34 import com.caucho.quercus.env.Env; 35 import com.caucho.quercus.env.LongValue; 36 import com.caucho.quercus.env.Value; 37 38 41 public class LiteralExpr extends Expr { 42 private final Value _value; 43 44 protected LiteralExpr(Location location, Value value) 45 { 46 super(location); 47 _value = value; 48 } 49 50 public LiteralExpr(Value value) 51 { 52 this(Location.UNKNOWN, value); } 54 55 protected Value getValue() 56 { 57 return _value; 58 } 59 60 63 public boolean isLiteral() 64 { 65 return true; 66 } 67 68 71 public boolean isTrue() 72 { 73 if (_value == BooleanValue.TRUE) 74 return true; 75 else if (_value instanceof LongValue) 76 return _value.toLong() != 0; 77 else 78 return false; 79 } 80 81 84 public boolean isFalse() 85 { 86 if (_value == BooleanValue.FALSE) 87 return true; 88 else if (_value instanceof LongValue) 89 return _value.toLong() == 0; 90 else 91 return false; 92 } 93 94 97 public boolean isLong() 98 { 99 return _value.isLongConvertible(); 100 } 101 102 105 public boolean isDouble() 106 { 107 return _value.isDoubleConvertible(); 108 } 109 110 115 public Value evalConstant() 116 { 117 return _value; 118 } 119 120 127 public Value eval(Env env) 128 { 129 return _value; 130 } 131 132 public String toString() 133 { 134 return _value.toString(); 135 } 136 } 137 138 | Popular Tags |