From a960be4bd435af48fc656391534d7ad5fab2700f Mon Sep 17 00:00:00 2001 From: Ted Kremenek Date: Fri, 18 Apr 2008 05:34:33 +0000 Subject: [PATCH] Provide a version of html::HighlightMacros that takes a Preprocessor&. llvm-svn: 49896 --- clang/include/clang/Rewrite/HTMLRewrite.h | 8 +++++- clang/lib/Rewrite/HTMLRewrite.cpp | 33 ++++++++++++----------- 2 files changed, 24 insertions(+), 17 deletions(-) diff --git a/clang/include/clang/Rewrite/HTMLRewrite.h b/clang/include/clang/Rewrite/HTMLRewrite.h index 8c708400ac80..a47d569eb27d 100644 --- a/clang/include/clang/Rewrite/HTMLRewrite.h +++ b/clang/include/clang/Rewrite/HTMLRewrite.h @@ -75,8 +75,14 @@ namespace html { /// 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, PreprocessorFactory &PPF); + void HighlightMacros(Rewriter &R, unsigned FileID, Preprocessor &PP); + + void HighlightMacros(Rewriter &R, unsigned FileID, PreprocessorFactory &PPF); + + + + } // end html namespace diff --git a/clang/lib/Rewrite/HTMLRewrite.cpp b/clang/lib/Rewrite/HTMLRewrite.cpp index d0d1ff0b935e..c854965c4f8d 100644 --- a/clang/lib/Rewrite/HTMLRewrite.cpp +++ b/clang/lib/Rewrite/HTMLRewrite.cpp @@ -393,28 +393,24 @@ void html::SyntaxHighlight(Rewriter &R, unsigned FileID, Preprocessor &PP) { /// 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 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 @@ void html::HighlightMacros(Rewriter &R, unsigned FileID, SourceMgr.getDecomposedFileLoc(LLoc); if (LLocInfo.first != FileID) { - PP->Lex(Tok); + PP.Lex(Tok); continue; } @@ -442,11 +438,11 @@ void html::HighlightMacros(Rewriter &R, unsigned FileID, strlen("")); RB.InsertTextBefore(TokOffs+TokLen, "", strlen("")); - 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 @@ void html::HighlightMacros(Rewriter &R, unsigned FileID, 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, } } - +void html::HighlightMacros(Rewriter &R, unsigned FileID, + PreprocessorFactory &PPF) { + + llvm::OwningPtr PP(PPF.CreatePreprocessor()); + HighlightMacros(R, FileID, *PP); +}