ast::ScopedStatementRange findSelectedStatementsInFunction( const ast::Function& decl, IsStatementSelected isSelected) { auto parent = findSelectedStatements(*decl.getStatements(), isSelected); if (!shouldVisitChildren(parent, isSelected)) return parent; if (auto children = findSelectedChildren(parent.getRange().front()->getChildGroups(), isSelected)) return *children; return parent; }
//========================================================================= void TaxNodeVisitor::VisitLeavesToRoot(TreeTaxNode *node) { if ( node->getGnode() == NULL ) { if ( createGraphNodes ) graphView->CreateGraphNode(node); else if ( !visitNullGnodes ) return; } bool visit_children = shouldVisitChildren(node); if ( visit_children ) { beforeVisitChildren(node); ThreadSafeListLocker<TreeTaxNode *> locker(&node->children); for ( TaxNodeIterator it = node->children.begin(); it != node->children.end(); it++ ) VisitLeavesToRoot(*it); afterVisitChildren(node); } Action(node); }