clang 20.0.0git
Classes | Public Member Functions | List of all members
clang::PPConditionalDirectiveRecord Class Reference

Records preprocessor conditional directive regions and allows querying in which region source locations belong to. More...

#include "clang/Lex/PPConditionalDirectiveRecord.h"

Inheritance diagram for clang::PPConditionalDirectiveRecord:
Inheritance graph
[legend]

Public Member Functions

 PPConditionalDirectiveRecord (SourceManager &SM)
 Construct a new preprocessing record.
 
size_t getTotalMemory () const
 
SourceManagergetSourceManager () const
 
bool rangeIntersectsConditionalDirective (SourceRange Range) const
 Returns true if the given range intersects with a conditional directive.
 
bool areInDifferentConditionalDirectiveRegion (SourceLocation LHS, SourceLocation RHS) const
 Returns true if the given locations are in different regions, separated by conditional directive blocks.
 
SourceLocation findConditionalDirectiveRegionLoc (SourceLocation Loc) const
 
- Public Member Functions inherited from clang::PPCallbacks
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.
 

Additional Inherited Members

- Public Types inherited from clang::PPCallbacks
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 }
 

Detailed Description

Records preprocessor conditional directive regions and allows querying in which region source locations belong to.

Definition at line 25 of file PPConditionalDirectiveRecord.h.

Constructor & Destructor Documentation

◆ PPConditionalDirectiveRecord()

PPConditionalDirectiveRecord::PPConditionalDirectiveRecord ( SourceManager SM)
explicit

Construct a new preprocessing record.

Definition at line 18 of file PPConditionalDirectiveRecord.cpp.

Member Function Documentation

◆ areInDifferentConditionalDirectiveRegion()

bool clang::PPConditionalDirectiveRecord::areInDifferentConditionalDirectiveRegion ( SourceLocation  LHS,
SourceLocation  RHS 
) const
inline

Returns true if the given locations are in different regions, separated by conditional directive blocks.

Definition at line 79 of file PPConditionalDirectiveRecord.h.

References findConditionalDirectiveRegionLoc().

Referenced by clang::edit::Commit::insertFromRange().

◆ findConditionalDirectiveRegionLoc()

SourceLocation PPConditionalDirectiveRecord::findConditionalDirectiveRegionLoc ( SourceLocation  Loc) const

◆ getSourceManager()

SourceManager & clang::PPConditionalDirectiveRecord::getSourceManager ( ) const
inline

Definition at line 70 of file PPConditionalDirectiveRecord.h.

◆ getTotalMemory()

size_t PPConditionalDirectiveRecord::getTotalMemory ( ) const

Definition at line 139 of file PPConditionalDirectiveRecord.cpp.

◆ rangeIntersectsConditionalDirective()

bool PPConditionalDirectiveRecord::rangeIntersectsConditionalDirective ( SourceRange  Range) const

Returns true if the given range intersects with a conditional directive.

if a #if/#endif block is fully contained within the range, this function will return false.

Definition at line 23 of file PPConditionalDirectiveRecord.cpp.

References clang::SourceRange::getBegin(), clang::SourceRange::getEnd(), clang::SourceManager::isBeforeInTranslationUnit(), clang::SourceRange::isInvalid(), and Range.


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