[cfe-commits] r49896 - in /cfe/trunk: include/clang/Rewrite/HTMLRewrite.h lib/Rewrite/HTMLRewrite.cpp

Ted Kremenek kremenek at apple.com
Thu Apr 17 22:34:34 PDT 2008


Author: kremenek
Date: Fri Apr 18 00:34:33 2008
New Revision: 49896

URL: http://llvm.org/viewvc/llvm-project?rev=49896&view=rev
Log:
Provide a version of html::HighlightMacros that takes a Preprocessor&.

Modified:
    cfe/trunk/include/clang/Rewrite/HTMLRewrite.h
    cfe/trunk/lib/Rewrite/HTMLRewrite.cpp

Modified: cfe/trunk/include/clang/Rewrite/HTMLRewrite.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Rewrite/HTMLRewrite.h?rev=49896&r1=49895&r2=49896&view=diff

==============================================================================
--- cfe/trunk/include/clang/Rewrite/HTMLRewrite.h (original)
+++ cfe/trunk/include/clang/Rewrite/HTMLRewrite.h Fri Apr 18 00:34:33 2008
@@ -75,9 +75,15 @@
   /// file, to reexpand macros and insert (into the HTML) information about the
   /// macro expansions.  This won't be perfectly perfect, but it will be
   /// reasonably close.
+  void HighlightMacros(Rewriter &R, unsigned FileID, Preprocessor &PP);
+  
+  
   void HighlightMacros(Rewriter &R, unsigned FileID, PreprocessorFactory &PPF);
+    
   
 
+
+
   
 } // end html namespace
 } // end clang namespace

Modified: cfe/trunk/lib/Rewrite/HTMLRewrite.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Rewrite/HTMLRewrite.cpp?rev=49896&r1=49895&r2=49896&view=diff

==============================================================================
--- cfe/trunk/lib/Rewrite/HTMLRewrite.cpp (original)
+++ cfe/trunk/lib/Rewrite/HTMLRewrite.cpp Fri Apr 18 00:34:33 2008
@@ -393,28 +393,24 @@
 /// file, to reexpand macros and insert (into the HTML) information about the
 /// macro expansions.  This won't be perfectly perfect, but it will be
 /// reasonably close.
-void html::HighlightMacros(Rewriter &R, unsigned FileID,
-                           PreprocessorFactory &PPF) {
-  
-  llvm::OwningPtr<Preprocessor> PP(PPF.CreatePreprocessor());
-  
+void html::HighlightMacros(Rewriter &R, unsigned FileID, Preprocessor& PP) {
   
   RewriteBuffer &RB = R.getEditBuffer(FileID);
   
   // Inform the preprocessor that we don't want comments.
-  PP->SetCommentRetentionState(false, false);
+  PP.SetCommentRetentionState(false, false);
   
   // Start parsing the specified input file.
-  PP->EnterMainSourceFile();
+  PP.EnterMainSourceFile();
   
   // Lex all the tokens.
-  const SourceManager &SourceMgr = PP->getSourceManager();
+  const SourceManager &SourceMgr = PP.getSourceManager();
   Token Tok;
-  PP->Lex(Tok);
+  PP.Lex(Tok);
   while (Tok.isNot(tok::eof)) {
     // Ignore non-macro tokens.
     if (!Tok.getLocation().isMacroID()) {
-      PP->Lex(Tok);
+      PP.Lex(Tok);
       continue;
     }
     
@@ -424,7 +420,7 @@
       SourceMgr.getDecomposedFileLoc(LLoc);
     
     if (LLocInfo.first != FileID) {
-      PP->Lex(Tok);
+      PP.Lex(Tok);
       continue;
     }
     
@@ -442,11 +438,11 @@
                        strlen("<span class='macro'>"));
     RB.InsertTextBefore(TokOffs+TokLen, "</span>", strlen("</span>"));
     
-    std::string Expansion = PP->getSpelling(Tok);
+    std::string Expansion = PP.getSpelling(Tok);
     unsigned LineLen = Expansion.size();
     
     // Okay, eat this token, getting the next one.
-    PP->Lex(Tok);
+    PP.Lex(Tok);
     
     // Skip all the rest of the tokens that are part of this macro
     // instantiation.  It would be really nice to pop up a window with all the
@@ -461,9 +457,9 @@
       
       LineLen -= Expansion.size();
       // Escape any special characters in the token text.
-      Expansion += ' ' + EscapeText(PP->getSpelling(Tok));
+      Expansion += ' ' + EscapeText(PP.getSpelling(Tok));
       LineLen += Expansion.size();
-      PP->Lex(Tok);
+      PP.Lex(Tok);
     }
     
     // Insert the information about the expansion inside the macro span.
@@ -472,4 +468,9 @@
   }
 }
 
-
+void html::HighlightMacros(Rewriter &R, unsigned FileID,
+                           PreprocessorFactory &PPF) {
+  
+  llvm::OwningPtr<Preprocessor> PP(PPF.CreatePreprocessor());
+  HighlightMacros(R, FileID, *PP);
+}





More information about the cfe-commits mailing list