clang  15.0.0git
Classes | Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
clang::MacroDirective Class Reference

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"

Inheritance diagram for clang::MacroDirective:
Inheritance graph
[legend]
Collaboration diagram for clang::MacroDirective:
Collaboration graph
[legend]

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. More...
 
const MacroDirectivegetPrevious () const
 Get previous definition of the macro with the same name. More...
 
MacroDirectivegetPrevious ()
 Get previous definition of the macro with the same name. More...
 
bool isFromPCH () const
 Return true if the macro directive was loaded from a PCH file. More...
 
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. More...
 
const DefInfo getDefinition () const
 
bool isDefined () const
 
const MacroInfogetMacroInfo () const
 
MacroInfogetMacroInfo ()
 
const DefInfo findDirectiveAtLoc (SourceLocation L, const SourceManager &SM) const
 Find macro definition active in the specified source location. More...
 
void dump () const
 

Static Public Member Functions

static bool classof (const MacroDirective *)
 

Protected Member Functions

 MacroDirective (Kind K, SourceLocation Loc)
 

Protected Attributes

MacroDirectivePrevious = nullptr
 Previous macro directive for the same identifier, or nullptr. More...
 
SourceLocation Loc
 
unsigned MDKind: 2
 MacroDirective kind. More...
 
unsigned IsFromPCH: 1
 True if the macro directive was loaded from a PCH file. More...
 
unsigned IsPublic: 1
 Whether the macro has public visibility (when described in a module). More...
 

Detailed Description

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.

Member Enumeration Documentation

◆ Kind

Enumerator
MD_Define 
MD_Undefine 
MD_Visibility 

Definition at line 316 of file MacroInfo.h.

Constructor & Destructor Documentation

◆ MacroDirective()

clang::MacroDirective::MacroDirective ( Kind  K,
SourceLocation  Loc 
)
inlineprotected

Definition at line 340 of file MacroInfo.h.

Member Function Documentation

◆ classof()

static bool clang::MacroDirective::classof ( const MacroDirective )
inlinestatic

Definition at line 426 of file MacroInfo.h.

◆ dump()

LLVM_DUMP_METHOD void MacroDirective::dump ( ) const

Definition at line 235 of file MacroInfo.cpp.

◆ findDirectiveAtLoc()

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 222 of file MacroInfo.cpp.

References getDefinition(), clang::MacroDirective::DefInfo::getPreviousDefinition(), clang::SourceLocation::isValid(), and SM.

◆ getDefinition() [1/2]

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 198 of file MacroInfo.cpp.

References getPrevious(), and clang::VisibilityMacroDirective::isPublic().

Referenced by findDirectiveAtLoc(), getDefinition(), getMacroInfo(), and isDefined().

◆ getDefinition() [2/2]

const DefInfo clang::MacroDirective::getDefinition ( ) const
inline

Definition at line 404 of file MacroInfo.h.

References getDefinition().

◆ getKind()

Kind clang::MacroDirective::getKind ( ) const
inline

◆ getLocation()

SourceLocation clang::MacroDirective::getLocation ( ) const
inline

Definition at line 346 of file MacroInfo.h.

References Loc.

Referenced by clang::MacroDirective::DefInfo::getLocation(), and shouldIgnoreMacro().

◆ getMacroInfo() [1/2]

MacroInfo* clang::MacroDirective::getMacroInfo ( )
inline

Definition at line 417 of file MacroInfo.h.

References getDefinition(), and clang::MacroDirective::DefInfo::getMacroInfo().

◆ getMacroInfo() [2/2]

const MacroInfo* clang::MacroDirective::getMacroInfo ( ) const
inline

Definition at line 414 of file MacroInfo.h.

References getDefinition(), and clang::MacroDirective::DefInfo::getMacroInfo().

Referenced by shouldIgnoreMacro().

◆ getPrevious() [1/2]

MacroDirective* clang::MacroDirective::getPrevious ( )
inline

Get previous definition of the macro with the same name.

Definition at line 355 of file MacroInfo.h.

References Previous.

◆ getPrevious() [2/2]

const MacroDirective* clang::MacroDirective::getPrevious ( ) const
inline

Get previous definition of the macro with the same name.

Definition at line 352 of file MacroInfo.h.

References Previous.

Referenced by clang::Preprocessor::appendMacroDirective(), getDefinition(), and clang::Preprocessor::LeaveSubmodule().

◆ isDefined()

bool clang::MacroDirective::isDefined ( ) const
inline

◆ isFromPCH()

bool clang::MacroDirective::isFromPCH ( ) const
inline

Return true if the macro directive was loaded from a PCH file.

Definition at line 358 of file MacroInfo.h.

References IsFromPCH.

◆ setIsFromPCH()

void clang::MacroDirective::setIsFromPCH ( )
inline

Definition at line 360 of file MacroInfo.h.

References IsFromPCH.

◆ setPrevious()

void clang::MacroDirective::setPrevious ( MacroDirective Prev)
inline

Set previous definition of the macro with the same name.

Definition at line 349 of file MacroInfo.h.

References Previous.

Referenced by clang::Preprocessor::appendMacroDirective(), clang::ASTReader::resolvePendingMacro(), and clang::Preprocessor::setLoadedMacroDirective().

Member Data Documentation

◆ IsFromPCH

unsigned clang::MacroDirective::IsFromPCH
protected

True if the macro directive was loaded from a PCH file.

Definition at line 332 of file MacroInfo.h.

Referenced by isFromPCH(), and setIsFromPCH().

◆ IsPublic

unsigned clang::MacroDirective::IsPublic
protected

Whether the macro has public visibility (when described in a module).

Definition at line 338 of file MacroInfo.h.

Referenced by clang::VisibilityMacroDirective::isPublic(), and clang::VisibilityMacroDirective::VisibilityMacroDirective().

◆ Loc

SourceLocation clang::MacroDirective::Loc
protected

Definition at line 326 of file MacroInfo.h.

Referenced by getLocation().

◆ MDKind

unsigned clang::MacroDirective::MDKind
protected

MacroDirective kind.

Definition at line 329 of file MacroInfo.h.

Referenced by getKind().

◆ Previous

MacroDirective* clang::MacroDirective::Previous = nullptr
protected

Previous macro directive for the same identifier, or nullptr.

Definition at line 324 of file MacroInfo.h.

Referenced by getPrevious(), and setPrevious().


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