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.RefSupport; 007 import railo.runtime.interpreter.ref.util.RefUtil; 008 import railo.runtime.op.Caster; 009 010 /** 011 * constructor of the class 012 */ 013 public final class LBoolean extends RefSupport implements Literal { 014 015 /** 016 * Field <code>TRUE</code> 017 */ 018 public static final Ref TRUE = new LBoolean(Boolean.TRUE); 019 /** 020 * Field <code>FALSE</code> 021 */ 022 public static final Ref FALSE = new LBoolean(Boolean.FALSE); 023 024 private Boolean literal; 025 026 /** 027 * constructor with Boolean 028 * @param literal 029 */ 030 public LBoolean(Boolean literal) { 031 this.literal=literal; 032 } 033 034 /** 035 * constructor with boolean 036 * @param b 037 */ 038 public LBoolean(boolean b) { 039 this.literal=b?Boolean.TRUE:Boolean.FALSE; 040 } 041 042 /** 043 * constructor with boolean 044 * @param str 045 * @throws PageException 046 */ 047 public LBoolean(String str) throws PageException { 048 this.literal=Caster.toBoolean(str); 049 } 050 051 052 @Override 053 public Object getValue(PageContext pc) { 054 return literal; 055 } 056 057 @Override 058 public String getTypeName() { 059 return "literal"; 060 } 061 062 @Override 063 public String getString(PageContext pc) { 064 return toString(); 065 } 066 067 @Override 068 public String toString() { 069 return Caster.toString(literal.booleanValue()); 070 } 071 072 @Override 073 public boolean eeq(PageContext pc,Ref other) throws PageException { 074 if(other instanceof LNumber){ 075 return literal.booleanValue()==((LBoolean)other).literal.booleanValue(); 076 } 077 return RefUtil.eeq(pc,this,other); 078 } 079 080 }