aboutsummaryrefslogtreecommitdiff
path: root/Driver/HTMLDiagnostics.cpp
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2008-04-17 22:31:54 +0000
committerTed Kremenek <kremenek@apple.com>2008-04-17 22:31:54 +0000
commit339b9c27759d7b6a53e2370f83f66e78b3254595 (patch)
tree15e66daac43c681523a05a5df269e2a6d9f19c8d /Driver/HTMLDiagnostics.cpp
parent1ee8d6ffabdec9288dbc87773913fde5e2938772 (diff)
class Preprocessor: Now owns the "predefines" char*; it deletes [] it in its dstor.
clang.cpp: InitializePreprocessor now makes a copy of the contents of PredefinesBuffer and passes it to the preprocessor object. clang.cpp: DriverPreprocessorFactory now calls "InitializePreprocessor" instead of this being done in main(). html::HighlightMacros() now takes a PreprocessorFactory, allowing it to conjure up a new Preprocessor to highlight macros. class HTMLDiagnostics now takes a PreprocessorFactory* that it can use for html::HighlightMacros(). Updated clients of HTMLDiagnostics to use this new interface. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49875 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'Driver/HTMLDiagnostics.cpp')
-rw-r--r--Driver/HTMLDiagnostics.cpp20
1 files changed, 11 insertions, 9 deletions
diff --git a/Driver/HTMLDiagnostics.cpp b/Driver/HTMLDiagnostics.cpp
index 78381f9070..4d95c17b67 100644
--- a/Driver/HTMLDiagnostics.cpp
+++ b/Driver/HTMLDiagnostics.cpp
@@ -38,8 +38,10 @@ class VISIBILITY_HIDDEN HTMLDiagnostics : public PathDiagnosticClient {
llvm::sys::Path Directory, FilePrefix;
bool createdDir, noDir;
Preprocessor* PP;
+ PreprocessorFactory* PPF;
public:
- HTMLDiagnostics(const std::string& prefix, Preprocessor* pp = NULL);
+ HTMLDiagnostics(const std::string& prefix, Preprocessor* pp,
+ PreprocessorFactory* ppf);
virtual ~HTMLDiagnostics() {}
@@ -53,18 +55,20 @@ public:
} // end anonymous namespace
-HTMLDiagnostics::HTMLDiagnostics(const std::string& prefix, Preprocessor* pp)
+HTMLDiagnostics::HTMLDiagnostics(const std::string& prefix, Preprocessor* pp,
+ PreprocessorFactory* ppf)
: Directory(prefix), FilePrefix(prefix), createdDir(false), noDir(false),
- PP(pp) {
+ PP(pp), PPF(ppf) {
// All html files begin with "report"
FilePrefix.appendComponent("report");
}
PathDiagnosticClient*
-clang::CreateHTMLDiagnosticClient(const std::string& prefix, Preprocessor* PP) {
+clang::CreateHTMLDiagnosticClient(const std::string& prefix, Preprocessor* PP,
+ PreprocessorFactory* PPF) {
- return new HTMLDiagnostics(prefix, PP);
+ return new HTMLDiagnostics(prefix, PP, PPF);
}
//===----------------------------------------------------------------------===//
@@ -122,10 +126,8 @@ void HTMLDiagnostics::HandlePathDiagnostic(const PathDiagnostic& D) {
// We might not have a preprocessor if we come from a deserialized AST file,
// for example.
- if (PP) {
- html::SyntaxHighlight(R, FileID, *PP);
- // html::HighlightMacros(R, FileID, *PP);
- }
+ if (PP) html::SyntaxHighlight(R, FileID, *PP);
+ if (PPF) html::HighlightMacros(R, FileID, *PPF);
// Get the full directory name of the analyzed file.