X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=src%2FAST%2Fpredicate.h;h=183a96099c9d69157f8a63dc7d4c6bd323a91f36;hb=da9bf180de81b31c95fb4987b84412e11ce3f6eb;hp=513e3869d5000681826a0e90e0d2fdef951e2d4f;hpb=c507619d06bc6fbddc5fc26016be9bb47daa0ae0;p=satune.git diff --git a/src/AST/predicate.h b/src/AST/predicate.h index 513e386..183a960 100644 --- a/src/AST/predicate.h +++ b/src/AST/predicate.h @@ -3,14 +3,35 @@ #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;} + PredicateType type; + CMEMALLOC; }; +class PredicateOperator : public Predicate { +public: + PredicateOperator(CompOp op, Set **domain, uint numDomain); + bool evalPredicateOperator(uint64_t *inputs); + Predicate *clone(CSolver *solver, CloneMap *map); + CompOp op; + Array domains; + CMEMALLOC; +}; -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); + Table *table; + UndefinedBehavior undefinedbehavior; + CMEMALLOC; +}; #endif