001 package railo.runtime.interpreter.ref.literal; 002 003 import railo.runtime.PageContext; 004 import railo.runtime.exp.PageException; 005 import railo.runtime.interpreter.ref.Ref; 006 import railo.runtime.interpreter.ref.util.RefUtil; 007 import railo.runtime.op.Caster; 008 009 /** 010 * Literal Number 011 */ 012 public final class LNumber implements Literal { 013 014 public static final LNumber ZERO = new LNumber(new Double(0)); 015 public static final LNumber ONE = new LNumber(new Double(1)); 016 017 018 019 private Double literal; 020 021 /** 022 * constructor of the class 023 * @param literal 024 */ 025 public LNumber(Double literal) { 026 this.literal=literal; 027 } 028 029 /** 030 * constructor of the class 031 * @param literal 032 * @throws PageException 033 */ 034 public LNumber(String literal) throws PageException { 035 this.literal=Caster.toDouble(literal); 036 } 037 038 @Override 039 public Object getValue(PageContext pc) { 040 return literal; 041 } 042 043 @Override 044 public Object getCollection(PageContext pc) { 045 return getValue(pc); 046 } 047 048 @Override 049 public String getTypeName() { 050 return "number"; 051 } 052 053 @Override 054 public Object touchValue(PageContext pc) { 055 return getValue(pc); 056 } 057 058 @Override 059 public String getString(PageContext pc) { 060 return toString(); 061 } 062 063 @Override 064 public String toString() { 065 return Caster.toString(literal.doubleValue()); 066 } 067 068 @Override 069 public boolean eeq(PageContext pc,Ref other) throws PageException { 070 if(other instanceof LNumber){ 071 return literal.doubleValue()==((LNumber)other).literal.doubleValue(); 072 } 073 // TODO Auto-generated method stub 074 return RefUtil.eeq(pc,this,other); 075 } 076 }