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(thread_id_t id) { return children.find(id_to_int(id)) != children.end(); }
19 TreeNode * exploreChild(thread_id_t id);
20 thread_id_t getNextBacktrack();
22 /* Return 1 if already in backtrack, 0 otherwise */
23 int setBacktrack(thread_id_t id);
25 static int getTotalNodes() { return TreeNode::totalNodes; }
28 std::map<int, class TreeNode *> children;
29 std::set<int> backtrack;
30 static int totalNodes;
33 #endif /* __TREE_H__ */