1 29 30 package com.caucho.quercus.expr; 31 32 import com.caucho.quercus.Location; 33 import com.caucho.quercus.env.ArrayValue; 34 import com.caucho.quercus.env.ArrayValueImpl; 35 import com.caucho.quercus.env.Env; 36 import com.caucho.quercus.env.NullValue; 37 import com.caucho.quercus.env.Value; 38 39 42 public class VarVarExpr extends AbstractVarExpr { 43 private static final NullValue NULL = NullValue.create(); 44 45 protected final Expr _var; 46 47 public VarVarExpr(Location location, Expr var) 48 { 49 super(location); 50 _var = var; 51 } 52 53 public VarVarExpr(Expr var) 54 { 55 _var = var; 56 } 57 58 public Expr getExpr() 59 { 60 return _var; 61 } 62 63 70 public Value eval(Env env) 71 { 72 String varName = _var.evalString(env).intern(); 73 74 Value value = env.getValue(varName); 75 76 if (value != null) 77 return value; 78 else 79 return NULL; 80 } 81 82 89 public Value evalCopy(Env env) 90 { 91 String varName = _var.evalString(env).intern(); 92 93 Value value = env.getValue(varName); 94 95 if (value != null) 96 return value.copy(); 97 else 98 return NULL; 99 } 100 101 108 public void evalAssign(Env env, Value value) 109 { 110 String varName = _var.evalString(env).intern(); 111 112 env.setVar(varName, value); 113 } 114 115 122 public void evalUnset(Env env) 123 { 124 String varName = _var.evalString(env).intern(); 125 126 env.unsetVar(varName); 127 } 128 129 136 public Value evalRef(Env env) 137 { 138 String varName = _var.evalString(env).intern(); 139 140 Value value = env.getVar(varName); 141 142 if (value != null) 143 return value; 144 else 145 return NULL; 146 } 147 148 155 public Value evalArg(Env env) 156 { 157 String varName = _var.evalString(env).intern(); 158 159 Value value = env.getVar(varName); 160 161 if (value != null) 162 return value; 163 else 164 return NULL; 165 } 166 167 174 public Value evalArray(Env env) 175 { 176 String varName = _var.evalString(env).intern(); 177 178 Value value = env.getVar(varName); 179 180 if (value != null) 181 return value.getArray(); 182 else { 183 ArrayValue array = new ArrayValueImpl(); 184 185 env.setVar(varName, array); 186 187 return array; 188 } 189 } 190 191 public String toString() 192 { 193 return "$" + _var; 194 } 195 } 196 197 | Popular Tags |