clang
7.0.0
|
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 |
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.
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.
using clang::MacroInfo::tokens_iterator = SmallVectorImpl<Token>::const_iterator |
Definition at line 241 of file MacroInfo.h.
|
inline |
Add the specified token to the replacement text for the macro.
Definition at line 249 of file MacroInfo.h.
Referenced by isConfigurationPattern().
|
inline |
Definition at line 266 of file MacroInfo.h.
Referenced by clang::TokenLexer::Init().
LLVM_DUMP_METHOD void MacroInfo::dump | ( | ) | const |
Definition at line 133 of file MacroInfo.cpp.
Referenced by clang::MacroDirective::getMacroInfo(), and setUsedForHeaderGuard().
|
inline |
Definition at line 261 of file MacroInfo.h.
Referenced by clang::TokenLexer::isParsingPreprocessorDirective(), and clang::TokenLexer::Lex().
|
inline |
Return the location of the last token in the macro.
Definition at line 130 of file MacroInfo.h.
Referenced by clang::PreprocessingRecord::findMacroDefinition().
|
inline |
Get length in characters of the macro definition.
Definition at line 133 of file MacroInfo.h.
References isIdenticalTo().
Referenced by clang::TokenLexer::Init().
|
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(), isConfigurationPattern(), isTrivialSingleTokenExpansion(), and clang::Preprocessor::markMacroAsUsed().
|
inline |
Definition at line 183 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 234 of file MacroInfo.h.
Referenced by clang::Preprocessor::DumpMacro(), isConfigurationPattern(), and isTrivialSingleTokenExpansion().
|
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.
Referenced by isConfigurationPattern().
|
inline |
Definition at line 236 of file MacroInfo.h.
References clang::format::Tok.
Referenced by clang::Preprocessor::DumpMacro(), isConfigurationPattern(), and isTrivialSingleTokenExpansion().
|
inline |
Definition at line 218 of file MacroInfo.h.
|
inline |
Return true if this macro can be redefined without warning.
Definition at line 226 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 216 of file MacroInfo.h.
Referenced by clang::Preprocessor::CheckMacroName(), clang::PreprocessingRecord::findMacroDefinition(), clang::ASTWriter::getMacroID(), and isTrivialSingleTokenExpansion().
|
inline |
Definition at line 206 of file MacroInfo.h.
Referenced by clang::CodeCompletionResult::CreateCodeCompletionStringForMacro(), isConfigurationPattern(), 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 259 of file MacroInfo.h.
|
inline |
Definition at line 200 of file MacroInfo.h.
Referenced by clang::MacroArgs::create(), clang::CodeCompletionResult::CreateCodeCompletionStringForMacro(), clang::TokenLexer::Init(), isIdenticalTo(), isTrivialSingleTokenExpansion(), and PrintMacroDefinition().
|
inline |
Definition at line 207 of file MacroInfo.h.
Referenced by 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.
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 getNumParams(), isC99Varargs(), isFunctionLike(), and isGNUVarargs().
Referenced by getDefinitionLength(), and isConfigurationPattern().
|
inline |
Definition at line 201 of file MacroInfo.h.
Referenced by isConfigurationPattern(), and isTrivialSingleTokenExpansion().
|
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().
|
inline |
Determine whether this macro was used for a header guard.
Definition at line 272 of file MacroInfo.h.
|
inline |
Definition at line 208 of file MacroInfo.h.
Referenced by clang::CodeCompletionResult::CreateCodeCompletionStringForMacro(), clang::TokenLexer::Init(), and clang::MacroArgs::invokedWithVariadicArgument().
|
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().
|
inline |
Definition at line 181 of file MacroInfo.h.
Referenced by clang::CodeCompletionResult::CreateCodeCompletionStringForMacro(), isTrivialSingleTokenExpansion(), and PrintMacroDefinition().
|
inline |
Definition at line 180 of file MacroInfo.h.
Referenced by PrintMacroDefinition().
|
inline |
Definition at line 182 of file MacroInfo.h.
Referenced by clang::CodeCompletionResult::CreateCodeCompletionStringForMacro(), and isTrivialSingleTokenExpansion().
|
inline |
Definition at line 184 of file MacroInfo.h.
|
inline |
Set the location of the last token in the macro.
Definition at line 127 of file MacroInfo.h.
Referenced by isConfigurationPattern().
|
inline |
Definition at line 219 of file MacroInfo.h.
Referenced by isConfigurationPattern().
|
inline |
Set the value of the IsAllowRedefinitionsWithoutWarning flag.
Definition at line 156 of file MacroInfo.h.
Referenced by clang::Preprocessor::HandlePragmaPushMacro().
Set or clear the isBuiltinMacro flag.
Definition at line 150 of file MacroInfo.h.
|
inline |
Varargs querying methods. This can only be set for function-like macros.
Definition at line 204 of file MacroInfo.h.
|
inline |
Function/Object-likeness.
Keep track of whether this macro has formal parameters.
Definition at line 199 of file MacroInfo.h.
Referenced by isConfigurationPattern().
|
inline |
Definition at line 205 of file MacroInfo.h.
|
inline |
Set the value of the IsUsed flag.
Definition at line 153 of file MacroInfo.h.
Referenced by clang::Preprocessor::markMacroAsUsed().
|
inline |
Set the value of the IsWarnIfUnused flag.
Definition at line 161 of file MacroInfo.h.
Referenced by isConfigurationPattern().
|
inline |
Set the specified list of identifiers as the parameter list for this macro.
Definition at line 165 of file MacroInfo.h.
|
inline |
Definition at line 274 of file MacroInfo.h.
References dump().
Definition at line 246 of file MacroInfo.h.
|
inline |
Definition at line 243 of file MacroInfo.h.
Referenced by clang::TokenLexer::Init().
|
inline |
Definition at line 245 of file MacroInfo.h.
|
inline |
Definition at line 244 of file MacroInfo.h.
Referenced by clang::TokenLexer::Init().
|
friend |
Definition at line 279 of file MacroInfo.h.