1 package gnu.ecmascript; 2 import gnu.mapping.*; 3 4 public class BinaryOp extends Procedure2 5 { 6 int op; 7 public BinaryOp(String name, int op) 8 { 9 setName(name); 10 this.op = op; 11 } 12 13 public Object apply2 (Object arg1, Object arg2) 14 { 15 if (op == Reserved.LESS_OP) 16 { 17 return Convert.toNumber(arg1) < Convert.toNumber(arg2) 18 ? Boolean.TRUE : Boolean.FALSE; 19 } 20 return new Double (apply(Convert.toNumber(arg1), Convert.toNumber(arg2))); 21 } 22 23 public double apply (double arg1, double arg2) 24 { 25 switch (op) 26 { 27 case Reserved.PLUS_OP: return arg1+arg2; 28 case Reserved.MINUS_OP: return arg1-arg2; 29 case Reserved.TIMES_OP: return arg1*arg2; 30 case Reserved.LSHIFT_OP: return (double)((int)arg1 << ((int)arg2 & 31)); 31 } 32 return Double.NaN; 33 } 34 } 35 | Popular Tags |