9 #include "functionencoding.h"
10 #include "constraint.h"
14 class Boolean : public ASTNode {
16 Boolean(ASTNodeType _type);
18 virtual Boolean *clone(CSolver *solver, CloneMap *map) = 0;
19 virtual bool isTrue() {return boolVal == BV_MUSTBETRUE;}
20 virtual bool isFalse() {return boolVal == BV_MUSTBEFALSE;}
23 Vector<Boolean *> parents;
28 class BooleanConst : public Boolean {
30 BooleanConst(bool isTrue);
31 Boolean *clone(CSolver *solver, CloneMap *map);
32 bool isTrue() {return istrue;}
33 bool isFalse() {return !istrue;}
38 class BooleanVar : public Boolean {
40 BooleanVar(VarType t);
41 Boolean *clone(CSolver *solver, CloneMap *map);
48 class BooleanOrder : public Boolean {
50 BooleanOrder(Order *_order, uint64_t _first, uint64_t _second);
51 Boolean *clone(CSolver *solver, CloneMap *map);
59 class BooleanPredicate : public Boolean {
61 BooleanPredicate(Predicate *_predicate, Element **_inputs, uint _numInputs, BooleanEdge _undefinedStatus);
62 Boolean *clone(CSolver *solver, CloneMap *map);
65 FunctionEncoding encoding;
66 Array<Element *> inputs;
67 BooleanEdge undefStatus;
68 FunctionEncoding *getFunctionEncoding() {return &encoding;}
72 class BooleanLogic : public Boolean {
74 BooleanLogic(CSolver *solver, LogicOp _op, BooleanEdge *array, uint asize);
75 Boolean *clone(CSolver *solver, CloneMap *map);
79 Array<BooleanEdge> inputs;