3 int TreeNode::totalNodes = 0;
5 TreeNode::TreeNode(TreeNode *par)
7 TreeNode::totalNodes++;
11 TreeNode::~TreeNode() {
12 std::map<int, class TreeNode *>::iterator it;
14 for (it = children.begin(); it != children.end(); it++)
18 TreeNode * TreeNode::exploreChild(thread_id_t id)
21 std::set<int>::iterator it;
22 int i = id_to_int(id);
24 if (!hasBeenExplored(id)) {
25 n = new TreeNode(this);
30 if ((it = backtrack.find(i)) != backtrack.end())
36 int TreeNode::setBacktrack(thread_id_t id)
38 int i = id_to_int(id);
39 if (backtrack.find(i) != backtrack.end())
45 thread_id_t TreeNode::getNextBacktrack()
47 if (backtrack.empty())
48 return THREAD_ID_T_NONE;
49 return int_to_id(*backtrack.begin());
52 TreeNode * TreeNode::getRoot()
55 return parent->getRoot();