|
clang 23.0.0git
|
Encapsulates changes to the "macros namespace" (the location where the macro name became active, the location where it was undefined, etc.). More...
#include "clang/Lex/MacroInfo.h"
Classes | |
| class | DefInfo |
Public Types | |
| enum | Kind { MD_Define , MD_Undefine , MD_Visibility } |
Public Member Functions | |
| Kind | getKind () const |
| SourceLocation | getLocation () const |
| void | setPrevious (MacroDirective *Prev) |
| Set previous definition of the macro with the same name. | |
| const MacroDirective * | getPrevious () const |
| Get previous definition of the macro with the same name. | |
| MacroDirective * | getPrevious () |
| Get previous definition of the macro with the same name. | |
| bool | isFromPCH () const |
| Return true if the macro directive was loaded from a PCH file. | |
| void | setIsFromPCH () |
| DefInfo | getDefinition () |
| Traverses the macro directives history and returns the next macro definition directive along with info about its undefined location (if there is one) and if it is public or private. | |
| const DefInfo | getDefinition () const |
| bool | isDefined () const |
| const MacroInfo * | getMacroInfo () const |
| MacroInfo * | getMacroInfo () |
| const DefInfo | findDirectiveAtLoc (SourceLocation L, const SourceManager &SM) const |
| Find macro definition active in the specified source location. | |
| void | dump () const |
Static Public Member Functions | |
| static bool | classof (const MacroDirective *) |
Protected Member Functions | |
| MacroDirective (Kind K, SourceLocation Loc) | |
Protected Attributes | |
| MacroDirective * | Previous = nullptr |
| Previous macro directive for the same identifier, or nullptr. | |
| SourceLocation | Loc |
| unsigned | MDKind: 2 |
| MacroDirective kind. | |
| unsigned | IsFromPCH: 1 |
| True if the macro directive was loaded from a PCH file. | |
| unsigned | IsPublic: 1 |
| Whether the macro has public visibility (when described in a module). | |
Encapsulates changes to the "macros namespace" (the location where the macro name became active, the location where it was undefined, etc.).
MacroDirectives, associated with an identifier, are used to model the macro history. Usually a macro definition (MacroInfo) is where a macro name becomes active (MacroDirective) but #pragma push_macro / pop_macro can create additional DefMacroDirectives for the same MacroInfo.
Definition at line 314 of file MacroInfo.h.
| Enumerator | |
|---|---|
| MD_Define | |
| MD_Undefine | |
| MD_Visibility | |
Definition at line 316 of file MacroInfo.h.
|
inlineprotected |
Definition at line 343 of file MacroInfo.h.
References false, IsFromPCH, IsPublic, Loc, MacroDirective(), MDKind, and true.
Referenced by clang::DefMacroDirective::classof(), classof(), clang::UndefMacroDirective::classof(), clang::VisibilityMacroDirective::classof(), clang::DefMacroDirective::DefMacroDirective(), getDefinition(), getDefinition(), getPrevious(), getPrevious(), MacroDirective(), setPrevious(), clang::UndefMacroDirective::UndefMacroDirective(), and clang::VisibilityMacroDirective::VisibilityMacroDirective().
|
inlinestatic |
Definition at line 429 of file MacroInfo.h.
References MacroDirective().
| LLVM_DUMP_METHOD void MacroDirective::dump | ( | ) | const |
Definition at line 228 of file MacroInfo.cpp.
References getKind(), getPrevious(), clang::isa(), IsFromPCH, IsPublic, MD_Define, MD_Undefine, and MD_Visibility.
| const MacroDirective::DefInfo MacroDirective::findDirectiveAtLoc | ( | SourceLocation | L, |
| const SourceManager & | SM ) const |
Find macro definition active in the specified source location.
If this macro was not defined there, return NULL.
Definition at line 215 of file MacroInfo.cpp.
References getDefinition(), clang::MacroDirective::DefInfo::getPreviousDefinition(), clang::SourceLocation::isValid(), and SM.
| MacroDirective::DefInfo MacroDirective::getDefinition | ( | ) |
Traverses the macro directives history and returns the next macro definition directive along with info about its undefined location (if there is one) and if it is public or private.
Definition at line 193 of file MacroInfo.cpp.
References clang::cast(), getPrevious(), clang::VisibilityMacroDirective::isPublic(), and MacroDirective().
Referenced by findDirectiveAtLoc(), getDefinition(), getMacroInfo(), getMacroInfo(), and isDefined().
|
inline |
Definition at line 407 of file MacroInfo.h.
References getDefinition(), and MacroDirective().
|
inline |
Definition at line 347 of file MacroInfo.h.
References MDKind.
Referenced by clang::DefMacroDirective::classof(), clang::UndefMacroDirective::classof(), clang::VisibilityMacroDirective::classof(), and dump().
|
inline |
|
inline |
Definition at line 420 of file MacroInfo.h.
References getDefinition(), and clang::MacroDirective::DefInfo::getMacroInfo().
|
inline |
Definition at line 417 of file MacroInfo.h.
References getDefinition(), and clang::MacroDirective::DefInfo::getMacroInfo().
Referenced by clang::MacroPPCallbacks::MacroDefined(), InjectRootSignatureCallback::MacroDefined(), and shouldIgnoreMacro().
|
inline |
Get previous definition of the macro with the same name.
Definition at line 358 of file MacroInfo.h.
References MacroDirective(), and Previous.
|
inline |
Get previous definition of the macro with the same name.
Definition at line 355 of file MacroInfo.h.
References MacroDirective(), and Previous.
Referenced by clang::Preprocessor::appendMacroDirective(), dump(), getDefinition(), and clang::Preprocessor::LeaveSubmodule().
|
inline |
Definition at line 411 of file MacroInfo.h.
References getDefinition().
Referenced by clang::Preprocessor::appendMacroDirective(), and clang::Preprocessor::setLoadedMacroDirective().
|
inline |
Return true if the macro directive was loaded from a PCH file.
Definition at line 361 of file MacroInfo.h.
References IsFromPCH.
|
inline |
Definition at line 363 of file MacroInfo.h.
References IsFromPCH.
|
inline |
Set previous definition of the macro with the same name.
Definition at line 352 of file MacroInfo.h.
References MacroDirective(), and Previous.
Referenced by clang::Preprocessor::appendMacroDirective(), clang::ASTReader::resolvePendingMacro(), and clang::Preprocessor::setLoadedMacroDirective().
|
protected |
True if the macro directive was loaded from a PCH file.
Definition at line 334 of file MacroInfo.h.
Referenced by dump(), isFromPCH(), MacroDirective(), and setIsFromPCH().
|
protected |
Whether the macro has public visibility (when described in a module).
Definition at line 341 of file MacroInfo.h.
Referenced by dump(), clang::VisibilityMacroDirective::isPublic(), MacroDirective(), and clang::VisibilityMacroDirective::VisibilityMacroDirective().
|
protected |
Definition at line 326 of file MacroInfo.h.
Referenced by clang::DefMacroDirective::DefMacroDirective(), getLocation(), MacroDirective(), and clang::VisibilityMacroDirective::VisibilityMacroDirective().
|
protected |
MacroDirective kind.
Definition at line 330 of file MacroInfo.h.
Referenced by getKind(), and MacroDirective().
|
protected |
Previous macro directive for the same identifier, or nullptr.
Definition at line 324 of file MacroInfo.h.
Referenced by getPrevious(), getPrevious(), and setPrevious().