Merging + fixing memory bugs
[satune.git] / src / AST / boolean.h
index 6449a8e0f0eed13ff7559839123d25b937442f19..dd1b58050a3454b68e72f9e627dbb8b4e6c73f9f 100644 (file)
 #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;
 };
 
@@ -32,8 +35,8 @@ public:
        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;
 };
@@ -43,7 +46,7 @@ public:
        BooleanVar(VarType t);
        Boolean *clone(CSolver *solver, CloneMap *map);
        void serialize(Serializer *serializer );
-       
+       virtual void print();
        VarType vtype;
        Edge var;
        CMEMALLOC;
@@ -54,7 +57,9 @@ public:
        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;
@@ -69,7 +74,7 @@ public:
        FunctionEncoding *getFunctionEncoding() {return &encoding;}
        void updateParents();
        void serialize(Serializer *serializer );
-       
+       virtual void print();
        CMEMALLOC;
 
        Predicate *predicate;
@@ -83,12 +88,12 @@ public:
        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);