From: Ted Kremenek Date: Wed, 5 May 2010 00:55:17 +0000 (+0000) Subject: Move post-processing of token annotations to method in AnnotateTokensWorker. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=11949cbae3f42c32a2933fb85b125620666d98ea;p=clang Move post-processing of token annotations to method in AnnotateTokensWorker. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103062 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/tools/libclang/CIndex.cpp b/tools/libclang/CIndex.cpp index 5ced97ace9..23be3dfcb2 100644 --- a/tools/libclang/CIndex.cpp +++ b/tools/libclang/CIndex.cpp @@ -2324,13 +2324,32 @@ typedef llvm::DenseMap AnnotateTokensData; namespace { class AnnotateTokensWorker { AnnotateTokensData &Annotated; + CXToken *Tokens; + CXCursor *Cursors; + unsigned NumTokens; public: - AnnotateTokensWorker(AnnotateTokensData &annotated) - : Annotated(annotated) {} + AnnotateTokensWorker(AnnotateTokensData &annotated, + CXToken *tokens, CXCursor *cursors, unsigned numTokens) + : Annotated(annotated), Tokens(tokens), Cursors(cursors), + NumTokens(numTokens) {} + + void CompleteAnnotations(); + enum CXChildVisitResult Visit(CXCursor cursor, CXCursor parent); }; } +void AnnotateTokensWorker::CompleteAnnotations() { + for (unsigned I = 0; I != NumTokens; ++I) { + // Determine whether we saw a cursor at this token's location. + AnnotateTokensData::iterator Pos = Annotated.find(Tokens[I].int_data[1]); + if (Pos == Annotated.end()) + continue; + + Cursors[I] = Pos->second; + } +} + enum CXChildVisitResult AnnotateTokensWorker::Visit(CXCursor cursor, CXCursor parent) { // We only annotate the locations of declarations, simple @@ -2462,19 +2481,11 @@ void clang_annotateTokens(CXTranslationUnit TU, // Annotate all of the source locations in the region of interest that map to // a specific cursor. CXCursor Parent = clang_getTranslationUnitCursor(CXXUnit); - AnnotateTokensWorker W(Annotated); + AnnotateTokensWorker W(Annotated, Tokens, Cursors, NumTokens); CursorVisitor AnnotateVis(CXXUnit, AnnotateTokensVisitor, &W, Decl::MaxPCHLevel, RegionOfInterest); AnnotateVis.VisitChildren(Parent); - - for (unsigned I = 0; I != NumTokens; ++I) { - // Determine whether we saw a cursor at this token's location. - AnnotateTokensData::iterator Pos = Annotated.find(Tokens[I].int_data[1]); - if (Pos == Annotated.end()) - continue; - - Cursors[I] = Pos->second; - } + W.CompleteAnnotations(); } } // end: extern "C"