24 #ifndef __ChangeTree__ 25 #define __ChangeTree__ 34 #include <boost/bind.hpp> 45 template<
class ItemType>
126 typedef std::map<ItemType, Node *> NodeMap;
132 template<
class SameItemType>
133 class ChangeTreeValidator :
public std::unary_function<SameItemType, void>
136 ChangeTreeValidator(NodeMap lookup,
Node *root) : fMyLookup(lookup),fMyRoot(root)
142 typename NodeMap::iterator iter;
143 for (iter = fMyLookup.begin(); iter != fMyLookup.end(); ++iter)
146 std::queue<Node*> treeQueue;
147 treeQueue.push(fMyRoot);
148 Node* targetNode = iter->second;
149 bool16 bFound = kFalse;
150 while (!treeQueue.empty())
153 Node *curNode = treeQueue.front();
156 if (curNode->fItem == targetNode->fItem)
162 std::for_each(curNode->fChildren.begin(), curNode->fChildren.end(), boost::bind(&std::queue<Node*>::push, &treeQueue, _1));
164 ASSERT_MSG(bFound,
"ChangeTree out of sync -- some fLookup node not found in fRoot's tree!");