1 29 30 package com.caucho.quercus.env; 31 32 import java.util.IdentityHashMap ; 33 import java.util.logging.Logger ; 34 35 38 public class CopyArrayValue extends ArrayValue { 39 private static final Logger log 40 = Logger.getLogger(CopyArrayValue.class.getName()); 41 42 private final ConstArrayValue _constArray; 43 private ArrayValue _copyArray; 44 45 public CopyArrayValue(ConstArrayValue constArray) 46 { 47 _constArray = constArray; 48 } 49 50 53 public boolean toBoolean() 54 { 55 if (_copyArray != null) 56 return _copyArray.toBoolean(); 57 else 58 return _constArray.toBoolean(); 59 } 60 61 64 public Value copy() 65 { 66 if (_copyArray != null) 67 return _copyArray.copy(); 68 else 69 return _constArray.copy(); 70 } 71 72 75 public Value copy(Env env, IdentityHashMap <Value,Value> map) 76 { 77 if (_copyArray != null) 78 return _copyArray.copy(env, map); 79 else 80 return _constArray.copy(env, map); 81 } 82 83 86 public int getSize() 87 { 88 if (_copyArray != null) 89 return _copyArray.getSize(); 90 else 91 return _constArray.getSize(); 92 } 93 94 97 public void clear() 98 { 99 getCopyArray().clear(); 100 } 101 102 105 public Value put(Value key, Value value) 106 { 107 return getCopyArray().put(key, value); 108 } 109 110 113 public Value put(Value value) 114 { 115 return getCopyArray().put(value); 116 } 117 118 121 public ArrayValue unshift(Value value) 122 { 123 return getCopyArray().unshift(value); 124 } 125 126 129 public ArrayValue splice(int start, int end, ArrayValue replace) 130 { 131 return getCopyArray().splice(start, end, replace); 132 } 133 134 137 public Value getArray(Value fieldName) 138 { 139 return getCopyArray().getArray(fieldName); 140 } 141 142 145 public Value getArg(Value index) 146 { 147 return getCopyArray().getArg(index); 148 } 149 150 153 public Value getObject(Env env, Value fieldName) 154 { 155 return getCopyArray().getObject(env, fieldName); 156 } 157 158 161 public Value putRef() 162 { 163 return getCopyArray().putRef(); 164 } 165 166 169 public ArrayValue append(Value key, Value value) 170 { 171 put(key, value.toArgValue()); 172 173 return this; 174 } 175 176 179 public ArrayValue append(Value value) 180 { 181 return getCopyArray().append(value); 182 } 183 184 187 public Value get(Value key) 188 { 189 if (_copyArray != null) 190 return _copyArray.get(key); 191 else 192 return _constArray.get(key); 193 } 194 195 198 public Value containsKey(Value key) 199 { 200 if (_copyArray != null) 201 return _copyArray.containsKey(key); 202 else 203 return _constArray.containsKey(key); 204 } 205 206 209 public Value remove(Value key) 210 { 211 return getCopyArray().remove(key); 212 } 213 214 217 public Var getRef(Value index) 218 { 219 return getCopyArray().getRef(index); 220 } 221 222 225 public void put(String key, String value) 226 { 227 put(new StringValueImpl(key), new StringValueImpl(value)); 228 } 229 230 233 public Value pop() 234 { 235 return getCopyArray().pop(); 236 } 237 238 241 public Value createTailKey() 242 { 243 return getCopyArray().createTailKey(); 244 } 245 246 249 public void shuffle() 250 { 251 getCopyArray().shuffle(); 252 } 253 254 public Entry getHead() 255 { 256 if (_copyArray != null) 257 return _copyArray.getHead(); 258 else 259 return _constArray.getHead(); 260 } 261 262 protected Entry getTail() 263 { 264 if (_copyArray != null) 265 return _copyArray.getTail(); 266 else 267 return _constArray.getTail(); 268 } 269 270 private ArrayValue getCopyArray() 271 { 272 if (_copyArray == null) 273 _copyArray = new ArrayValueImpl(_constArray); 274 275 return _copyArray; 276 } 277 } 278 279 | Popular Tags |