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    }