virtual ~Boolean() {}
virtual Boolean *clone(CSolver *solver, CloneMap *map) = 0;
virtual void serialize(Serializer* ) = 0;
+ virtual void print() =0;
virtual bool isTrue() {return boolVal == BV_MUSTBETRUE;}
virtual bool isFalse() {return boolVal == BV_MUSTBEFALSE;}
Polarity polarity;
bool isTrue() {return istrue;}
bool isFalse() {return !istrue;}
void serialize(Serializer *serializer ){};
-
+ virtual void print();
bool istrue;
CMEMALLOC;
};
BooleanVar(VarType t);
Boolean *clone(CSolver *solver, CloneMap *map);
void serialize(Serializer *serializer );
-
+ virtual void print();
VarType vtype;
Edge var;
CMEMALLOC;
BooleanOrder(Order *_order, uint64_t _first, uint64_t _second);
Boolean *clone(CSolver *solver, CloneMap *map);
void serialize(Serializer *serializer );
-
+ virtual void print();
+
Order *order;
uint64_t first;
uint64_t second;
FunctionEncoding *getFunctionEncoding() {return &encoding;}
void updateParents();
void serialize(Serializer *serializer );
-
+ virtual void print();
CMEMALLOC;
Predicate *predicate;
BooleanLogic(CSolver *solver, LogicOp _op, BooleanEdge *array, uint asize);
Boolean *clone(CSolver *solver, CloneMap *map);
void serialize(Serializer *serializer );
-
+ virtual void print();
LogicOp op;
bool replaced;
Array<BooleanEdge> inputs;
inline ElementEncoding *getElementEncoding(){ return &encoding; }
virtual Element *clone(CSolver *solver, CloneMap *map) {ASSERT(0); return NULL;};
virtual void serialize(Serializer* serializer) =0;
+ virtual void print();
virtual void updateParents() {}
virtual Set * getRange() = 0;
CMEMALLOC;
ElementSet(Set *s);
virtual Element *clone(CSolver *solver, CloneMap *map);
virtual void serialize(Serializer* serializer);
+ virtual void print();
CMEMALLOC;
Set *getRange() {return set;}
protected:
ElementConst(uint64_t value, Set *_set);
uint64_t value;
virtual void serialize(Serializer* serializer);
+ virtual void print();
Element *clone(CSolver *solver, CloneMap *map);
CMEMALLOC;
};
FunctionEncoding functionencoding;
Element *clone(CSolver *solver, CloneMap *map);
virtual void serialize(Serializer* serializer);
+ virtual void print();
Set * getRange();
void updateParents();
Function * getFunction() {return function;}
virtual ~Function() {}
virtual Function *clone(CSolver *solver, CloneMap *map) {ASSERT(0); return NULL;}
virtual void serialize(Serializer* serialiezr) =0;
+ virtual void print() = 0;
virtual Set * getRange() = 0;
CMEMALLOC;
};
bool isInRangeFunction(uint64_t val);
Function *clone(CSolver *solver, CloneMap *map);
virtual void serialize(Serializer* serialiezr);
+ virtual void print();
Set * getRange() {return range;}
CMEMALLOC;
};
FunctionTable (Table *table, UndefinedBehavior behavior);
Function *clone(CSolver *solver, CloneMap *map);
virtual void serialize(Serializer* serialiezr);
+ virtual void print();
Set * getRange();
CMEMALLOC;
};