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