#include "ops.h"
#include "structs.h"
-struct Predicate {
- CompOp op;
- VectorSet* domains;
+#define GETPREDICATETYPE(o) (((Predicate *)(o))->type)
+
+class Predicate {
+ public:
+ Predicate(PredicateType _type) : type(_type) {}
+ PredicateType type;
+ MEMALLOC;
};
+class PredicateOperator : public Predicate {
+ public:
+ PredicateOperator(CompOp op, Set **domain, uint numDomain);
+ bool evalPredicateOperator(uint64_t *inputs);
+ CompOp op;
+ Array<Set *> domains;
+ MEMALLOC;
+};
-Predicate* allocPredicate(CompOp op, Set ** domain, uint numDomain);
-void deletePredicate(Predicate* predicate);
+class PredicateTable : public Predicate {
+ public:
+ PredicateTable(Table *table, UndefinedBehavior undefBehavior);
+ Table *table;
+ UndefinedBehavior undefinedbehavior;
+ MEMALLOC;
+};
#endif