]> granicus.if.org Git - clang/commitdiff
Move post-processing of token annotations to method in AnnotateTokensWorker.
authorTed Kremenek <kremenek@apple.com>
Wed, 5 May 2010 00:55:17 +0000 (00:55 +0000)
committerTed Kremenek <kremenek@apple.com>
Wed, 5 May 2010 00:55:17 +0000 (00:55 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103062 91177308-0d34-0410-b5e6-96231b3b80d8

tools/libclang/CIndex.cpp

index 5ced97ace9919f3fe121f937b2adaabcf7dc4998..23be3dfcb24b2c63f3ed12cc1cc317a8bcd6dcd3 100644 (file)
@@ -2324,13 +2324,32 @@ typedef llvm::DenseMap<unsigned, CXCursor> 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"