1 29 30 package com.caucho.quercus.program; 31 32 import com.caucho.quercus.env.Env; 33 import com.caucho.quercus.env.Value; 34 import com.caucho.quercus.expr.Expr; 35 import com.caucho.util.L10N; 36 37 import java.util.logging.Logger ; 38 39 42 abstract public class CompiledFunctionRef_4 extends CompiledFunctionRef { 43 private static final Logger log 44 = Logger.getLogger(CompiledFunctionRef_4.class.getName()); 45 private static final L10N L = new L10N(CompiledFunctionRef_4.class); 46 47 private final String _name; 48 private final Expr _default_0; 49 private final Expr _default_1; 50 private final Expr _default_2; 51 private final Expr _default_3; 52 53 public CompiledFunctionRef_4(String name, 54 Expr default_0, 55 Expr default_1, 56 Expr default_2, 57 Expr default_3) 58 { 59 _name = name; 60 _default_0 = default_0; 61 _default_1 = default_1; 62 _default_2 = default_2; 63 _default_3 = default_3; 64 } 65 66 72 public Expr []bindArguments(Env env, Expr fun, Expr []args) 73 { 74 if (args.length > 4) 75 log.fine(L.l(env.getLocation().getMessagePrefix() + "incorrect number of arguments" + env.getFunctionLocation())); 76 77 return args; 78 } 79 80 public Value callRef(Env env, Value []argValues) 81 { 82 switch (argValues.length) { 83 case 0: 84 return callRef(env, 85 _default_0.eval(env), 86 _default_1.eval(env), 87 _default_2.eval(env), 88 _default_3.eval(env)); 89 90 case 1: 91 return callRef(env, 92 argValues[0], 93 _default_1.eval(env), 94 _default_2.eval(env), 95 _default_3.eval(env)); 96 case 2: 97 return callRef(env, 98 argValues[0], 99 argValues[1], 100 _default_2.eval(env), 101 _default_3.eval(env)); 102 case 3: 103 return callRef(env, 104 argValues[0], 105 argValues[1], 106 argValues[2], 107 _default_3.eval(env)); 108 case 4: 109 default: 110 return callRef(env, 111 argValues[0], 112 argValues[1], 113 argValues[2], 114 argValues[3]); 115 } 116 } 117 118 121 abstract public Value callRef(Env env, Value a1, Value a2, Value a3, Value a4); 122 123 public String toString() 124 { 125 return "CompiledFunctionRef_4[" + _name + "]"; 126 } 127 } 128 129 | Popular Tags |