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_3 extends CompiledMethodRef { 44 private static final Logger log 45 = Logger.getLogger(CompiledMethodRef_3.class.getName()); 46 private static final L10N L = new L10N(CompiledMethodRef_3.class); 47 48 private String _name; 49 private Expr _default_0; 50 private Expr _default_1; 51 private Expr _default_2; 52 53 public CompiledMethodRef_3(String name, 54 Expr default_0, 55 Expr default_1, 56 Expr default_2) 57 { 58 _name = name; 59 _default_0 = default_0; 60 _default_1 = default_1; 61 _default_2 = default_2; 62 } 63 64 70 public Expr []bindArguments(Env env, Expr fun, Expr []args) 71 { 72 if (args.length != 3) 73 env.warning(L.l("incorrect")); 74 75 return args; 76 } 77 78 81 public Value callMethodRef(Env env, Value obj, Value []argValues) 82 { 83 switch (argValues.length) { 84 case 0: 85 return callMethodRef(env, 86 obj, 87 _default_0.eval(env), 88 _default_1.eval(env), 89 _default_2.eval(env)); 90 case 1: 91 return callMethodRef(env, 92 obj, 93 argValues[0], 94 _default_1.eval(env), 95 _default_2.eval(env)); 96 case 2: 97 return callMethodRef(env, 98 obj, 99 argValues[0], 100 argValues[1], 101 _default_2.eval(env)); 102 case 3: 103 default: 104 return callMethodRef(env, 105 obj, 106 argValues[0], 107 argValues[1], 108 argValues[2]); 109 } 110 } 111 112 abstract public Value callMethodRef(Env env, 113 Value obj, 114 Value a1, 115 Value a2, 116 Value a3); 117 118 121 public Value call(Env env, Value []argValues) 122 { 123 env.warning(L.l("can't call '{0}' as a static function", _name)); 124 125 return NullValue.NULL; 126 } 127 128 public String toString() 129 { 130 return "CompiledMethodRef_3[" + _name + "]"; 131 } 132 } 133 134 | Popular Tags |