9 #include "functionencoding.h"
10 #include "constraint.h"
12 class Boolean : public ASTNode {
14 Boolean(ASTNodeType _type);
16 virtual Boolean *clone(CSolver *solver, CloneMap *map) = 0;
17 virtual bool isTrue() {return false;}
18 virtual bool isFalse() {return false;}
21 Vector<Boolean *> parents;
26 class BooleanConst : public Boolean {
28 BooleanConst(bool isTrue);
29 Boolean *clone(CSolver *solver, CloneMap *map);
30 bool isTrue() {return istrue;}
31 bool isFalse() {return !istrue;}
36 class BooleanVar : public Boolean {
38 BooleanVar(VarType t);
39 Boolean *clone(CSolver *solver, CloneMap *map);
46 class BooleanOrder : public Boolean {
48 BooleanOrder(Order *_order, uint64_t _first, uint64_t _second);
49 Boolean *clone(CSolver *solver, CloneMap *map);
57 class BooleanPredicate : public Boolean {
59 BooleanPredicate(Predicate *_predicate, Element **_inputs, uint _numInputs, Boolean *_undefinedStatus);
60 Boolean *clone(CSolver *solver, CloneMap *map);
63 FunctionEncoding encoding;
64 Array<Element *> inputs;
66 FunctionEncoding *getFunctionEncoding() {return &encoding;}
70 class BooleanLogic : public Boolean {
72 BooleanLogic(CSolver *solver, LogicOp _op, Boolean **array, uint asize);
73 Boolean *clone(CSolver *solver, CloneMap *map);
76 Array<Boolean *> inputs;