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