#include "serializer.h"
class Boolean : public ASTNode {
+private:
+ static uint64_t counter;
public:
Boolean(ASTNodeType _type);
virtual ~Boolean() {}
virtual Boolean *clone(CSolver *solver, CloneMap *map) = 0;
- virtual void serialize(Serializer* ) = 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;
BooleanValue boolVal;
- Vector<Boolean *> parents;
+ Vector<ASTNode *> parents;
virtual void updateParents() {}
-
+ uint64_t id;
CMEMALLOC;
};
Boolean *clone(CSolver *solver, CloneMap *map);
bool isTrue() {return istrue;}
bool isFalse() {return !istrue;}
- void serialize(Serializer *serializer ){};
-
+ 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();
+ void updateParents();
+
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;
void updateParents();
-
+
CMEMALLOC;
};
BooleanEdge cloneEdge(CSolver *solver, CloneMap *map, BooleanEdge e);