Merge
[satune.git] / src / AST / boolean.h
index 9d7e9ab16df375e9fc5a2cc4d2708abf75bba99e..6449a8e0f0eed13ff7559839123d25b937442f19 100644 (file)
@@ -8,14 +8,14 @@
 #include "astnode.h"
 #include "functionencoding.h"
 #include "constraint.h"
-
-
+#include "serializer.h"
 
 class Boolean : public ASTNode {
 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;
@@ -32,6 +32,8 @@ public:
        Boolean *clone(CSolver *solver, CloneMap *map);
        bool isTrue() {return istrue;}
        bool isFalse() {return !istrue;}
+       void serialize(Serializer *serializer ){};
+       
        bool istrue;
        CMEMALLOC;
 };
@@ -40,7 +42,8 @@ class BooleanVar : public Boolean {
 public:
        BooleanVar(VarType t);
        Boolean *clone(CSolver *solver, CloneMap *map);
-
+       void serialize(Serializer *serializer );
+       
        VarType vtype;
        Edge var;
        CMEMALLOC;
@@ -50,7 +53,8 @@ class BooleanOrder : public Boolean {
 public:
        BooleanOrder(Order *_order, uint64_t _first, uint64_t _second);
        Boolean *clone(CSolver *solver, CloneMap *map);
-
+       void serialize(Serializer *serializer );
+       
        Order *order;
        uint64_t first;
        uint64_t second;
@@ -64,8 +68,10 @@ public:
        Predicate *getPredicate() {return predicate;}
        FunctionEncoding *getFunctionEncoding() {return &encoding;}
        void updateParents();
-       CMEMALLOC;
+       void serialize(Serializer *serializer );
        
+       CMEMALLOC;
+
        Predicate *predicate;
        FunctionEncoding encoding;
        Array<Element *> inputs;
@@ -76,7 +82,8 @@ class BooleanLogic : public Boolean {
 public:
        BooleanLogic(CSolver *solver, LogicOp _op, BooleanEdge *array, uint asize);
        Boolean *clone(CSolver *solver, CloneMap *map);
-
+       void serialize(Serializer *serializer );
+       
        LogicOp op;
        bool replaced;
        Array<BooleanEdge> inputs;