*/
class Node {
public:
- Node(ModelAction *act = NULL, Node *par = NULL, int nthreads = 1, Node *prevfairness = NULL);
+ Node(ModelAction *act = NULL, Node *par = NULL, int nthreads = 2, Node *prevfairness = NULL);
~Node();
/* return true = thread choice has already been explored */
bool has_been_explored(thread_id_t tid);
thread_id_t get_next_backtrack();
bool is_enabled(Thread *t);
bool is_enabled(thread_id_t tid);
+ enabled_type_t enabled_status(thread_id_t tid);
+
ModelAction * get_action() { return action; }
bool has_priority(thread_id_t tid);
int get_num_threads() {return num_threads;}
bool get_promise(unsigned int i);
bool increment_promise();
bool promise_empty();
+ enabled_type_t *get_enabled_array() {return enabled_array;}
+
+ void set_misc_max(int i);
+ int get_misc();
+ bool increment_misc();
+ bool misc_empty();
void add_relseq_break(const ModelAction *write);
const ModelAction * get_relseq_break();
std::vector< const ModelAction *, ModelAlloc<const ModelAction *> > relseq_break_writes;
int relseq_break_index;
+
+ int misc_index;
+ int misc_max;
};
typedef std::vector< Node *, ModelAlloc< Node * > > node_list_t;