clang: clang::PPCallbacks Class Reference (original) (raw)

This interface provides a way to observe the actions of the preprocessor as it does its thing. More...

#include "[clang/Lex/PPCallbacks.h](PPCallbacks%5F8h%5Fsource.html)"

Public Types
enum FileChangeReason { EnterFile, ExitFile, SystemHeaderPragma, RenameFile }
enum class LexedFileChangeReason { EnterFile, ExitFile }
enum PragmaMessageKind { PMK_Message, PMK_Warning, PMK_Error }
Determines the kind of #pragma invoking a call to PragmaMessage. More...
enum PragmaWarningSpecifier { PWS_Default, PWS_Disable, PWS_Error, PWS_Once, PWS_Suppress, PWS_Level1, PWS_Level2, PWS_Level3, PWS_Level4 }
Callback invoked when a #pragma warning directive is read. More...
enum ConditionValueKind { CVK_NotEvaluated, CVK_False, CVK_True }
Public Member Functions
virtual ~PPCallbacks ()
virtual void FileChanged (SourceLocation Loc, FileChangeReason Reason, SrcMgr::CharacteristicKind FileType, FileID PrevFID=FileID())
Callback invoked whenever a source file is entered or exited.
virtual void LexedFileChanged (FileID FID, LexedFileChangeReason Reason, SrcMgr::CharacteristicKind FileType, FileID PrevFID, SourceLocation Loc)
Callback invoked whenever the Lexer moves to a different file for lexing.
virtual void FileSkipped (const FileEntryRef &SkippedFile, const Token &FilenameTok, SrcMgr::CharacteristicKind FileType)
Callback invoked whenever a source file is skipped as the result of header guard optimization.
virtual bool EmbedFileNotFound (StringRef FileName)
Callback invoked whenever the preprocessor cannot find a file for an embed directive.
virtual void EmbedDirective (SourceLocation HashLoc, StringRef FileName, bool IsAngled, OptionalFileEntryRef File, const LexEmbedParametersResult &Params)
Callback invoked whenever an embed directive has been processed, regardless of whether the embed will actually find a file.
virtual bool FileNotFound (StringRef FileName)
Callback invoked whenever the preprocessor cannot find a file for an inclusion directive.
virtual void InclusionDirective (SourceLocation HashLoc, const Token &IncludeTok, StringRef FileName, bool IsAngled, CharSourceRange FilenameRange, OptionalFileEntryRef File, StringRef SearchPath, StringRef RelativePath, const Module *SuggestedModule, bool ModuleImported, SrcMgr::CharacteristicKind FileType)
Callback invoked whenever an inclusion directive of any kind (#include, #import, etc.) has been processed, regardless of whether the inclusion will actually result in an inclusion.
virtual void EnteredSubmodule (Module *M, SourceLocation ImportLoc, bool ForPragma)
Callback invoked whenever a submodule was entered.
virtual void LeftSubmodule (Module *M, SourceLocation ImportLoc, bool ForPragma)
Callback invoked whenever a submodule was left.
virtual void moduleImport (SourceLocation ImportLoc, ModuleIdPath Path, const Module *Imported)
Callback invoked whenever there was an explicit module-import syntax.
virtual void EndOfMainFile ()
Callback invoked when the end of the main file is reached.
virtual void Ident (SourceLocation Loc, StringRef str)
Callback invoked when a #ident or #sccs directive is read.
virtual void PragmaDirective (SourceLocation Loc, PragmaIntroducerKind Introducer)
Callback invoked when start reading any pragma directive.
virtual void PragmaComment (SourceLocation Loc, const IdentifierInfo *Kind, StringRef Str)
Callback invoked when a #pragma comment directive is read.
virtual void PragmaMark (SourceLocation Loc, StringRef Trivia)
Callback invoked when a #pragma mark comment is read.
virtual void PragmaDetectMismatch (SourceLocation Loc, StringRef Name, StringRef Value)
Callback invoked when a #pragma detect_mismatch directive is read.
virtual void PragmaDebug (SourceLocation Loc, StringRef DebugType)
Callback invoked when a #pragma clang __debug directive is read.
virtual void PragmaMessage (SourceLocation Loc, StringRef Namespace, PragmaMessageKind Kind, StringRef Str)
Callback invoked when a #pragma message directive is read.
virtual void PragmaDiagnosticPush (SourceLocation Loc, StringRef Namespace)
Callback invoked when a #pragma gcc diagnostic push directive is read.
virtual void PragmaDiagnosticPop (SourceLocation Loc, StringRef Namespace)
Callback invoked when a #pragma gcc diagnostic pop directive is read.
virtual void PragmaDiagnostic (SourceLocation Loc, StringRef Namespace, diag::Severity mapping, StringRef Str)
Callback invoked when a #pragma gcc diagnostic directive is read.
virtual void PragmaOpenCLExtension (SourceLocation NameLoc, const IdentifierInfo *Name, SourceLocation StateLoc, unsigned State)
Called when an OpenCL extension is either disabled or enabled with a pragma.
virtual void PragmaWarning (SourceLocation Loc, PragmaWarningSpecifier WarningSpec, ArrayRef< int > Ids)
virtual void PragmaWarningPush (SourceLocation Loc, int Level)
Callback invoked when a #pragma warning(push) directive is read.
virtual void PragmaWarningPop (SourceLocation Loc)
Callback invoked when a #pragma warning(pop) directive is read.
virtual void PragmaExecCharsetPush (SourceLocation Loc, StringRef Str)
Callback invoked when a #pragma execution_character_set(push) directive is read.
virtual void PragmaExecCharsetPop (SourceLocation Loc)
Callback invoked when a #pragma execution_character_set(pop) directive is read.
virtual void PragmaAssumeNonNullBegin (SourceLocation Loc)
Callback invoked when a #pragma clang assume_nonnull begin directive is read.
virtual void PragmaAssumeNonNullEnd (SourceLocation Loc)
Callback invoked when a #pragma clang assume_nonnull end directive is read.
virtual void MacroExpands (const Token &MacroNameTok, const MacroDefinition &MD, SourceRange Range, const MacroArgs *Args)
Called by Preprocessor::HandleMacroExpandedIdentifier when a macro invocation is found.
virtual void MacroDefined (const Token &MacroNameTok, const MacroDirective *MD)
Hook called whenever a macro definition is seen.
virtual void MacroUndefined (const Token &MacroNameTok, const MacroDefinition &MD, const MacroDirective *Undef)
Hook called whenever a macro #undef is seen.
virtual void Defined (const Token &MacroNameTok, const MacroDefinition &MD, SourceRange Range)
Hook called whenever the 'defined' operator is seen.
virtual void HasEmbed (SourceLocation Loc, StringRef FileName, bool IsAngled, OptionalFileEntryRef File)
Hook called when a '__has_embed' directive is read.
virtual void HasInclude (SourceLocation Loc, StringRef FileName, bool IsAngled, OptionalFileEntryRef File, SrcMgr::CharacteristicKind FileType)
Hook called when a '__has_include' or '__has_include_next' directive is read.
virtual void SourceRangeSkipped (SourceRange Range, SourceLocation EndifLoc)
Hook called when a source range is skipped.
virtual void If (SourceLocation Loc, SourceRange ConditionRange, ConditionValueKind ConditionValue)
Hook called whenever an #if is seen.
virtual void Elif (SourceLocation Loc, SourceRange ConditionRange, ConditionValueKind ConditionValue, SourceLocation IfLoc)
Hook called whenever an #elif is seen.
virtual void Ifdef (SourceLocation Loc, const Token &MacroNameTok, const MacroDefinition &MD)
Hook called whenever an #ifdef is seen.
virtual void Elifdef (SourceLocation Loc, const Token &MacroNameTok, const MacroDefinition &MD)
Hook called whenever an #elifdef branch is taken.
virtual void Elifdef (SourceLocation Loc, SourceRange ConditionRange, SourceLocation IfLoc)
Hook called whenever an #elifdef is skipped.
virtual void Ifndef (SourceLocation Loc, const Token &MacroNameTok, const MacroDefinition &MD)
Hook called whenever an #ifndef is seen.
virtual void Elifndef (SourceLocation Loc, const Token &MacroNameTok, const MacroDefinition &MD)
Hook called whenever an #elifndef branch is taken.
virtual void Elifndef (SourceLocation Loc, SourceRange ConditionRange, SourceLocation IfLoc)
Hook called whenever an #elifndef is skipped.
virtual void Else (SourceLocation Loc, SourceLocation IfLoc)
Hook called whenever an #else is seen.
virtual void Endif (SourceLocation Loc, SourceLocation IfLoc)
Hook called whenever an #endif is seen.

This interface provides a way to observe the actions of the preprocessor as it does its thing.

Clients can define their hooks here to implement preprocessor level tools.

Definition at line 36 of file PPCallbacks.h.

ConditionValueKind

Enumerator
CVK_NotEvaluated
CVK_False
CVK_True

Definition at line 384 of file PPCallbacks.h.

FileChangeReason

Enumerator
EnterFile
ExitFile
SystemHeaderPragma
RenameFile

Definition at line 40 of file PPCallbacks.h.

LexedFileChangeReason

PragmaMessageKind

Determines the kind of #pragma invoking a call to PragmaMessage.

Enumerator
PMK_Message #pragma message has been invoked.
PMK_Warning #pragma GCC warning has been invoked.
PMK_Error #pragma GCC error has been invoked.

Definition at line 254 of file PPCallbacks.h.

PragmaWarningSpecifier

Callback invoked when a #pragma warning directive is read.

Enumerator
PWS_Default
PWS_Disable
PWS_Error
PWS_Once
PWS_Suppress
PWS_Level1
PWS_Level2
PWS_Level3
PWS_Level4

Definition at line 298 of file PPCallbacks.h.

PPCallbacks::~PPCallbacks ( ) virtualdefault

Defined()

Elif()

Hook called whenever an #elif is seen.

Parameters

Loc the source location of the directive.
ConditionRange The SourceRange of the expression being tested.
ConditionValue The evaluated value of the condition.
IfLoc the source location of the #if/#ifdef/#ifndef directive.

Reimplemented in clang::PPChainedCallbacks.

Definition at line 404 of file PPCallbacks.h.

Elifdef() [1/2]

Hook called whenever an #elifdef branch is taken.

Parameters

Loc the source location of the directive.
MacroNameTok Information on the token being tested.
MD The MacroDefinition if the name was a macro, null otherwise.

Reimplemented in clang::PPChainedCallbacks.

Definition at line 420 of file PPCallbacks.h.

Elifdef() [2/2]

Hook called whenever an #elifdef is skipped.

Parameters

Loc the source location of the directive.
ConditionRange The SourceRange of the expression being tested.
IfLoc the source location of the #if/#ifdef/#ifndef directive.

Reimplemented in clang::PPChainedCallbacks.

Definition at line 428 of file PPCallbacks.h.

Elifndef() [1/2]

Hook called whenever an #elifndef branch is taken.

Parameters

Loc the source location of the directive.
MacroNameTok Information on the token being tested.
MD The MacroDefinition if the name was a macro, null otherwise.

Reimplemented in clang::PPChainedCallbacks.

Definition at line 444 of file PPCallbacks.h.

Elifndef() [2/2]

Hook called whenever an #elifndef is skipped.

Parameters

Loc the source location of the directive.
ConditionRange The SourceRange of the expression being tested.
IfLoc the source location of the #if/#ifdef/#ifndef directive.

Reimplemented in clang::PPChainedCallbacks.

Definition at line 452 of file PPCallbacks.h.

Else()

Hook called whenever an #else is seen.

Parameters

Loc the source location of the directive.
IfLoc the source location of the #if/#ifdef/#ifndef directive.

Reimplemented in clang::PPChainedCallbacks.

Definition at line 459 of file PPCallbacks.h.

EmbedDirective()

Callback invoked whenever an embed directive has been processed, regardless of whether the embed will actually find a file.

Parameters

HashLoc The location of the '#' that starts the embed directive.
FileName The name of the file being included, as written in the source code.
IsAngled Whether the file name was enclosed in angle brackets; otherwise, it was enclosed in quotes.
File The actual file that may be included by this embed directive.
Params The parameters used by the directive.

Reimplemented in clang::PPChainedCallbacks.

Definition at line 111 of file PPCallbacks.h.

EmbedFileNotFound()

virtual bool clang::PPCallbacks::EmbedFileNotFound ( StringRef FileName) inlinevirtual

Callback invoked whenever the preprocessor cannot find a file for an embed directive.

Parameters

FileName The name of the file being included, as written in the source code.

Returns

true to indicate that the preprocessor should skip this file and not issue any diagnostic.

Reimplemented in clang::PPChainedCallbacks.

Definition at line 95 of file PPCallbacks.h.

Endif()

Hook called whenever an #endif is seen.

Parameters

Loc the source location of the directive.
IfLoc the source location of the #if/#ifdef/#ifndef directive.

Reimplemented in clang::PPChainedCallbacks.

Definition at line 465 of file PPCallbacks.h.

EndOfMainFile()

virtual void clang::PPCallbacks::EndOfMainFile ( ) inlinevirtual

EnteredSubmodule()

virtual void clang::PPCallbacks::EnteredSubmodule ( Module * M, SourceLocation ImportLoc, bool ForPragma ) inlinevirtual

Callback invoked whenever a submodule was entered.

Parameters

M The submodule we have entered.
ImportLoc The location of import directive token.
ForPragma If entering from pragma directive.

Reimplemented in clang::PPChainedCallbacks.

Definition at line 185 of file PPCallbacks.h.

FileChanged()

FileNotFound()

virtual bool clang::PPCallbacks::FileNotFound ( StringRef FileName) inlinevirtual

Callback invoked whenever the preprocessor cannot find a file for an inclusion directive.

Parameters

FileName The name of the file being included, as written in the source code.

Returns

true to indicate that the preprocessor should skip this file and not issue any diagnostic.

Reimplemented in clang::PPChainedCallbacks.

Definition at line 123 of file PPCallbacks.h.

FileSkipped()

Callback invoked whenever a source file is skipped as the result of header guard optimization.

Parameters

SkippedFile The file that is skipped instead of entering #include
FilenameTok The file name token in #include "FileName" directive or macro expanded file name token from #include MACRO(PARAMS) directive. Note that FilenameTok contains corresponding quotes/angles symbols.

Reimplemented in clang::PPChainedCallbacks.

Definition at line 83 of file PPCallbacks.h.

HasEmbed()

HasInclude()

Ident()

virtual void clang::PPCallbacks::Ident ( SourceLocation Loc, StringRef str ) inlinevirtual

Callback invoked when a #ident or #sccs directive is read.

Parameters

Loc The location of the directive.
str The text of the directive.

Reimplemented in clang::PPChainedCallbacks.

Definition at line 224 of file PPCallbacks.h.

If()

Hook called whenever an #if is seen.

Parameters

Loc the source location of the directive.
ConditionRange The SourceRange of the expression being tested.
ConditionValue The evaluated value of the condition.

Reimplemented in clang::PPChainedCallbacks.

Definition at line 394 of file PPCallbacks.h.

Ifdef()

Hook called whenever an #ifdef is seen.

Parameters

Loc the source location of the directive.
MacroNameTok Information on the token being tested.
MD The MacroDefinition if the name was a macro, null otherwise.

Reimplemented in clang::PPChainedCallbacks.

Definition at line 412 of file PPCallbacks.h.

Ifndef()

Hook called whenever an #ifndef is seen.

Parameters

Loc the source location of the directive.
MacroNameTok Information on the token being tested.
MD The MacroDefiniton if the name was a macro, null otherwise.

Reimplemented in clang::PPChainedCallbacks.

Definition at line 436 of file PPCallbacks.h.

InclusionDirective()

virtual void clang::PPCallbacks::InclusionDirective ( SourceLocation HashLoc, const Token & IncludeTok, StringRef FileName, bool IsAngled, CharSourceRange FilenameRange, OptionalFileEntryRef File, StringRef SearchPath, StringRef RelativePath, const Module * SuggestedModule, bool ModuleImported, SrcMgr::CharacteristicKind FileType ) inlinevirtual

Callback invoked whenever an inclusion directive of any kind (#include, #import, etc.) has been processed, regardless of whether the inclusion will actually result in an inclusion.

Parameters

HashLoc The location of the '#' that starts the inclusion directive.
IncludeTok The token that indicates the kind of inclusion directive, e.g., 'include' or 'import'.
FileName The name of the file being included, as written in the source code.
IsAngled Whether the file name was enclosed in angle brackets; otherwise, it was enclosed in quotes.
FilenameRange The character range of the quotes or angle brackets for the written file name.
File The actual file that may be included by this inclusion directive.
SearchPath Contains the search path which was used to find the file in the file system. If the file was found via an absolute include path, SearchPath will be empty. For framework includes, the SearchPath and RelativePath will be split up. For example, if an include of "Some/Some.h" is found via the framework path "path/to/Frameworks/Some.framework/Headers/Some.h", SearchPath will be "path/to/Frameworks/Some.framework/Headers" and RelativePath will be "Some.h".
RelativePath The path relative to SearchPath, at which the include file was found. This is equal to FileName except for framework includes.
SuggestedModule The module suggested for this header, if any.
ModuleImported Whether this include was translated into import of SuggestedModule.
FileType The characteristic kind, indicates whether a file or directory holds normal user code, system code, or system code which is implicitly 'extern "C"' in C++ mode.

Reimplemented in clang::PPChainedCallbacks, clang::tooling::dependencies::ModuleDepCollectorPP, and clang::MacroPPCallbacks.

Definition at line 168 of file PPCallbacks.h.

LeftSubmodule()

Callback invoked whenever a submodule was left.

Parameters

M The submodule we have left.
ImportLoc The location of import directive token.
ForPragma If entering from pragma directive.

Reimplemented in clang::PPChainedCallbacks.

Definition at line 196 of file PPCallbacks.h.

LexedFileChanged()

MacroDefined()

virtual void clang::PPCallbacks::MacroDefined ( const Token & MacroNameTok, const MacroDirective * MD ) inlinevirtual

MacroExpands()

MacroUndefined()

moduleImport()

Callback invoked whenever there was an explicit module-import syntax.

Parameters

ImportLoc The location of import directive token.
Path The identifiers (and their locations) of the module "path", e.g., "std.vector" would be split into "std" and "vector".
Imported The imported module; can be null if importing failed.

Reimplemented in clang::PPChainedCallbacks, and clang::tooling::dependencies::ModuleDepCollectorPP.

Definition at line 209 of file PPCallbacks.h.

PragmaAssumeNonNullBegin()

virtual void clang::PPCallbacks::PragmaAssumeNonNullBegin ( SourceLocation Loc) inlinevirtual

PragmaAssumeNonNullEnd()

virtual void clang::PPCallbacks::PragmaAssumeNonNullEnd ( SourceLocation Loc) inlinevirtual

PragmaComment()

PragmaDebug()

virtual void clang::PPCallbacks::PragmaDebug ( SourceLocation Loc, StringRef DebugType ) inlinevirtual

Callback invoked when a #pragma clang __debug directive is read.

Parameters

Loc The location of the debug directive.
DebugType The identifier following __debug.

Reimplemented in clang::PPChainedCallbacks.

Definition at line 250 of file PPCallbacks.h.

PragmaDetectMismatch()

virtual void clang::PPCallbacks::PragmaDetectMismatch ( SourceLocation Loc, StringRef Name, StringRef Value ) inlinevirtual

PragmaDiagnostic()

virtual void clang::PPCallbacks::PragmaDiagnostic ( SourceLocation Loc, StringRef Namespace, diag::Severity mapping, StringRef Str ) inlinevirtual

PragmaDiagnosticPop()

virtual void clang::PPCallbacks::PragmaDiagnosticPop ( SourceLocation Loc, StringRef Namespace ) inlinevirtual

PragmaDiagnosticPush()

virtual void clang::PPCallbacks::PragmaDiagnosticPush ( SourceLocation Loc, StringRef Namespace ) inlinevirtual

PragmaDirective()

PragmaExecCharsetPop()

virtual void clang::PPCallbacks::PragmaExecCharsetPop ( SourceLocation Loc) inlinevirtual

PragmaExecCharsetPush()

virtual void clang::PPCallbacks::PragmaExecCharsetPush ( SourceLocation Loc, StringRef Str ) inlinevirtual

PragmaMark()

virtual void clang::PPCallbacks::PragmaMark ( SourceLocation Loc, StringRef Trivia ) inlinevirtual

PragmaMessage()

Callback invoked when a #pragma message directive is read.

Parameters

Loc The location of the message directive.
Namespace The namespace of the message directive.
Kind The type of the message directive.
Str The text of the message directive.

Reimplemented in clang::PPChainedCallbacks.

Definition at line 270 of file PPCallbacks.h.

PragmaOpenCLExtension()

PragmaWarning()

PragmaWarningPop()

virtual void clang::PPCallbacks::PragmaWarningPop ( SourceLocation Loc) inlinevirtual

PragmaWarningPush()

virtual void clang::PPCallbacks::PragmaWarningPush ( SourceLocation Loc, int Level ) inlinevirtual

SourceRangeSkipped()

Hook called when a source range is skipped.

Parameters

Range The SourceRange that was skipped. The range begins at the #if/#else directive and ends after the #endif/#else directive.
EndifLoc The end location of the 'endif' token, which may precede the range skipped by the directive (e.g excluding comments after an 'endif').

Reimplemented in clang::PPChainedCallbacks, and clang::CoverageSourceInfo.

Definition at line 381 of file PPCallbacks.h.


The documentation for this class was generated from the following files: