tree: add is_enabled(Thread *)
[model-checker.git] / tree.cc
diff --git a/tree.cc b/tree.cc
index 57e0c13f69902f071cb336d3a155a15db38f4c08..c161ca838de4947fbfc1ca486aaaf0400ca1475e 100644 (file)
--- a/tree.cc
+++ b/tree.cc
@@ -7,6 +7,13 @@ TreeNode::TreeNode(TreeNode *par, ModelAction *act)
 {
        TreeNode::totalNodes++;
        this->parent = par;
+       if (!parent) {
+               num_threads = 1;
+       } else {
+               num_threads = parent->num_threads;
+               if (act && act->get_type() == THREAD_CREATE)
+                       num_threads++;
+       }
 }
 
 TreeNode::~TreeNode() {
@@ -57,3 +64,8 @@ TreeNode * TreeNode::getRoot()
                return parent->getRoot();
        return this;
 }
+
+bool TreeNode::is_enabled(Thread *t)
+{
+       return id_to_int(t->get_id()) < num_threads;
+}