5 typedef thread_id_t tree_t;
6 #define TREE_T_NONE THREAD_ID_T_NONE
11 * A tree with n possible branches from each node - used for recording the
12 * execution paths we've executed / backtracked
16 TreeNode(TreeNode *par);
18 bool hasBeenExplored(tree_t id) { return children.find(id) != children.end(); }
19 TreeNode * exploreChild(tree_t id);
20 tree_t getNextBacktrack();
22 /* Return 1 if already in backtrack, 0 otherwise */
23 int setBacktrack(tree_t id);
25 static int getTotalNodes() { return TreeNode::totalNodes; }
28 std::map<tree_t, class TreeNode *> children;
29 std::set<tree_t> backtrack;
30 static int totalNodes;