/**
* Boolean (boolean) Stores a (java) boolean value in a formula.
- *
+ *
* @author Paul Krause (pkrause at soundbite dot com)
* @author Andrew C. Oliver (acoliver at apache dot org)
* @author Jason Height (jheight at chariot dot net dot au)
*/
public final class BoolPtg extends ScalarConstantPtg {
- public final static int SIZE = 2;
- public final static byte sid = 0x1D;
+ public static final int SIZE = 2;
+ public static final byte sid = 0x1D;
+
+ private static final BoolPtg FALSE = new BoolPtg(false);
+ private static final BoolPtg TRUE = new BoolPtg(true);
+
private final boolean _value;
- public BoolPtg(LittleEndianInput in) {
- _value = (in.readByte() == 1);
+ private BoolPtg(boolean b) {
+ _value = b;
}
- public BoolPtg(String formulaToken) {
- _value = (formulaToken.equalsIgnoreCase("TRUE"));
+ public static BoolPtg valueOf(boolean b) {
+ return b ? TRUE : FALSE;
+ }
+ public static BoolPtg read(LittleEndianInput in) {
+ return valueOf(in.readByte() == 1);
}
public boolean getValue() {
case StringPtg.sid: return new StringPtg(in); // 0x17
case AttrPtg.sid: return new AttrPtg(in); // 0x19
case ErrPtg.sid: return ErrPtg.read(in); // 0x1c
- case BoolPtg.sid: return new BoolPtg(in); // 0x1d
+ case BoolPtg.sid: return BoolPtg.read(in); // 0x1d
case IntPtg.sid: return new IntPtg(in); // 0x1e
case NumberPtg.sid: return new NumberPtg(in); // 0x1f
}
return function(name);
}
if (name.equalsIgnoreCase("TRUE") || name.equalsIgnoreCase("FALSE")) {
- return new ParseNode(new BoolPtg(name.toUpperCase()));
+ return new ParseNode(BoolPtg.valueOf(name.equalsIgnoreCase("TRUE")));
}
if (_book == null) {
// Only test cases omit the book (expecting it not to be needed)