X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=predicate.h;h=6d0dbc4be4232e4a37e0537bde79894db83fecb5;hb=493376d8483562a85a590b9dfa890a27669ca6b4;hp=3849e2d88e0e4b2c519c4bd61717597a0d53f2e3;hpb=6898da1b7c46ddf3427ea0127dc68f8cc6016511;p=c11tester.git diff --git a/predicate.h b/predicate.h index 3849e2d8..6d0dbc4b 100644 --- a/predicate.h +++ b/predicate.h @@ -2,10 +2,12 @@ #define __PREDICATE_H__ #include "funcinst.h" +#include "hashset.h" unsigned int pred_expr_hash (struct pred_expr *); bool pred_expr_equal(struct pred_expr *, struct pred_expr *); -typedef HashSet PredicateSet; +typedef HashSet PredSet; +typedef HSIterator PredSetIter; typedef enum predicate_token { EQUALITY, NULLITY @@ -16,9 +18,17 @@ typedef enum predicate_token { * read at memory location specified in predicate_expr. */ struct pred_expr { + pred_expr(token_t token, void * location, bool value) : + token(token), + location(location), + value(value) + {} + token_t token; void * location; bool value; + + MEMALLOC }; @@ -28,14 +38,18 @@ public: ~Predicate(); FuncInst * get_func_inst() { return func_inst; } - PredicateSet * get_predicates() { return &predicates; } + PredSet * get_predicates() { return &predicates; } void add_predicate(token_t token, void * location, bool value); + void add_child(Predicate * child); + + void print_predicate(); + void print_pred_subtree(); MEMALLOC private: FuncInst * func_inst; /* may have multiple precicates */ - PredicateSet predicates; + PredSet predicates; ModelVector children; };