package railo.runtime.interpreter.ref.op; import java.math.BigDecimal; import railo.runtime.PageContext; import railo.runtime.exp.PageException; import railo.runtime.interpreter.ref.Ref; import railo.runtime.interpreter.ref.RefSupport; import railo.runtime.interpreter.ref.literal.LBigDecimal; import railo.runtime.op.Caster; /** * Plus operation */ public abstract class Big extends RefSupport implements Ref { private Ref right; private Ref left; /** * constructor of the class * @param left * @param right */ public Big(Ref left, Ref right) { this.left=left; this.right=right; } protected static BigDecimal toBigDecimal(PageContext pc,Ref ref) throws PageException { if(ref instanceof LBigDecimal) return ((LBigDecimal)ref).getBigDecimal(); return new BigDecimal(Caster.toString(ref.getValue(pc))); } protected final BigDecimal getLeft(PageContext pc) throws PageException { return toBigDecimal(pc,left); } protected final BigDecimal getRight(PageContext pc) throws PageException { return toBigDecimal(pc,right); } @Override public final String getTypeName() { return "operation"; } }