/// \param R a half-open source range retrieved from the abstract syntax tree.
RangeComparisonResult CompareRegionOfInterest(SourceRange R);
- CXChildVisitResult invokeVisitor(CXCursor cursor, CXCursor parent) {
- return Visitor(cursor, parent, ClientData);
- }
-
void visitDeclsFromFileRegion(FileID File, unsigned Offset, unsigned Length);
class SetParentRAII {
unsigned Offset, unsigned Length) {
ASTUnit *Unit = static_cast<ASTUnit *>(TU->TUData);
SourceManager &SM = Unit->getSourceManager();
-
SourceRange Range = RegionOfInterest;
- CXCursor Parent = clang_getTranslationUnitCursor(TU);
SmallVector<Decl *, 16> Decls;
Unit->findFileRegionDecls(File, Offset, Length, Decls);
assert(CompRes == RangeOverlap);
VisitedAtLeastOnce = true;
- CXCursor C = MakeCXCursor(D, TU, Range);
- CXChildVisitResult
- Res = invokeVisitor(C, Parent);
- if (Res == CXChildVisit_Break)
+ if (Visit(MakeCXCursor(D, TU, Range), /*CheckedRegionOfInterest=*/true))
break;
- if (Res == CXChildVisit_Recurse)
- if (VisitChildren(C))
- break;
}
if (VisitedAtLeastOnce)
break;
if (RangeCompare(SM, CurDeclRange, Range) == RangeOverlap) {
- CXCursor C = MakeCXCursor(D, TU, Range);
- CXChildVisitResult
- Res = invokeVisitor(C, Parent);
- if (Res == CXChildVisit_Recurse)
- VisitChildren(C);
+ Visit(MakeCXCursor(D, TU, Range), /*CheckedRegionOfInterest=*/true);
break;
}