diff --git a/mytools/voidTree.hpp b/mytools/voidTree.hpp index 6927323..76fc431 100644 --- a/mytools/voidTree.hpp +++ b/mytools/voidTree.hpp @@ -243,7 +243,29 @@ public: { walkNode(rootNode, traverse); } - + + template + void walkNodeWithMark(VoidNode *node, T& traverse, const T2& mark) + { + T2 new_mark = mark; + + if (!traverse(node, new_mark)) + return; + + VoidList::iterator i = node->children.begin(); + + while (i != node->children.end()) + { + walkNodeWithMark(*i, traverse, new_mark); + ++i; + } + } + + template + void walkWithMark(T& traverse, T2 mark) + { + walkNodeWithMark(rootNode, traverse, mark); + } }; #endif