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 CompiledFunctionRef_3 extends CompiledFunctionRef { 44 private static final Logger log 45 = Logger.getLogger(CompiledFunctionRef_3.class.getName()); 46 private static final L10N L = new L10N(CompiledFunctionRef_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 CompiledFunctionRef_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 log.fine(L.l(env.getLocation().getMessagePrefix() + "incorrect number of arguments" + env.getFunctionLocation())); 74 75 return args; 76 } 77 78 public Value callRef(Env env, Value []argValues) 79 { 80 switch (argValues.length) { 81 case 0: 82 return callRef(env, NullValue.NULL, NullValue.NULL); 83 case 1: 84 return callRef(env, 85 argValues[0], 86 _default_1.eval(env), 87 _default_2.eval(env)); 88 case 2: 89 return callRef(env, 90 argValues[0], 91 argValues[1], 92 _default_2.eval(env)); 93 case 3: 94 default: 95 return callRef(env, 96 argValues[0], 97 argValues[1], 98 argValues[2]); 99 } 100 } 101 102 105 abstract public Value callRef(Env env, Value a1, Value a2, Value a3); 106 107 public String toString() 108 { 109 return "CompiledFunctionRef_3[" + _name + "]"; 110 } 111 } 112 113 | Popular Tags |