Add support for true and false and normalizing them away
[satune.git] / src / AST / boolean.cc
index 6f2f4753bf2009bee5b31c6564710704750bdd7d..a0048bd50aebfe529dc9361f902af821a0416f59 100644 (file)
@@ -12,6 +12,11 @@ Boolean::Boolean(ASTNodeType _type) :
        parents() {
 }
 
+BooleanConst::BooleanConst(bool _isTrue) :
+       Boolean(BOOLCONST),
+       isTrue(_isTrue) {
+}
+
 BooleanVar::BooleanVar(VarType t) :
        Boolean(BOOLEANVAR),
        vtype(t),
@@ -43,6 +48,13 @@ BooleanLogic::BooleanLogic(CSolver *solver, LogicOp _op, Boolean **array, uint a
        inputs(array, asize) {
 }
 
+Boolean *BooleanConst::clone(CSolver *solver, CloneMap *map) {
+       if (isTrue)
+               return solver->getBooleanTrue();
+       else
+               return solver->getBooleanFalse();
+}
+
 Boolean *BooleanVar::clone(CSolver *solver, CloneMap *map) {
        Boolean *b = (Boolean *) map->get(this);
        if (b != NULL)