4 int TreeNode::totalNodes = 0;
6 TreeNode::TreeNode(TreeNode *par, ModelAction *act)
8 TreeNode::totalNodes++;
12 TreeNode::~TreeNode() {
13 std::map<int, class TreeNode *>::iterator it;
15 for (it = children.begin(); it != children.end(); it++)
19 TreeNode * TreeNode::explore_child(ModelAction *act)
22 std::set<int>::iterator it;
23 thread_id_t id = act->get_tid();
24 int i = id_to_int(id);
26 if (!hasBeenExplored(id)) {
27 n = new TreeNode(this, act);
32 if ((it = backtrack.find(i)) != backtrack.end())
38 int TreeNode::setBacktrack(thread_id_t id)
40 int i = id_to_int(id);
41 if (backtrack.find(i) != backtrack.end())
47 thread_id_t TreeNode::getNextBacktrack()
49 if (backtrack.empty())
50 return THREAD_ID_T_NONE;
51 return int_to_id(*backtrack.begin());
54 TreeNode * TreeNode::getRoot()
57 return parent->getRoot();