From: Chris Lattner Date: Sun, 12 Apr 2009 01:39:54 +0000 (+0000) Subject: add a ppcallback hook for macro definitions. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f4a72b07747cd6ae1a9f6974e148ae504c879349;p=clang add a ppcallback hook for macro definitions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68883 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Lex/PPCallbacks.h b/include/clang/Lex/PPCallbacks.h index cd7c5e4215..d2e3f353cb 100644 --- a/include/clang/Lex/PPCallbacks.h +++ b/include/clang/Lex/PPCallbacks.h @@ -55,10 +55,15 @@ public: const std::string &Str) { } - /// MacroExpands - This is called Preprocessor::HandleMacroExpandedIdentifier - /// when a macro invocation is found. + /// MacroExpands - This is called by + /// Preprocessor::HandleMacroExpandedIdentifier when a macro invocation is + /// found. virtual void MacroExpands(const Token &Id, const MacroInfo* MI) { } + + /// MacroDefined - This hook is called whenever a macro definition is seen. + virtual void MacroDefined(const IdentifierInfo *II, const MacroInfo *MI) { + } }; } // end namespace clang diff --git a/lib/Lex/PPDirectives.cpp b/lib/Lex/PPDirectives.cpp index ba321a7f67..52f673c6d3 100644 --- a/lib/Lex/PPDirectives.cpp +++ b/lib/Lex/PPDirectives.cpp @@ -1402,6 +1402,10 @@ void Preprocessor::HandleDefineDirective(Token &DefineTok) { } setMacroInfo(MacroNameTok.getIdentifierInfo(), MI); + + // If the callbacks want to know, tell them about the macro definition. + if (Callbacks) + Callbacks->MacroDefined(MacroNameTok.getIdentifierInfo(), MI); } /// HandleUndefDirective - Implements #undef.