clang 8.0.0

Public Types | Public Member Functions | Friends | List of all members
clang::MacroInfo Class Reference

Encapsulates the data about a macro definition (e.g. More...

`#include "clang/Lex/MacroInfo.h"`

## Public Types
using | param_iterator = IdentifierInfo *const *
| Parameters - The list of parameters for a function-like macro. More...
using | tokens_iterator = SmallVectorImpl< Token >::const_iterator

## Public Member Functions
SourceLocation | getDefinitionLoc () const
| Return the location that the macro was defined at. More...
void | setDefinitionEndLoc (SourceLocation EndLoc)
| Set the location of the last token in the macro. More...
SourceLocation | getDefinitionEndLoc () const
| Return the location of the last token in the macro. More...
unsigned | getDefinitionLength (const SourceManager &SM) const
| Get length in characters of the macro definition. More...
bool | isIdenticalTo (const MacroInfo &Other, Preprocessor &PP, bool Syntactically) const
| Return true if the specified macro definition is equal to this macro in spelling, arguments, and whitespace. More...
void | setIsBuiltinMacro (bool Val=true)
| Set or clear the isBuiltinMacro flag. More...
void | setIsUsed (bool Val)
| Set the value of the IsUsed flag. More...
void | setIsAllowRedefinitionsWithoutWarning (bool Val)
| Set the value of the IsAllowRedefinitionsWithoutWarning flag. More...
void | setIsWarnIfUnused (bool val)
| Set the value of the IsWarnIfUnused flag. More...
void | setParameterList (ArrayRef< IdentifierInfo *> List, llvm::BumpPtrAllocator &PPAllocator)
| Set the specified list of identifiers as the parameter list for this macro. More...
bool | param_empty () const
param_iterator | param_begin () const
param_iterator | param_end () const
unsigned | getNumParams () const
ArrayRef< const IdentifierInfo * > | params () const
int | getParameterNum (const IdentifierInfo *Arg) const
| Return the parameter number of the specified identifier, or -1 if the identifier is not a formal parameter identifier. More...
void | setIsFunctionLike ()
| Function/Object-likeness. More...
bool | isFunctionLike () const
bool | isObjectLike () const
void | setIsC99Varargs ()
| Varargs querying methods. This can only be set for function-like macros. More...
void | setIsGNUVarargs ()
bool | isC99Varargs () const
bool | isGNUVarargs () const
bool | isVariadic () const
bool | isBuiltinMacro () const
| Return true if this macro requires processing before expansion. More...
bool | hasCommaPasting () const
void | setHasCommaPasting ()
bool | isUsed () const
| Return false if this macro is defined in the main file and has not yet been used. More...
bool | isAllowRedefinitionsWithoutWarning () const
| Return true if this macro can be redefined without warning. More...
bool | isWarnIfUnused () const
| Return true if we should emit a warning if the macro is unused. More...
unsigned | getNumTokens () const
| Return the number of tokens that this macro expands to. More...
const Token & | getReplacementToken (unsigned Tok) const
tokens_iterator | tokens_begin () const
tokens_iterator | tokens_end () const
bool | tokens_empty () const
ArrayRef< Token > | tokens () const
void | AddTokenToBody (const Token &Tok)
| Add the specified token to the replacement text for the macro. More...
bool | isEnabled () const
| Return true if this macro is enabled. More...
void | EnableMacro ()
void | DisableMacro ()
bool | isUsedForHeaderGuard () const
| Determine whether this macro was used for a header guard. More...
void | setUsedForHeaderGuard (bool Val)
void | dump () const

## Friends
class | Preprocessor

## Detailed Description

Encapsulates the data about a macro definition (e.g.

its tokens).

There's an instance of this class for every #define.

Definition at line 40 of file MacroInfo.h.

## Member Typedef Documentation

## ◆ param_iterator

using clang::MacroInfo::param_iterator = IdentifierInfo *const *

Parameters - The list of parameters for a function-like macro.

This can be empty, for, e.g. "#define X()".

Definition at line 179 of file MacroInfo.h.

## ◆ tokens_iterator

using clang::MacroInfo::tokens_iterator = SmallVectorImpl<Token>::const_iterator

Definition at line 241 of file MacroInfo.h.

## Member Function Documentation

## ◆ AddTokenToBody()

void clang::MacroInfo::AddTokenToBody | ( | const Token & | Tok | ) |
| inline

Add the specified token to the replacement text for the macro.

Definition at line 249 of file MacroInfo.h.

Referenced by isConfigurationPattern().

## ◆ DisableMacro()

void clang::MacroInfo::DisableMacro | ( |  | ) |
| inline

Definition at line 266 of file MacroInfo.h.

Referenced by clang::TokenLexer::Init().

## ◆ dump()

LLVM_DUMP_METHOD void MacroInfo::dump | ( |  | ) | const

Definition at line 133 of file MacroInfo.cpp.

References clang::First, clang::tok::getPunctuatorSpelling(), and clang::format::Tok.

Referenced by clang::MacroDirective::getMacroInfo(), and setUsedForHeaderGuard().

## ◆ EnableMacro()

void clang::MacroInfo::EnableMacro | ( |  | ) |
| inline

Definition at line 261 of file MacroInfo.h.

Referenced by clang::TokenLexer::isParsingPreprocessorDirective(), and clang::TokenLexer::Lex().

## ◆ getDefinitionEndLoc()

SourceLocation clang::MacroInfo::getDefinitionEndLoc | ( |  | ) | const
| inline

Return the location of the last token in the macro.

Definition at line 130 of file MacroInfo.h.

Referenced by clang::PreprocessingRecord::findMacroDefinition().

## ◆ getDefinitionLength()

unsigned clang::MacroInfo::getDefinitionLength | ( | const SourceManager & | SM | ) | const
| inline

Get length in characters of the macro definition.

Definition at line 133 of file MacroInfo.h.

References isIdenticalTo().

Referenced by clang::TokenLexer::Init().

## ◆ getDefinitionLoc()

SourceLocation clang::MacroInfo::getDefinitionLoc | ( |  | ) | const
| inline

Return the location that the macro was defined at.

Definition at line 124 of file MacroInfo.h.

Referenced by clang::Preprocessor::appendDefMacroDirective(), clang::PreprocessingRecord::findMacroDefinition(), GenerateNewArgTokens(), isConfigurationPattern(), isTrivialSingleTokenExpansion(), and clang::Preprocessor::markMacroAsUsed().

## ◆ getNumParams()

unsigned clang::MacroInfo::getNumParams | ( |  | ) | const
| inline

Definition at line 183 of file MacroInfo.h.

Referenced by clang::MacroArgs::create(), GenerateNewArgTokens(), clang::TokenLexer::Init(), and isIdenticalTo().

## ◆ getNumTokens()

unsigned clang::MacroInfo::getNumTokens | ( |  | ) | const
| inline

Return the number of tokens that this macro expands to.

Definition at line 234 of file MacroInfo.h.

Referenced by clang::Preprocessor::DumpMacro(), isConfigurationPattern(), and isTrivialSingleTokenExpansion().

## ◆ getParameterNum()

int clang::MacroInfo::getParameterNum | ( | const IdentifierInfo * | Arg | ) | const
| inline

Return the parameter number of the specified identifier, or -1 if the identifier is not a formal parameter identifier.

Definition at line 190 of file MacroInfo.h.

References param_begin(), and param_end().

Referenced by clang::TokenLexer::Init(), isConfigurationPattern(), and isIdenticalTo().

## ◆ getReplacementToken()

const Token& clang::MacroInfo::getReplacementToken | ( | unsigned | Tok | ) | const
| inline

Definition at line 236 of file MacroInfo.h.

References clang::format::Tok.

Referenced by clang::Preprocessor::DumpMacro(), isConfigurationPattern(), and isTrivialSingleTokenExpansion().

## ◆ hasCommaPasting()

bool clang::MacroInfo::hasCommaPasting | ( |  | ) | const
| inline

Definition at line 218 of file MacroInfo.h.

Referenced by GenerateNewArgTokens().

## ◆ isAllowRedefinitionsWithoutWarning()

bool clang::MacroInfo::isAllowRedefinitionsWithoutWarning | ( |  | ) | const
| inline

Return true if this macro can be redefined without warning.

Definition at line 226 of file MacroInfo.h.

## ◆ isBuiltinMacro()

bool clang::MacroInfo::isBuiltinMacro | ( |  | ) | const
| inline

Return true if this macro requires processing before expansion.

This is true only for builtin macro, such as __LINE__, whose values are not given by fixed textual expansions. Regular predefined macros from the "<built-in>" buffer are not reported as builtins by this function.

Definition at line 216 of file MacroInfo.h.

Referenced by clang::Preprocessor::CheckMacroName(), DoPrintMacros(), clang::PreprocessingRecord::findMacroDefinition(), clang::ASTWriter::getMacroID(), and isTrivialSingleTokenExpansion().

## ◆ isC99Varargs()

bool clang::MacroInfo::isC99Varargs | ( |  | ) | const
| inline

Definition at line 206 of file MacroInfo.h.

Referenced by clang::CodeCompletionResult::CreateCodeCompletionStringForMacro(), isConfigurationPattern(), and isIdenticalTo().

## ◆ isEnabled()

bool clang::MacroInfo::isEnabled | ( |  | ) | const
| inline

Return true if this macro is enabled.

In other words, that we are not currently in an expansion of this macro.

Definition at line 259 of file MacroInfo.h.

Referenced by GenerateNewArgTokens().

## ◆ isFunctionLike()

bool clang::MacroInfo::isFunctionLike | ( |  | ) | const
| inline

Definition at line 200 of file MacroInfo.h.

Referenced by clang::MacroArgs::create(), clang::CodeCompletionResult::CreateCodeCompletionStringForMacro(), clang::TokenLexer::Init(), isIdenticalTo(), isTrivialSingleTokenExpansion(), and PrintMacroDefinition().

## ◆ isGNUVarargs()

bool clang::MacroInfo::isGNUVarargs | ( |  | ) | const
| inline

Definition at line 207 of file MacroInfo.h.

Referenced by isIdenticalTo(), and PrintMacroDefinition().

## ◆ isIdenticalTo()

bool MacroInfo::isIdenticalTo | ( | const MacroInfo & | Other,
|  | Preprocessor & | PP,
|  | bool | Syntactically
| ) |  | const

Return true if the specified macro definition is equal to this macro in spelling, arguments, and whitespace.

Parameters

  Syntactically | if true, the macro definitions can be identical even if they use different identifiers for the function macro parameters. Otherwise the comparison is lexical and this implements the rules in C99 6.10.3.

Definition at line 75 of file MacroInfo.cpp.

References clang::Token::getIdentifierInfo(), clang::Token::getKind(), getNumParams(), getParameterNum(), clang::Preprocessor::getSpelling(), clang::Token::hasLeadingSpace(), clang::Token::isAtStartOfLine(), isC99Varargs(), isFunctionLike(), isGNUVarargs(), and param_begin().

Referenced by getDefinitionLength(), and isConfigurationPattern().

## ◆ isObjectLike()

bool clang::MacroInfo::isObjectLike | ( |  | ) | const
| inline

Definition at line 201 of file MacroInfo.h.

Referenced by isConfigurationPattern(), and isTrivialSingleTokenExpansion().

## ◆ isUsed()

bool clang::MacroInfo::isUsed | ( |  | ) | const
| inline

Return false if this macro is defined in the main file and has not yet been used.

Definition at line 223 of file MacroInfo.h.

Referenced by isConfigurationPattern(), and clang::Preprocessor::markMacroAsUsed().

## ◆ isUsedForHeaderGuard()

bool clang::MacroInfo::isUsedForHeaderGuard | ( |  | ) | const
| inline

Determine whether this macro was used for a header guard.

Definition at line 272 of file MacroInfo.h.

Referenced by AddMacroResults().

## ◆ isVariadic()

bool clang::MacroInfo::isVariadic | ( |  | ) | const
| inline

Definition at line 208 of file MacroInfo.h.

Referenced by clang::CodeCompletionResult::CreateCodeCompletionStringForMacro(), GenerateNewArgTokens(), clang::TokenLexer::Init(), and clang::MacroArgs::invokedWithVariadicArgument().

## ◆ isWarnIfUnused()

bool clang::MacroInfo::isWarnIfUnused | ( |  | ) | const
| inline

Return true if we should emit a warning if the macro is unused.

Definition at line 231 of file MacroInfo.h.

Referenced by isConfigurationPattern(), and clang::Preprocessor::markMacroAsUsed().

## ◆ param_begin()

param_iterator clang::MacroInfo::param_begin | ( |  | ) | const
| inline

Definition at line 181 of file MacroInfo.h.

Referenced by clang::CodeCompletionResult::CreateCodeCompletionStringForMacro(), getParameterNum(), isIdenticalTo(), isTrivialSingleTokenExpansion(), and PrintMacroDefinition().

## ◆ param_empty()

bool clang::MacroInfo::param_empty | ( |  | ) | const
| inline

Definition at line 180 of file MacroInfo.h.

Referenced by PrintMacroDefinition().

## ◆ param_end()

param_iterator clang::MacroInfo::param_end | ( |  | ) | const
| inline

Definition at line 182 of file MacroInfo.h.

Referenced by clang::CodeCompletionResult::CreateCodeCompletionStringForMacro(), getParameterNum(), isTrivialSingleTokenExpansion(), and PrintMacroDefinition().

## ◆ params()

ArrayRef<const IdentifierInfo *> clang::MacroInfo::params | ( |  | ) | const
| inline

Definition at line 184 of file MacroInfo.h.

## ◆ setDefinitionEndLoc()

void clang::MacroInfo::setDefinitionEndLoc | ( | SourceLocation | EndLoc | ) |
| inline

Set the location of the last token in the macro.

Definition at line 127 of file MacroInfo.h.

Referenced by isConfigurationPattern().

## ◆ setHasCommaPasting()

void clang::MacroInfo::setHasCommaPasting | ( |  | ) |
| inline

Definition at line 219 of file MacroInfo.h.

Referenced by isConfigurationPattern().

## ◆ setIsAllowRedefinitionsWithoutWarning()

void clang::MacroInfo::setIsAllowRedefinitionsWithoutWarning | ( | bool | Val | ) |
| inline

Set the value of the IsAllowRedefinitionsWithoutWarning flag.

Definition at line 156 of file MacroInfo.h.

Referenced by clang::Preprocessor::HandlePragmaPushMacro().

## ◆ setIsBuiltinMacro()

void clang::MacroInfo::setIsBuiltinMacro | ( | bool | Val = `true` | ) |
| inline

Set or clear the isBuiltinMacro flag.

Definition at line 150 of file MacroInfo.h.

## ◆ setIsC99Varargs()

void clang::MacroInfo::setIsC99Varargs | ( |  | ) |
| inline

Varargs querying methods. This can only be set for function-like macros.

Definition at line 204 of file MacroInfo.h.

## ◆ setIsFunctionLike()

void clang::MacroInfo::setIsFunctionLike | ( |  | ) |
| inline

Function/Object-likeness.

Keep track of whether this macro has formal parameters.

Definition at line 199 of file MacroInfo.h.

Referenced by isConfigurationPattern().

## ◆ setIsGNUVarargs()

void clang::MacroInfo::setIsGNUVarargs | ( |  | ) |
| inline

Definition at line 205 of file MacroInfo.h.

## ◆ setIsUsed()

void clang::MacroInfo::setIsUsed | ( | bool | Val | ) |
| inline

Set the value of the IsUsed flag.

Definition at line 153 of file MacroInfo.h.

Referenced by clang::Preprocessor::markMacroAsUsed().

## ◆ setIsWarnIfUnused()

void clang::MacroInfo::setIsWarnIfUnused | ( | bool | val | ) |
| inline

Set the value of the IsWarnIfUnused flag.

Definition at line 161 of file MacroInfo.h.

Referenced by isConfigurationPattern().

## ◆ setParameterList()

void clang::MacroInfo::setParameterList | ( | ArrayRef< IdentifierInfo *> | List,
|  | llvm::BumpPtrAllocator & | PPAllocator
| ) |  |
| inline

Set the specified list of identifiers as the parameter list for this macro.

Definition at line 165 of file MacroInfo.h.

## ◆ setUsedForHeaderGuard()

void clang::MacroInfo::setUsedForHeaderGuard | ( | bool | Val | ) |
| inline

Definition at line 274 of file MacroInfo.h.

References dump().

## ◆ tokens()

ArrayRef<Token> clang::MacroInfo::tokens | ( |  | ) | const
| inline

Definition at line 246 of file MacroInfo.h.

Referenced by PrintMacroDefinition().

## ◆ tokens_begin()

tokens_iterator clang::MacroInfo::tokens_begin | ( |  | ) | const
| inline

Definition at line 243 of file MacroInfo.h.

Referenced by clang::TokenLexer::Init(), and PrintMacroDefinition().

## ◆ tokens_empty()

bool clang::MacroInfo::tokens_empty | ( |  | ) | const
| inline

Definition at line 245 of file MacroInfo.h.

Referenced by PrintMacroDefinition().

## ◆ tokens_end()

tokens_iterator clang::MacroInfo::tokens_end | ( |  | ) | const
| inline

Definition at line 244 of file MacroInfo.h.

Referenced by clang::TokenLexer::Init().

## Friends And Related Function Documentation

## ◆ Preprocessor

friend class Preprocessor
| friend

Definition at line 279 of file MacroInfo.h.

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

- include/clang/Lex/MacroInfo.h
- lib/Lex/MacroInfo.cpp