1 29 30 package com.caucho.quercus.program; 31 32 import com.caucho.quercus.env.Env; 33 import com.caucho.quercus.env.NullValue; 34 import com.caucho.quercus.env.Value; 35 import com.caucho.quercus.expr.Expr; 36 import com.caucho.util.L10N; 37 38 import java.util.logging.Logger ; 39 40 43 abstract public class CompiledMethod_N extends CompiledMethod { 44 private static final Logger log 45 = Logger.getLogger(CompiledMethod_N.class.getName()); 46 private static final L10N L = new L10N(CompiledMethod_N.class); 47 48 private String _name; 49 private Expr []_defaultArgs; 50 51 public CompiledMethod_N(String name, Expr []defaultArgs) 52 { 53 _name = name; 54 55 _defaultArgs = defaultArgs; 56 } 57 58 64 public Expr []bindArguments(Env env, Expr fun, Expr []args) 65 { 66 return args; 67 } 68 69 public final Value callMethod(Env env, Value obj, Value []argValues) 70 { 71 Value []args; 72 73 if (_defaultArgs.length <= argValues.length) { 74 args = argValues; 75 } 76 else { 77 args = new Value[_defaultArgs.length]; 78 79 System.arraycopy(argValues, 0, args, 0, argValues.length); 80 81 for (int i = argValues.length; i < args.length; i++) { 82 if (_defaultArgs[i] != null) 83 args[i] = _defaultArgs[i].eval(env); 84 else 85 args[i] = NullValue.NULL; 86 } 87 } 88 89 return callMethodImpl(env, obj, args); 90 } 91 92 abstract public Value callMethodImpl(Env env, Value obj, Value []argValues); 93 94 public String toString() 95 { 96 return "CompiledMethod_N[" + _name + "]"; 97 } 98 } 99 100 | Popular Tags |