1 #ifndef __NODESTACK_H__
2 #define __NODESTACK_H__
13 Node(ModelAction *act = NULL, Node *parent = NULL);
15 /* return true = thread choice has already been explored */
16 bool has_been_explored(thread_id_t tid);
17 /* return true = backtrack set is empty */
18 bool backtrack_empty();
19 void explore_child(ModelAction *act);
20 /* return false = thread was already in backtrack */
21 bool set_backtrack(thread_id_t id);
22 thread_id_t get_next_backtrack();
23 bool is_enabled(Thread *t);
24 ModelAction * get_action() { return action; }
28 static int get_total_nodes() { return total_nodes; }
30 void explore(thread_id_t tid);
32 static int total_nodes;
35 std::vector<bool> explored_children;
36 std::vector<bool> backtrack;
39 typedef std::list<class Node *> node_list_t;
45 ModelAction * explore_action(ModelAction *act);
48 void reset_execution();
52 node_list_t node_list;
53 node_list_t::iterator iter;
56 #endif /* __NODESTACK_H__ */