Change dependences
[satune.git] / src / AST / predicate.h
index 96f462d499e140195508c08fa23e6de856856844..183a96099c9d69157f8a63dc7d4c6bd323a91f36 100644 (file)
@@ -3,32 +3,35 @@
 #include "classlist.h"
 #include "mymemory.h"
 #include "ops.h"
+#include "astops.h"
 #include "structs.h"
-
-#define GETPREDICATETYPE(o) (((Predicate *)(o))->type)
+#include "common.h"
 
 class Predicate {
- public:
-  Predicate(PredicateType _type) : type(_type) {}
+public:
+       Predicate(PredicateType _type) : type(_type) {}
        virtual ~Predicate() {}
+       virtual Predicate *clone(CSolver *solver, CloneMap *map) {ASSERT(0); return NULL;}
        PredicateType type;
-       MEMALLOC;
+       CMEMALLOC;
 };
 
 class PredicateOperator : public Predicate {
- public:
+public:
        PredicateOperator(CompOp op, Set **domain, uint numDomain);
        bool evalPredicateOperator(uint64_t *inputs);
+       Predicate *clone(CSolver *solver, CloneMap *map);
        CompOp op;
        Array<Set *> domains;
-       MEMALLOC;
+       CMEMALLOC;
 };
 
 class PredicateTable : public Predicate {
- public:
+public:
        PredicateTable(Table *table, UndefinedBehavior undefBehavior);
+       Predicate *clone(CSolver *solver, CloneMap *map);
        Table *table;
        UndefinedBehavior undefinedbehavior;
-       MEMALLOC;
+       CMEMALLOC;
 };
 #endif