tree: remove tree_t, map thread ids via int, not thread_id_t
authorBrian Norris <banorris@uci.edu>
Tue, 1 May 2012 20:16:09 +0000 (13:16 -0700)
committerBrian Norris <banorris@uci.edu>
Tue, 1 May 2012 20:16:09 +0000 (13:16 -0700)
In the underlying structure of the TreeNode, use 'int' as a set and list key,
not 'thread_id_t'.

tree.cc
tree.h

diff --git a/tree.cc b/tree.cc
index 16a0b69a96c9248308626698ffbecd7cbf91de87..ce79f755eeea010897bc117f47deab11bb53786e 100644 (file)
--- a/tree.cc
+++ b/tree.cc
@@ -9,42 +9,44 @@ TreeNode::TreeNode(TreeNode *par)
 }
 
 TreeNode::~TreeNode() {
-       std::map<tree_t, class TreeNode *>::iterator it;
+       std::map<int, class TreeNode *>::iterator it;
 
        for (it = children.begin(); it != children.end(); it++)
                delete it->second;
 }
 
-TreeNode * TreeNode::exploreChild(tree_t id)
+TreeNode * TreeNode::exploreChild(thread_id_t id)
 {
        TreeNode *n;
-       std::set<tree_t >::iterator it;
+       std::set<int>::iterator it;
+       int i = id_to_int(id);
 
        if (!hasBeenExplored(id)) {
                n = new TreeNode(this);
-               children[id] = n;
+               children[i] = n;
        } else {
-               n = children[id];
+               n = children[i];
        }
-       if ((it = backtrack.find(id)) != backtrack.end())
+       if ((it = backtrack.find(i)) != backtrack.end())
                backtrack.erase(it);
 
        return n;
 }
 
-int TreeNode::setBacktrack(tree_t id)
+int TreeNode::setBacktrack(thread_id_t id)
 {
-       if (backtrack.find(id) != backtrack.end())
+       int i = id_to_int(id);
+       if (backtrack.find(i) != backtrack.end())
                return 1;
-       backtrack.insert(id);
+       backtrack.insert(i);
        return 0;
 }
 
-tree_t TreeNode::getNextBacktrack()
+thread_id_t TreeNode::getNextBacktrack()
 {
        if (backtrack.empty())
-               return TREE_T_NONE;
-       return *backtrack.begin();
+               return THREAD_ID_T_NONE;
+       return int_to_id(*backtrack.begin());
 }
 
 TreeNode * TreeNode::getRoot()
diff --git a/tree.h b/tree.h
index c8f47906bbe1caf2ed866993b3dbf07e37eba63a..9fba203473122b66a2a2fcc4d0cfc2cd54ca6649 100644 (file)
--- a/tree.h
+++ b/tree.h
@@ -5,9 +5,6 @@
 #include <map>
 #include "threads.h"
 
-typedef thread_id_t tree_t;
-#define TREE_T_NONE    THREAD_ID_T_NONE
-
 /*
  * An n-ary tree
  *
@@ -18,18 +15,18 @@ class TreeNode {
 public:
        TreeNode(TreeNode *par);
        ~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 * exploreChild(thread_id_t id);
+       thread_id_t getNextBacktrack();
 
        /* Return 1 if already in backtrack, 0 otherwise */
-       int setBacktrack(tree_t id);
+       int setBacktrack(thread_id_t id);
        TreeNode * getRoot();
        static int getTotalNodes() { return TreeNode::totalNodes; }
 private:
        TreeNode *parent;
-       std::map<tree_t, class TreeNode *> children;
-       std::set<tree_t> backtrack;
+       std::map<int, class TreeNode *> children;
+       std::set<int> backtrack;
        static int totalNodes;
 };