1 29 30 package com.caucho.quercus.env; 31 32 import com.caucho.vfs.WriteStream; 33 34 import java.io.IOException ; 35 import java.io.PrintWriter ; 36 import java.io.Serializable ; 37 import java.util.IdentityHashMap ; 38 39 42 public class BooleanValue extends Value 43 implements Serializable 44 { 45 public static final BooleanValue TRUE = new BooleanValue(true); 46 public static final BooleanValue FALSE = new BooleanValue(false); 47 48 private final boolean _value; 49 50 protected BooleanValue(boolean value) 51 { 52 _value = value; 53 } 54 55 public static BooleanValue create(boolean value) 56 { 57 return value ? TRUE : FALSE; 58 } 59 60 public static BooleanValue create(Boolean value) 61 { 62 if (value == null) 63 return FALSE; 64 else if (Boolean.TRUE.equals(value)) 65 return TRUE; 66 else 67 return FALSE; 68 } 69 70 73 public String getType() 74 { 75 return "boolean"; 76 } 77 78 81 public boolean isScalar() 82 { 83 return true; 84 } 85 86 89 public boolean toBoolean() 90 { 91 return _value; 92 } 93 94 97 public long toLong() 98 { 99 return _value ? 1 : 0; 100 } 101 102 105 public double toDouble() 106 { 107 return _value ? 1 : 0; 108 } 109 110 113 public String toString() 114 { 115 return _value ? "1" : ""; 116 } 117 118 121 public Value toObject(Env env) 122 { 123 Value obj = env.createObject(); 124 125 obj.putField(env, "scalar", this); 126 127 return obj; 128 } 129 130 133 public Object toObject() 134 { 135 return _value ? Boolean.TRUE : Boolean.FALSE; 136 } 137 138 141 public Object toJavaObject() 142 { 143 return _value ? Boolean.TRUE : Boolean.FALSE; 144 } 145 146 149 public Value toAutoArray() 150 { 151 if (! _value) 152 return new ArrayValueImpl(); 153 else 154 return this; 155 } 156 157 160 public Value toAutoObject(Env env) 161 { 162 if (! _value) 163 return env.createObject(); 164 else 165 return this; 166 } 167 168 171 public Value toKey() 172 { 173 return _value ? LongValue.ONE : LongValue.ZERO; 174 } 175 176 179 public boolean eq(Value rValue) 180 { 181 return _value == rValue.toBoolean(); 182 183 197 } 198 199 202 public int cmp(Value rValue) 203 { 204 double l = _value ? 1 : 0; 205 double r = rValue.toDouble(); 206 207 if (l == r) 208 return 0; 209 else if (l < r) 210 return -1; 211 else 212 return 1; 213 } 214 215 219 public void print(Env env) 220 { 221 env.print(_value ? "1" : ""); 222 } 223 224 228 233 public void generate(PrintWriter out) 234 throws IOException 235 { 236 if (_value) 237 out.print("com.caucho.quercus.env.BooleanValue.TRUE"); 238 else 239 out.print("com.caucho.quercus.env.BooleanValue.FALSE"); 240 } 241 242 247 public void generateBoolean(PrintWriter out) 248 throws IOException 249 { 250 if (_value) 251 out.print("true"); 252 else 253 out.print("false"); 254 } 255 256 259 public void serialize(StringBuilder sb) 260 { 261 sb.append("b:"); 262 sb.append(_value ? 1 : 0); 263 sb.append(';'); 264 } 265 266 269 public void varExport(StringBuilder sb) 270 { 271 sb.append(_value ? "true" : "false"); 272 } 273 274 277 public int hashCode() 278 { 279 return _value ? 17 : 37; 280 } 281 282 285 public boolean equals(Object o) 286 { 287 if (this == o) 288 return true; 289 else if (o.getClass() != getClass()) 290 return false; 291 292 BooleanValue value = (BooleanValue) o; 293 294 return _value == value._value; 295 } 296 297 298 public void varDumpImpl(Env env, 299 WriteStream out, 300 int depth, 301 IdentityHashMap <Value,String > valueSet) 302 throws IOException 303 { 304 if (toBoolean()) 305 out.print("bool(true)"); 306 else 307 out.print("bool(false)"); 308 } 309 310 314 private Object readResolve() 315 { 316 if (_value == true) 317 return TRUE; 318 else 319 return FALSE; 320 } 321 } 322 323 | Popular Tags |