Controlled instantiation of BoolPtg (made consistent with ErrPtg)

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@887477 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Josh Micich 2009-12-05 01:04:44 +00:00
parent 9fb5841de3
commit 1992068d14
3 changed files with 16 additions and 9 deletions

View File

@ -28,16 +28,23 @@ import org.apache.poi.util.LittleEndianOutput;
* @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() {

View File

@ -152,7 +152,7 @@ public abstract class Ptg {
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
}

View File

@ -551,7 +551,7 @@ public final class FormulaParser {
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)