void Tree::traverse(Visitor& visitor) { for (definitionIter = globalDefinitions.begin(); definitionIter != globalDefinitions.end(); definitionIter++) { auto definition = *definitionIter; unsigned int traverseMask = visitor.getTraverseMask(); switch (definition->getKind()) { case Definition::Class: if (traverseMask & Visitor::TraverseClasses) { definition->traverse(visitor); } break; case Definition::Member: if (traverseMask & Visitor::TraverseMethods) { definition->traverse(visitor); } break; default: break; } } }