1 29 30 package com.caucho.quercus.expr; 31 32 import com.caucho.quercus.Location; 33 import com.caucho.quercus.env.Env; 34 import com.caucho.quercus.env.Value; 35 36 39 public class ArrayGetExpr extends AbstractVarExpr { 40 protected final Expr _expr; 41 protected final Expr _index; 42 43 public ArrayGetExpr(Location location, Expr expr, Expr index) 44 { 45 super(location); 46 _expr = expr; 47 _index = index; 48 } 49 50 public ArrayGetExpr(Expr expr, Expr index) 51 { 52 _expr = expr; 53 _index = index; 54 } 55 56 59 public Expr getExpr() 60 { 61 return _expr; 62 } 63 64 67 public Expr getIndex() 68 { 69 return _index; 70 } 71 72 79 public Value eval(Env env) 80 { 81 Value array = _expr.eval(env); 82 83 Value index = _index.eval(env); 84 85 return array.get(index); 86 } 87 88 95 public Value evalCopy(Env env) 96 { 97 Value array = _expr.eval(env); 98 99 Value index = _index.eval(env); 100 101 return array.get(index).copy(); 102 } 103 104 111 public Value evalArray(Env env) 112 { 113 Value array = _expr.evalArray(env); 114 115 Value index = _index.eval(env); 116 117 return array.getArray(index); 118 } 119 120 127 public Value evalDirty(Env env) 128 { 129 Value array = _expr.eval(env); 130 131 Value index = _index.eval(env); 132 133 return array.getDirty(index); 134 } 135 136 143 public Value evalObject(Env env) 144 { 145 Value array = _expr.evalArray(env); 146 147 Value index = _index.eval(env); 148 149 return array.getObject(env, index); 150 } 151 152 159 public Value evalArg(Env env) 160 { 161 Value value = _expr.evalArg(env); 163 return value.getArg(_index.eval(env)); 164 } 165 166 173 public Value evalRef(Env env) 174 { 175 Value value = _expr.evalArray(env); 176 177 return value.getRef(_index.eval(env)); 178 } 179 180 187 public void evalAssign(Env env, Value value) 188 { 189 Value array = _expr.evalArray(env); 190 191 Value index = _index.eval(env); 192 193 array.put(index, value); 194 } 195 196 203 public void evalUnset(Env env) 204 { 205 Value array = _expr.evalDirty(env); 206 207 Value index = _index.eval(env); 208 209 array.remove(index); 210 } 211 212 public String toString() 213 { 214 return _expr + "[" + _index + "]"; 215 } 216 } 217 218 | Popular Tags |