Adding STL stuff and operator news of snapshot to model-checker. Need to actuallly...
[c11tester.git] / tree.h
diff --git a/tree.h b/tree.h
index 6d37038e87a42f0c068d6d1e4107ad2b983c9230..e107a7ef76f1d2805d7f1005e1313b1fc1184750 100644 (file)
--- a/tree.h
+++ b/tree.h
@@ -1,9 +1,12 @@
+#ifndef __TREE_H__
+#define __TREE_H__
+#include "mymemory.h"
 #include <set>
 #include <map>
+#include <cstddef>
 #include "threads.h"
 
-typedef thread_id_t tree_t;
-#define TREE_T_NONE    -1
+class ModelAction;
 
 /*
  * An n-ary tree
@@ -13,19 +16,25 @@ typedef thread_id_t tree_t;
  */
 class TreeNode {
 public:
-       TreeNode(TreeNode *par);
+       TreeNode(TreeNode *par = NULL, ModelAction *act = NULL);
        ~TreeNode();
-       bool hasBeenExplored(tree_t id) { return children.find(id) != children.end(); }
-       TreeNode *exploreChild(tree_t id);
-       tree_t getNextBacktrack();
+       bool hasBeenExplored(thread_id_t id) { return children.find(id_to_int(id)) != children.end(); }
+       TreeNode * explore_child(ModelAction *act);
+       thread_id_t getNextBacktrack();
 
        /* Return 1 if already in backtrack, 0 otherwise */
-       int setBacktrack(tree_t id);
-       TreeNode *getRoot();
+       int setBacktrack(thread_id_t id);
+       TreeNode * getRoot();
        static int getTotalNodes() { return TreeNode::totalNodes; }
+
+       bool is_enabled(Thread *t);
+  MEMALLOC
 private:
        TreeNode *parent;
-       std::map<tree_t, class TreeNode *> children;
-       std::set<tree_t> backtrack;
+       std::map<int, class TreeNode *, std::less< int >, MyAlloc< std::pair< const int, class TreeNode * > > > children;
+       std::set<int, std::less< int >, MyAlloc< int > > backtrack;
        static int totalNodes;
+       int num_threads;
 };
+
+#endif /* __TREE_H__ */