X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=nodestack.h;h=e260f083c80a9455cabf4f0c23c3d30e0c9ccb1c;hb=bf80445c97bd34afcfd208cc3ecb31edcd631bb6;hp=99374a351bc6525b9c8f5131bcaad00761e1b0bf;hpb=91154c0e76e77ff53c968f3aa7ad7626fae19acb;p=c11tester.git diff --git a/nodestack.h b/nodestack.h index 99374a35..e260f083 100644 --- a/nodestack.h +++ b/nodestack.h @@ -22,11 +22,18 @@ struct fairness_info { bool priority; }; +/** + * @brief Types of read-from relations + * + * Our "may-read-from" set is composed of multiple types of reads, and we have + * to iterate through all of them in the backtracking search. This enumeration + * helps to identify which type of read-from we are currently observing. + */ typedef enum { - READ_FROM_PAST, - READ_FROM_PROMISE, - READ_FROM_FUTURE, - READ_FROM_NONE, + READ_FROM_PAST, /**< @brief Read from a prior, existing store */ + READ_FROM_PROMISE, /**< @brief Read from an existing promised future value */ + READ_FROM_FUTURE, /**< @brief Read from a newly-asserted future value */ + READ_FROM_NONE, /**< @brief A NULL state, which should not be reached */ } read_from_type_t; #define YIELD_E 1 @@ -112,6 +119,8 @@ public: bool increment_relseq_break(); bool relseq_break_empty() const; + bool increment_behaviors(); + void print() const; MEMALLOC