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 CompiledMethodRef_2 extends CompiledMethodRef { 44 private static final Logger log 45 = Logger.getLogger(CompiledMethodRef_2.class.getName()); 46 private static final L10N L = new L10N(CompiledMethodRef_2.class); 47 48 private String _name; 49 private Expr _default_0; 50 private Expr _default_1; 51 52 public CompiledMethodRef_2(String name, Expr default_0, Expr default_1) 53 { 54 _name = name; 55 _default_0 = default_0; 56 _default_1 = default_1; 57 } 58 59 65 public Expr []bindArguments(Env env, Expr fun, Expr []args) 66 { 67 if (args.length != 2) 68 env.warning(L.l("incorrect")); 69 70 return args; 71 } 72 73 76 public Value callMethodRef(Env env, Value obj, Value []argValues) 77 { 78 switch (argValues.length) { 79 case 0: 80 return callMethodRef(env, obj, _default_0.eval(env), _default_1.eval(env)); 81 case 1: 82 return callMethodRef(env, obj, argValues[0], _default_1.eval(env)); 83 case 2: 84 default: 85 return callMethodRef(env, obj, argValues[0], argValues[1]); 86 } 87 } 88 89 abstract public Value callMethodRef(Env env, Value obj, Value a1, Value a2); 90 91 94 public Value call(Env env, Value []argValues) 95 { 96 env.warning(L.l("can't call '{0}' as a static function", _name)); 97 98 return NullValue.NULL; 99 } 100 101 public String toString() 102 { 103 return "CompiledMethod_2[" + _name + "]"; 104 } 105 } 106 107 | Popular Tags |