towards cloning
[satune.git] / src / AST / boolean.h
index c9722a91ed8c0210fc05cb543bd3a85c8701944d..2341fcfdf4edbc873515d2ffc105214cba3d9324 100644 (file)
@@ -21,6 +21,7 @@ class Boolean : public ASTNode {
 public:
        Boolean(ASTNodeType _type);
        virtual ~Boolean() {}
+       virtual Boolean * clone(CSolver * solver, CloneMap *map);
        Polarity polarity;
        BooleanValue boolVal;
        Vector<Boolean *> parents;
@@ -30,6 +31,8 @@ public:
 class BooleanVar : public Boolean {
 public:
        BooleanVar(VarType t);
+       Boolean * clone(CSolver * solver, CloneMap *map);
+       
        VarType vtype;
        Edge var;
        MEMALLOC;
@@ -38,6 +41,8 @@ public:
 class BooleanOrder : public Boolean {
 public:
        BooleanOrder(Order *_order, uint64_t _first, uint64_t _second);
+       Boolean * clone(CSolver * solver, CloneMap *map);
+       
        Order *order;
        uint64_t first;
        uint64_t second;
@@ -47,7 +52,8 @@ public:
 class BooleanPredicate : public Boolean {
 public:
        BooleanPredicate(Predicate *_predicate, Element **_inputs, uint _numInputs, Boolean *_undefinedStatus);
-       ~BooleanPredicate();
+       Boolean * clone(CSolver * solver, CloneMap *map);
+       
        Predicate *predicate;
        FunctionEncoding encoding;
        Array<Element *> inputs;
@@ -59,6 +65,8 @@ public:
 class BooleanLogic : public Boolean {
 public:
        BooleanLogic(CSolver *solver, LogicOp _op, Boolean **array, uint asize);
+       Boolean * clone(CSolver * solver, CloneMap *map);
+
        LogicOp op;
        Array<Boolean *> inputs;
        MEMALLOC;