-/**
- This is a little sketchy, but apparently legit.
- https://www.python.org/dev/peps/pep-3123/ */
-
-#define GETBOOLEANTYPE(o) GETASTNODETYPE(o)
-#define GETBOOLEANPARENTS(o) (&((Boolean *)(o))->parents)
-
-struct Boolean {
- ASTNode base;
- VectorBoolean parents;
+class Boolean : public ASTNode, public Serializable {
+public:
+ Boolean(ASTNodeType _type);
+ virtual ~Boolean() {}
+ virtual Boolean *clone(CSolver *solver, CloneMap *map) = 0;
+ virtual void serialize(Serializer* ) = 0;
+ virtual bool isTrue() {return boolVal == BV_MUSTBETRUE;}
+ virtual bool isFalse() {return boolVal == BV_MUSTBEFALSE;}
+ Polarity polarity;
+ BooleanValue boolVal;
+ Vector<Boolean *> parents;
+ virtual void updateParents() {}
+
+ CMEMALLOC;