From 9f1c792a01ecbc86624f4c16d0a2bc763485a590 Mon Sep 17 00:00:00 2001 From: Brian Norris Date: Tue, 1 May 2012 13:16:09 -0700 Subject: [PATCH] tree: remove tree_t, map thread ids via int, not thread_id_t In the underlying structure of the TreeNode, use 'int' as a set and list key, not 'thread_id_t'. --- tree.cc | 26 ++++++++++++++------------ tree.h | 15 ++++++--------- 2 files changed, 20 insertions(+), 21 deletions(-) diff --git a/tree.cc b/tree.cc index 16a0b69a..ce79f755 100644 --- a/tree.cc +++ b/tree.cc @@ -9,42 +9,44 @@ TreeNode::TreeNode(TreeNode *par) } TreeNode::~TreeNode() { - std::map::iterator it; + std::map::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::iterator it; + std::set::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 c8f47906..9fba2034 100644 --- a/tree.h +++ b/tree.h @@ -5,9 +5,6 @@ #include #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 children; - std::set backtrack; + std::map children; + std::set backtrack; static int totalNodes; }; -- 2.34.1