X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=src%2FAST%2Fpredicate.h;h=17e34d948c88eebe7516992dd472cfe2be9b988a;hb=85d422935f1a6ebdb689f4108185521b022a51d9;hp=78cf2f68ddf1daa99c0b147a29df15c4490d6e9e;hpb=c0be5e75ecdf7d03e931d73701c2d507c2a6f9b3;p=satune.git diff --git a/src/AST/predicate.h b/src/AST/predicate.h index 78cf2f6..17e34d9 100644 --- a/src/AST/predicate.h +++ b/src/AST/predicate.h @@ -3,19 +3,42 @@ #include "classlist.h" #include "mymemory.h" #include "ops.h" +#include "astops.h" #include "structs.h" +#include "common.h" -struct Predicate { - CompOp op; - VectorSet* domains; +class Predicate { +public: + Predicate(PredicateType _type) : type(_type) {} + virtual ~Predicate() {} + virtual Predicate *clone(CSolver *solver, CloneMap *map) {ASSERT(0); return NULL;} + virtual void serialize(Serializer *serializer) = 0; + virtual void print() = 0; + PredicateType type; + CMEMALLOC; }; -struct TablePredicate{ - CompOp op; - Table* table; +class PredicateOperator : public Predicate { +public: + PredicateOperator(CompOp op); + bool evalPredicateOperator(uint64_t *inputs); + Predicate *clone(CSolver *solver, CloneMap *map); + virtual void serialize(Serializer *serializer); + virtual void print(); + CompOp getOp() {return op;} + CMEMALLOC; +private: + CompOp op; }; - -Predicate* allocPredicate(CompOp op, Set ** domain, uint numDomain); -void deletePredicate(Predicate* predicate); +class PredicateTable : public Predicate { +public: + PredicateTable(Table *table, UndefinedBehavior undefBehavior); + Predicate *clone(CSolver *solver, CloneMap *map); + virtual void serialize(Serializer *serializer); + virtual void print(); + Table *table; + UndefinedBehavior undefinedbehavior; + CMEMALLOC; +}; #endif