clang 20.0.0git
|
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. | |
using | const_tokens_iterator = const Token * |
Public Member Functions | |
SourceLocation | getDefinitionLoc () const |
Return the location that the macro was defined at. | |
void | setDefinitionEndLoc (SourceLocation EndLoc) |
Set the location of the last token in the macro. | |
SourceLocation | getDefinitionEndLoc () const |
Return the location of the last token in the macro. | |
unsigned | getDefinitionLength (const SourceManager &SM) const |
Get length in characters of the macro definition. | |
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. | |
void | setIsBuiltinMacro (bool Val=true) |
Set or clear the isBuiltinMacro flag. | |
void | setIsUsed (bool Val) |
Set the value of the IsUsed flag. | |
void | setIsAllowRedefinitionsWithoutWarning (bool Val) |
Set the value of the IsAllowRedefinitionsWithoutWarning flag. | |
void | setIsWarnIfUnused (bool val) |
Set the value of the IsWarnIfUnused flag. | |
void | setParameterList (ArrayRef< IdentifierInfo * > List, llvm::BumpPtrAllocator &PPAllocator) |
Set the specified list of identifiers as the parameter list for this macro. | |
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. | |
void | setIsFunctionLike () |
Function/Object-likeness. | |
bool | isFunctionLike () const |
bool | isObjectLike () const |
void | setIsC99Varargs () |
Varargs querying methods. This can only be set for function-like macros. | |
void | setIsGNUVarargs () |
bool | isC99Varargs () const |
bool | isGNUVarargs () const |
bool | isVariadic () const |
bool | isBuiltinMacro () const |
Return true if this macro requires processing before expansion. | |
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. | |
bool | isAllowRedefinitionsWithoutWarning () const |
Return true if this macro can be redefined without warning. | |
bool | isWarnIfUnused () const |
Return true if we should emit a warning if the macro is unused. | |
unsigned | getNumTokens () const |
Return the number of tokens that this macro expands to. | |
const Token & | getReplacementToken (unsigned Tok) const |
const_tokens_iterator | tokens_begin () const |
const_tokens_iterator | tokens_end () const |
bool | tokens_empty () const |
ArrayRef< Token > | tokens () const |
llvm::MutableArrayRef< Token > | allocateTokens (unsigned NumTokens, llvm::BumpPtrAllocator &PPAllocator) |
void | setTokens (ArrayRef< Token > Tokens, llvm::BumpPtrAllocator &PPAllocator) |
bool | isEnabled () const |
Return true if this macro is enabled. | |
void | EnableMacro () |
void | DisableMacro () |
bool | isUsedForHeaderGuard () const |
Determine whether this macro was used for a header guard. | |
void | setUsedForHeaderGuard (bool Val) |
void | dump () const |
Friends | |
class | Preprocessor |
Encapsulates the data about a macro definition (e.g.
its tokens).
There's an instance of this class for every #define.
Definition at line 39 of file MacroInfo.h.
using clang::MacroInfo::const_tokens_iterator = const Token * |
Definition at line 242 of file MacroInfo.h.
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 180 of file MacroInfo.h.
|
inline |
Definition at line 254 of file MacroInfo.h.
Referenced by clang::ASTReader::ReadMacroRecord().
|
inline |
Definition at line 288 of file MacroInfo.h.
Referenced by clang::TokenLexer::Init().
LLVM_DUMP_METHOD void MacroInfo::dump | ( | ) | const |
Definition at line 152 of file MacroInfo.cpp.
References clang::First, clang::IdentifierInfo::getName(), clang::tok::getPunctuatorSpelling(), and tokens().
Referenced by clang::Preprocessor::dumpMacroInfo().
|
inline |
Definition at line 283 of file MacroInfo.h.
|
inline |
Return the location of the last token in the macro.
Definition at line 131 of file MacroInfo.h.
|
inline |
Get length in characters of the macro definition.
Definition at line 134 of file MacroInfo.h.
References SM.
Referenced by clang::TokenLexer::Init().
|
inline |
Return the location that the macro was defined at.
Definition at line 125 of file MacroInfo.h.
Referenced by clang::Preprocessor::appendDefMacroDirective(), isLanguageDefinedBuiltin(), and clang::Preprocessor::markMacroAsUsed().
|
inline |
Definition at line 184 of file MacroInfo.h.
Referenced by clang::MacroArgs::create(), clang::TokenLexer::Init(), and isIdenticalTo().
|
inline |
Return the number of tokens that this macro expands to.
Definition at line 235 of file MacroInfo.h.
Referenced by clang::Preprocessor::DumpMacro(), isConfigurationPattern(), isIdenticalTo(), and MacroDefinitionEquals().
|
inline |
Return the parameter number of the specified identifier, or -1 if the identifier is not a formal parameter identifier.
Definition at line 191 of file MacroInfo.h.
References E, param_begin(), and param_end().
Referenced by isIdenticalTo().
Definition at line 237 of file MacroInfo.h.
Referenced by clang::Preprocessor::DumpMacro(), isConfigurationPattern(), and isTrivialSingleTokenExpansion().
|
inline |
Definition at line 219 of file MacroInfo.h.
|
inline |
Return true if this macro can be redefined without warning.
Definition at line 227 of file MacroInfo.h.
|
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 217 of file MacroInfo.h.
Referenced by DoPrintMacros(), clang::ASTWriter::getMacroID(), clang::ASTWriter::getMacroRef(), and isLanguageDefinedBuiltin().
|
inline |
Definition at line 207 of file MacroInfo.h.
Referenced by clang::CodeCompletionResult::CreateCodeCompletionStringForMacro(), and isIdenticalTo().
|
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 281 of file MacroInfo.h.
|
inline |
Definition at line 201 of file MacroInfo.h.
Referenced by clang::MacroArgs::create(), clang::CodeCompletionResult::CreateCodeCompletionStringForMacro(), clang::TokenLexer::Init(), isIdenticalTo(), and PrintMacroDefinition().
|
inline |
Definition at line 208 of file MacroInfo.h.
Referenced by isIdenticalTo(), and PrintMacroDefinition().
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.
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 94 of file MacroInfo.cpp.
References E, clang::Token::getIdentifierInfo(), clang::Token::getKind(), getNumParams(), getNumTokens(), getParameterNum(), clang::Preprocessor::getSpelling(), clang::Token::hasLeadingSpace(), clang::Token::isAtStartOfLine(), isC99Varargs(), isFunctionLike(), isGNUVarargs(), clang::Other, param_begin(), and param_end().
|
inline |
Definition at line 202 of file MacroInfo.h.
Referenced by clang::Preprocessor::getLastMacroWithSpelling(), and isTrivialSingleTokenExpansion().
|
inline |
Return false if this macro is defined in the main file and has not yet been used.
Definition at line 224 of file MacroInfo.h.
Referenced by clang::Preprocessor::markMacroAsUsed().
|
inline |
Determine whether this macro was used for a header guard.
Definition at line 294 of file MacroInfo.h.
Referenced by AddMacroResults().
|
inline |
Definition at line 209 of file MacroInfo.h.
Referenced by clang::CodeCompletionResult::CreateCodeCompletionStringForMacro(), and clang::MacroArgs::invokedWithVariadicArgument().
|
inline |
Return true if we should emit a warning if the macro is unused.
Definition at line 232 of file MacroInfo.h.
Referenced by clang::Preprocessor::markMacroAsUsed().
|
inline |
Definition at line 182 of file MacroInfo.h.
Referenced by clang::CodeCompletionResult::CreateCodeCompletionStringForMacro(), getParameterNum(), isIdenticalTo(), and PrintMacroDefinition().
|
inline |
Definition at line 181 of file MacroInfo.h.
Referenced by PrintMacroDefinition().
|
inline |
Definition at line 183 of file MacroInfo.h.
Referenced by clang::CodeCompletionResult::CreateCodeCompletionStringForMacro(), getParameterNum(), isIdenticalTo(), and PrintMacroDefinition().
|
inline |
Definition at line 185 of file MacroInfo.h.
Referenced by isTrivialSingleTokenExpansion().
|
inline |
Set the location of the last token in the macro.
Definition at line 128 of file MacroInfo.h.
Referenced by clang::ASTReader::ReadMacroRecord().
|
inline |
Definition at line 220 of file MacroInfo.h.
Referenced by clang::ASTReader::ReadMacroRecord().
|
inline |
Set the value of the IsAllowRedefinitionsWithoutWarning flag.
Definition at line 157 of file MacroInfo.h.
Referenced by clang::Preprocessor::HandlePragmaPushMacro().
Set or clear the isBuiltinMacro flag.
Definition at line 151 of file MacroInfo.h.
Referenced by RegisterBuiltinMacro().
|
inline |
Varargs querying methods. This can only be set for function-like macros.
Definition at line 205 of file MacroInfo.h.
Referenced by clang::ASTReader::ReadMacroRecord().
|
inline |
Function/Object-likeness.
Keep track of whether this macro has formal parameters.
Definition at line 200 of file MacroInfo.h.
Referenced by clang::ASTReader::ReadMacroRecord().
|
inline |
Definition at line 206 of file MacroInfo.h.
Referenced by clang::ASTReader::ReadMacroRecord().
|
inline |
Set the value of the IsUsed flag.
Definition at line 154 of file MacroInfo.h.
Referenced by clang::Preprocessor::markMacroAsUsed(), and clang::ASTReader::ReadMacroRecord().
|
inline |
Set the value of the IsWarnIfUnused flag.
Definition at line 162 of file MacroInfo.h.
|
inline |
Set the specified list of identifiers as the parameter list for this macro.
Definition at line 166 of file MacroInfo.h.
Referenced by clang::ASTReader::ReadMacroRecord().
|
inline |
Definition at line 263 of file MacroInfo.h.
|
inline |
Definition at line 296 of file MacroInfo.h.
Referenced by clang::ASTReader::ReadMacroRecord().
Definition at line 249 of file MacroInfo.h.
Referenced by dump(), PrintMacroDefinition(), and clang::ento::tryExpandAsInteger().
|
inline |
Definition at line 244 of file MacroInfo.h.
Referenced by clang::TokenLexer::Init(), MacroDefinitionEquals(), and PrintMacroDefinition().
|
inline |
Definition at line 248 of file MacroInfo.h.
Referenced by PrintMacroDefinition().
|
inline |
Definition at line 245 of file MacroInfo.h.
Referenced by clang::TokenLexer::Init().
|
friend |
Definition at line 301 of file MacroInfo.h.