clang 22.0.0git
clang::IdentifierInfo Class Reference

One of these records is kept for each identifier that is lexed. More...

#include "clang/Basic/IdentifierTable.h"

Public Member Functions

 IdentifierInfo (const IdentifierInfo &)=delete
IdentifierInfooperator= (const IdentifierInfo &)=delete
 IdentifierInfo (IdentifierInfo &&)=delete
IdentifierInfooperator= (IdentifierInfo &&)=delete
template<std::size_t StrLen>
bool isStr (const char(&Str)[StrLen]) const
 Return true if this is the identifier for the specified string.
bool isStr (llvm::StringRef Str) const
 Return true if this is the identifier for the specified StringRef.
const char * getNameStart () const
 Return the beginning of the actual null-terminated string for this identifier.
unsigned getLength () const
 Efficiently return the length of this identifier info.
StringRef getName () const
 Return the actual identifier string.
bool hasMacroDefinition () const
 Return true if this identifier is #defined to some other value.
void setHasMacroDefinition (bool Val)
bool hadMacroDefinition () const
 Returns true if this identifier was #defined to some value at any moment.
bool isDeprecatedMacro () const
void setIsDeprecatedMacro (bool Val)
bool isRestrictExpansion () const
void setIsRestrictExpansion (bool Val)
bool isFinal () const
void setIsFinal (bool Val)
tok::TokenKind getTokenID () const
 If this is a source-language token (e.g.
bool hasRevertedTokenIDToIdentifier () const
 True if revertTokenIDToIdentifier() was called.
void revertTokenIDToIdentifier ()
 Revert TokenID to tok::identifier; used for GNU libstdc++ 4.2 compatibility.
void revertIdentifierToTokenID (tok::TokenKind TK)
tok::PPKeywordKind getPPKeywordID () const
 Return the preprocessor keyword ID for this identifier.
tok::ObjCKeywordKind getObjCKeywordID () const
 Return the Objective-C keyword ID for the this identifier.
void setObjCKeywordID (tok::ObjCKeywordKind ID)
unsigned getBuiltinID () const
 Return a value indicating whether this is a builtin function.
void setBuiltinID (unsigned ID)
void clearBuiltinID ()
tok::NotableIdentifierKind getNotableIdentifierID () const
void setNotableIdentifierID (unsigned ID)
unsigned getObjCOrBuiltinID () const
void setObjCOrBuiltinID (unsigned ID)
bool isExtensionToken () const
 get/setExtension - Initialize information about whether or not this language token is an extension.
void setIsExtensionToken (bool Val)
bool isFutureCompatKeyword () const
 is/setIsFutureCompatKeyword - Initialize information about whether or not this language token is a keyword in a newer or proposed Standard.
void setIsFutureCompatKeyword (bool Val)
void setIsPoisoned (bool Value=true)
 setIsPoisoned - Mark this identifier as poisoned.
bool isPoisoned () const
 Return true if this token has been poisoned.
void setIsCPlusPlusOperatorKeyword (bool Val=true)
 isCPlusPlusOperatorKeyword/setIsCPlusPlusOperatorKeyword controls whether this identifier is a C++ alternate representation of an operator.
bool isCPlusPlusOperatorKeyword () const
bool IsKeywordInCPlusPlus () const
 Return true if this identifier would be a keyword in C++ mode.
void setIsKeywordInCPlusPlus (bool Val=true)
bool isKeyword (const LangOptions &LangOpts) const
 Return true if this token is a keyword in the specified language.
bool isCPlusPlusKeyword (const LangOptions &LangOpts) const
 Return true if this token is a C++ keyword in the specified language.
void * getFETokenInfo () const
 Get and set FETokenInfo.
void setFETokenInfo (void *T)
bool isHandleIdentifierCase () const
 Return true if the Preprocessor::HandleIdentifier must be called on a token of this identifier.
void setHandleIdentifierCase (bool Val=true)
bool isFromAST () const
 Return true if the identifier in its current state was loaded from an AST file.
void setIsFromAST ()
bool hasChangedSinceDeserialization () const
 Determine whether this identifier has changed since it was loaded from an AST file.
void setChangedSinceDeserialization ()
 Note that this identifier has changed since it was loaded from an AST file.
bool hasFETokenInfoChangedSinceDeserialization () const
 Determine whether the frontend token information for this identifier has changed since it was loaded from an AST file.
void setFETokenInfoChangedSinceDeserialization ()
 Note that the frontend token information for this identifier has changed since it was loaded from an AST file.
bool isOutOfDate () const
 Determine whether the information for this identifier is out of date with respect to the external source.
void setOutOfDate (bool OOD)
 Set whether the information for this identifier is out of date with respect to the external source.
bool isModulesImport () const
 Determine whether this is the contextual keyword import.
void setModulesImport (bool I)
 Set whether this identifier is the contextual keyword import.
bool isMangledOpenMPVariantName () const
 Determine whether this is the mangled name of an OpenMP variant.
void setMangledOpenMPVariantName (bool I)
 Set whether this is the mangled name of an OpenMP variant.
bool isEditorPlaceholder () const
 Return true if this identifier is an editor placeholder.
ReservedIdentifierStatus isReserved (const LangOptions &LangOpts) const
 Determine whether this is a name reserved for the implementation (C99 7.1.3, C++ [lib.global.names]).
ReservedLiteralSuffixIdStatus isReservedLiteralSuffixId () const
 Determine whether this is a name reserved for future standardization or the implementation (C++ [usrlit.suffix]).
StringRef deuglifiedName () const
 If the identifier is an "uglified" reserved name, return a cleaned form.
bool isPlaceholder () const
bool operator< (const IdentifierInfo &RHS) const
 Provide less than operator for lexicographical sorting.

Friends

class IdentifierTable

Detailed Description

One of these records is kept for each identifier that is lexed.

This contains information about whether the token was #define'd, is a language keyword, or if it is a front-end token of some sort (e.g. a variable or function name). The preprocessor keeps this information in a set, and all tok::identifier tokens have a pointer to one of these. It is aligned to 8 bytes because DeclarationName needs the lower 3 bits.

Definition at line 116 of file IdentifierTable.h.

Constructor & Destructor Documentation

◆ IdentifierInfo() [1/2]

clang::IdentifierInfo::IdentifierInfo ( const IdentifierInfo & )
delete

◆ IdentifierInfo() [2/2]

clang::IdentifierInfo::IdentifierInfo ( IdentifierInfo && )
delete

Member Function Documentation

◆ clearBuiltinID()

void clang::IdentifierInfo::clearBuiltinID ( )
inline

Definition at line 377 of file IdentifierTable.h.

References clang::NotInterestingIdentifier.

◆ deuglifiedName()

StringRef IdentifierInfo::deuglifiedName ( ) const

If the identifier is an "uglified" reserved name, return a cleaned form.

e.g. _Foo => Foo. Otherwise, just returns the name.

Definition at line 444 of file IdentifierTable.cpp.

References getName().

Referenced by AddTemplateParameterChunks().

◆ getBuiltinID()

◆ getFETokenInfo()

void * clang::IdentifierInfo::getFETokenInfo ( ) const
inline

Get and set FETokenInfo.

The language front-end is allowed to associate arbitrary metadata with this token.

Definition at line 464 of file IdentifierTable.h.

Referenced by isInterestingIdentifier().

◆ getLength()

unsigned clang::IdentifierInfo::getLength ( ) const
inline

◆ getName()

StringRef clang::IdentifierInfo::getName ( ) const
inline

Return the actual identifier string.

Definition at line 250 of file IdentifierTable.h.

References getLength(), and getNameStart().

Referenced by clang::Sema::ActOnFinishKNRParamDeclarations(), clang::Sema::ActOnGCCAsmStmt(), clang::SemaOpenMP::ActOnOpenMPDeviceNum(), clang::Sema::ActOnPragmaMSAllocText(), clang::Sema::ActOnPragmaRedefineExtname(), clang::Sema::ActOnPragmaVisibility(), clang::SemaOpenMP::ActOnStartOfFunctionDefinitionInOpenMPDeclareVariantScope(), clang::comments::Sema::actOnTParamCommandParamNameArg(), clang::Sema::ActOnUsingEnumDeclaration(), clang::SimpleTypoCorrection::add(), clang::TypoCorrectionConsumer::addCorrection(), AddDefinedMacroToHash(), clang::ODRHash::AddIdentifierInfo(), clang::Sema::AddModeAttr(), AddObjCKeyValueCompletions(), AddObjCProperties(), clang::ento::AnyFunctionCall::argumentsMayEscape(), attributeAcceptsExprPack(), attributeHasIdentifierArg(), attributeHasStrictIdentifierArgs(), attributeHasVariadicIdentifierArg(), attributeIsTypeArgAttr(), attributeParsedArgsUnevaluated(), attributeStringLiteralListArg(), attributeTreatsKeywordThisAsIdentifier(), clang::ento::RetainSummaryManager::canEval(), checkAliasedGlobal(), CheckAvailability(), checkAvailabilityAttr(), clang::CheckEquivalentExceptionSpecImpl(), clang::Sema::CheckLiteralOperatorDeclaration(), clang::Sema::checkLiteralOperatorId(), clang::Preprocessor::CheckMacroName(), clang::Sema::checkStringLiteralArgumentAttr(), clang::Sema::ClassifyName(), clang::SemaCodeCompletion::CodeCompleteAttribute(), clang::DeclarationName::compare(), clang::SelectorTable::constructSetterSelector(), clang::Sema::CorrectTypo(), createOverloadsForFixedParams(), clang::SemaHLSL::createSemanticAttr(), clang::Sema::DeclApplyPragmaWeak(), deuglifiedName(), clang::SemaHLSL::diagnoseSystemSemanticAttr(), clang::Sema::DiagnoseUnknownTypeName(), clang::Preprocessor::emitMacroExpansionWarnings(), encodeTypeForFunctionPointerAuth(), EvaluateDefined(), EvaluateValue(), ExtractTypeTraitFromExpression(), fixParamWithSpan(), clang::ento::coreFoundation::followsCreateRule(), clang::FormatASTNodeDiagnosticArgument(), clang::Diagnostic::FormatDiagnostic(), clang::TypoCorrectionConsumer::FoundDecl(), clang::index::generateUSRForMacro(), clang::Selector::getAsString(), GetAssumedMessageSendExprType(), clang::ento::CheckerContext::getCalleeName(), getCalleeName(), clang::AttributeCommonInfo::getCXX11AttrArgsInfo(), clang::ObjCPropertyDecl::getDefaultSynthIvarName(), clang::Sema::getDestructorName(), GetFullTypeForDeclarator(), clang::IdentifierTable::getFutureCompatDiagKind(), getHostLayoutStructName(), clang::ento::ExprEngine::getInitialState(), clang::Selector::getInstTypeMethodFamily(), getMangledNameImpl(), getMangledNameImpl(), clang::MacroExpansion::getName(), clang::NamedDecl::getName(), clang::ObjCImplementationDecl::getName(), clang::Selector::getNameForSlot(), clang::AttributeCommonInfo::getScopeName(), clang::SemaOpenCL::handleAccessAttr(), handleArgumentWithTypeTagAttr(), clang::SemaSwift::handleAsyncAttr(), clang::SemaSwift::handleAsyncError(), handleAtomicAttr(), handleAvailabilityAttr(), clang::SemaObjC::handleBlocksAttr(), handleCallableWhenAttr(), handleCallbackAttr(), handleCFGuardAttr(), handleConsumableAttr(), handleCPUSpecificAttr(), handleEnforceTCBAttr(), handleEnumExtensibilityAttr(), clang::SemaSwift::handleError(), handleFormatAttrCommon(), handleFormatMatchesAttr(), clang::Preprocessor::HandleIdentifier(), handleLoopHintAttr(), clang::SemaObjC::handleMethodFamilyAttr(), clang::SemaSwift::handleNewType(), handleNonBlockingNonAllocatingTypeAttr(), handleNoSanitizeSpecificAttr(), HandleOpenCLAccessAttr(), handleParamTypestateAttr(), clang::Preprocessor::HandlePragmaModuleBuild(), clang::Preprocessor::HandlePragmaPopMacro(), clang::SemaHLSL::handleResourceBindingAttr(), clang::SemaHLSL::handleResourceTypeAttr(), handleReturnTypestateAttr(), clang::SemaHLSL::handleSemanticAttr(), handleSetTypestateAttr(), handleTestTypestateAttr(), handleVTablePointerAuthentication(), hasMatchingEnvironmentOrNone(), clang::Sema::ImplicitlyDefineFunction(), clang::ASTImporter::Import(), clang::CallGraph::includeCalleeInGraph(), InNamespace(), clang::Sema::InventAbbreviatedTemplateParameterTypeName(), IsAttributeLateParsedExperimentalExt(), IsAttributeLateParsedStandard(), clang::ento::CheckerContext::isCLibraryFunction(), isConfigurationPattern(), clang::Sema::isCurrentClassNameTypo(), isEditorPlaceholder(), clang::ento::CheckerContext::isHardenedVariantOf(), clang::ento::RetainSummaryManager::isKnownSmartPointer(), isReferenceCountingPointerDestructor(), isReserved(), isReservedLiteralSuffixId(), isStdStreamVar(), IsStructurallyEquivalent(), isTargetArch(), isTargetEnvironment(), isTargetOS(), isTargetVariantEnvironment(), isTargetVariantOS(), isTargetVendor(), clang::Preprocessor::LexEmbedParameters(), clang::Sema::LookupBuiltin(), InjectRootSignatureCallback::MacroDefined(), clang::detail::MacroExpansionRangeRecorder::MacroExpands(), clang::MacroPPCallbacks::MacroUndefined(), clang::MangleContext::mangleName(), clang::Sema::mergeAvailabilityAttr(), normalizeAttrScopeName(), normalizeName(), operator<(), clang::operator==(), parseDeclareSimdClauses(), clang::Sema::ParseLifetimeCaptureByAttr(), clang::Parser::ParseMSAsmIdentifier(), PragmaLoopHintString(), clang::DeclarationName::print(), PrintMacroDefinition(), clang::PrintingCodeCompleteConsumer::ProcessCodeCompleteResults(), clang::RewriteMacrosInInput(), clang::Sema::setTagNameForLinkagePurposes(), shouldWarnOnMacroDef(), TryNamespaceTypoCorrection(), clang::ASTReader::updateOutOfDateIdentifier(), ValidateObjCLiteralInterfaceDecl(), clang::TextNodeDumper::VisitLoopControlStmt(), and clang::JSONNodeDumper::VisitMacroQualifiedType().

◆ getNameStart()

const char * clang::IdentifierInfo::getNameStart ( ) const
inline

Return the beginning of the actual null-terminated string for this identifier.

Definition at line 244 of file IdentifierTable.h.

Referenced by CheckExtVectorComponent(), clang::Preprocessor::dumpMacroInfo(), getName(), clang::LabelStmt::getName(), getPPKeywordID(), isPlaceholder(), isStr(), isStr(), and clang::TextNodeDumper::VisitExtVectorElementExpr().

◆ getNotableIdentifierID()

tok::NotableIdentifierKind clang::IdentifierInfo::getNotableIdentifierID ( ) const
inline

◆ getObjCKeywordID()

tok::ObjCKeywordKind clang::IdentifierInfo::getObjCKeywordID ( ) const
inline

Return the Objective-C keyword ID for the this identifier.

For example, 'class' will return tok::objc_class if ObjC is enabled.

Definition at line 346 of file IdentifierTable.h.

References clang::NUM_OBJC_KEYWORDS.

Referenced by clang::Token::getObjCKeywordID(), isInterestingIdentifier(), and setObjCKeywordID().

◆ getObjCOrBuiltinID()

unsigned clang::IdentifierInfo::getObjCOrBuiltinID ( ) const
inline

Definition at line 402 of file IdentifierTable.h.

◆ getPPKeywordID()

tok::PPKeywordKind IdentifierInfo::getPPKeywordID ( ) const

Return the preprocessor keyword ID for this identifier.

For example, "define" will return tok::pp_define.

Definition at line 452 of file IdentifierTable.cpp.

References CASE, getLength(), getNameStart(), and HASH.

Referenced by clang::Preprocessor::CheckMacroName(), diagnoseAutoModuleImport(), and clang::Preprocessor::HandleDirective().

◆ getTokenID()

tok::TokenKind clang::IdentifierInfo::getTokenID ( ) const
inline

If this is a source-language token (e.g.

'for'), this API can be used to cause the lexer to map identifiers to source-language tokens.

Definition at line 316 of file IdentifierTable.h.

Referenced by DiagnoseCallingConvCast(), clang::Preprocessor::HandleIdentifier(), isKeyword(), clang::TokenLexer::Lex(), clang::Preprocessor::LookUpIdentifierInfo(), clang::serialization::reader::ASTIdentifierLookupTrait::ReadData(), and clang::syntax::tokenize().

◆ hadMacroDefinition()

bool clang::IdentifierInfo::hadMacroDefinition ( ) const
inline

Returns true if this identifier was #defined to some value at any moment.

In this case there should be an entry for the identifier in the macro history table in Preprocessor.

Definition at line 281 of file IdentifierTable.h.

Referenced by checkConfigMacro(), clang::Preprocessor::getLocalMacroDirectiveHistory(), clang::Preprocessor::getMacroDefinitionAtLoc(), and isInterestingIdentifier().

◆ hasChangedSinceDeserialization()

bool clang::IdentifierInfo::hasChangedSinceDeserialization ( ) const
inline

Determine whether this identifier has changed since it was loaded from an AST file.

Definition at line 483 of file IdentifierTable.h.

◆ hasFETokenInfoChangedSinceDeserialization()

bool clang::IdentifierInfo::hasFETokenInfoChangedSinceDeserialization ( ) const
inline

Determine whether the frontend token information for this identifier has changed since it was loaded from an AST file.

Definition at line 495 of file IdentifierTable.h.

◆ hasMacroDefinition()

bool clang::IdentifierInfo::hasMacroDefinition ( ) const
inline

Return true if this identifier is #defined to some other value.

Note
The current definition may be in a module and not currently visible.

Definition at line 256 of file IdentifierTable.h.

Referenced by clang::Preprocessor::getLocalMacroDirective(), clang::Preprocessor::getMacroDefinition(), clang::Preprocessor::getMacroInfo(), clang::Preprocessor::isMacroDefined(), and clang::Preprocessor::isMacroDefinedInLocalModule().

◆ hasRevertedTokenIDToIdentifier()

bool clang::IdentifierInfo::hasRevertedTokenIDToIdentifier ( ) const
inline

True if revertTokenIDToIdentifier() was called.

Definition at line 319 of file IdentifierTable.h.

Referenced by isInterestingIdentifier().

◆ isCPlusPlusKeyword()

bool IdentifierInfo::isCPlusPlusKeyword ( const LangOptions & LangOpts) const

Return true if this token is a C++ keyword in the specified language.

Returns true if the identifier represents a C++ keyword in the specified language.

Definition at line 383 of file IdentifierTable.cpp.

References isKeyword().

◆ isCPlusPlusOperatorKeyword()

bool clang::IdentifierInfo::isCPlusPlusOperatorKeyword ( ) const
inline

◆ isDeprecatedMacro()

bool clang::IdentifierInfo::isDeprecatedMacro ( ) const
inline

Definition at line 285 of file IdentifierTable.h.

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

◆ isEditorPlaceholder()

bool clang::IdentifierInfo::isEditorPlaceholder ( ) const
inline

Return true if this identifier is an editor placeholder.

Editor placeholders are produced by the code-completion engine and are represented as characters between '<#' and '#>' in the source code. An example of auto-completed call with a placeholder parameter is shown below:

function(<#int x#>);

Definition at line 546 of file IdentifierTable.h.

References getName().

Referenced by clang::Sema::ActOnIdExpression(), clang::Sema::BuildCXXNestedNameSpecifier(), and clang::Sema::DiagnoseUnknownTypeName().

◆ isExtensionToken()

bool clang::IdentifierInfo::isExtensionToken ( ) const
inline

get/setExtension - Initialize information about whether or not this language token is an extension.

This controls extension warnings, and is only valid if a custom token ID is set.

Definition at line 408 of file IdentifierTable.h.

Referenced by clang::Preprocessor::HandleIdentifier(), and clang::serialization::reader::ASTIdentifierLookupTrait::ReadData().

◆ isFinal()

bool clang::IdentifierInfo::isFinal ( ) const
inline

Definition at line 309 of file IdentifierTable.h.

◆ isFromAST()

bool clang::IdentifierInfo::isFromAST ( ) const
inline

Return true if the identifier in its current state was loaded from an AST file.

Definition at line 477 of file IdentifierTable.h.

Referenced by clang::Preprocessor::appendMacroDirective(), clang::Preprocessor::HandlePragmaPoison(), and markIdentifierFromAST().

◆ isFutureCompatKeyword()

bool clang::IdentifierInfo::isFutureCompatKeyword ( ) const
inline

is/setIsFutureCompatKeyword - Initialize information about whether or not this language token is a keyword in a newer or proposed Standard.

This controls compatibility warnings, and is only true when not parsing the corresponding Standard. Once a compatibility problem has been diagnosed with this keyword, the flag will be cleared.

Definition at line 422 of file IdentifierTable.h.

Referenced by clang::IdentifierTable::getFutureCompatDiagKind(), and clang::Preprocessor::HandleIdentifier().

◆ isHandleIdentifierCase()

bool clang::IdentifierInfo::isHandleIdentifierCase ( ) const
inline

Return true if the Preprocessor::HandleIdentifier must be called on a token of this identifier.

If this returns false, we know that HandleIdentifier will not affect the token.

Definition at line 472 of file IdentifierTable.h.

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

◆ isKeyword()

bool IdentifierInfo::isKeyword ( const LangOptions & LangOpts) const

Return true if this token is a keyword in the specified language.

Returns true if the identifier represents a keyword in the specified language.

Definition at line 371 of file IdentifierTable.cpp.

References getTokenID(), and getTokenKwStatus().

Referenced by DiagnoseCallingConvCast(), highlightLines(), isConfigurationPattern(), isCPlusPlusKeyword(), clang::Token::isSimpleTypeSpecifier(), and shouldWarnOnMacroDef().

◆ IsKeywordInCPlusPlus()

bool clang::IdentifierInfo::IsKeywordInCPlusPlus ( ) const
inline

Return true if this identifier would be a keyword in C++ mode.

Definition at line 452 of file IdentifierTable.h.

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

◆ isMangledOpenMPVariantName()

bool clang::IdentifierInfo::isMangledOpenMPVariantName ( ) const
inline

Determine whether this is the mangled name of an OpenMP variant.

Definition at line 532 of file IdentifierTable.h.

◆ isModulesImport()

bool clang::IdentifierInfo::isModulesImport ( ) const
inline

Determine whether this is the contextual keyword import.

Definition at line 520 of file IdentifierTable.h.

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

◆ isOutOfDate()

bool clang::IdentifierInfo::isOutOfDate ( ) const
inline

Determine whether the information for this identifier is out of date with respect to the external source.

Definition at line 507 of file IdentifierTable.h.

Referenced by clang::HeaderFileInfo::getControllingMacro(), clang::Preprocessor::getLeafModuleMacros(), clang::Preprocessor::HandleIdentifier(), isTrivialSingleTokenExpansion(), and clang::ASTReader::ReadDefinedMacros().

◆ isPlaceholder()

bool clang::IdentifierInfo::isPlaceholder ( ) const
inline

◆ isPoisoned()

bool clang::IdentifierInfo::isPoisoned ( ) const
inline

Return true if this token has been poisoned.

Definition at line 442 of file IdentifierTable.h.

Referenced by clang::Preprocessor::HandleIdentifier(), clang::Preprocessor::HandlePragmaPoison(), isInterestingIdentifier(), and clang::TokenLexer::Lex().

◆ isReserved()

ReservedIdentifierStatus IdentifierInfo::isReserved ( const LangOptions & LangOpts) const

◆ isReservedLiteralSuffixId()

ReservedLiteralSuffixIdStatus IdentifierInfo::isReservedLiteralSuffixId ( ) const

Determine whether this is a name reserved for future standardization or the implementation (C++ [usrlit.suffix]).

Definition at line 429 of file IdentifierTable.cpp.

References clang::ContainsDoubleUnderscore, getName(), clang::NotReserved, and clang::NotStartsWithUnderscore.

Referenced by clang::Sema::CheckLiteralOperatorDeclaration(), and clang::Sema::checkLiteralOperatorId().

◆ isRestrictExpansion()

bool clang::IdentifierInfo::isRestrictExpansion ( ) const
inline

Definition at line 297 of file IdentifierTable.h.

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

◆ isStr() [1/2]

template<std::size_t StrLen>
bool clang::IdentifierInfo::isStr ( const char(&) Str[StrLen]) const
inline

Return true if this is the identifier for the specified string.

This is intended to be used for string literals only: II->isStr("foo").

Definition at line 231 of file IdentifierTable.h.

References getLength(), and getNameStart().

Referenced by clang::SemaObjC::ActOnClassPropertyRefExpr(), clang::Sema::ActOnFunctionDeclarator(), clang::Sema::ActOnStartNamespaceDef(), clang::Sema::ActOnTag(), clang::Sema::ActOnUsingDirective(), clang::Sema::AddKnownFunctionAttributes(), clang::ento::AnyFunctionCall::argumentsMayEscape(), clang::ento::ObjCMethodCall::argumentsMayEscape(), clang::ento::RetainSummaryManager::canEval(), checkFormatStringExpr(), diagnoseBadTypeAttribute(), DiagReservedModuleName(), EvaluateValue(), clang::findCapturingExpr(), clang::FunctionDecl::getMemoryFunctionKind(), clang::interp::InterpState::getStdAllocatorCaller(), handleAvailabilityAttr(), clang::SemaObjC::handleBridgeAttr(), handleLoopHintAttr(), handleObjCGCTypeAttr(), handleObjCOwnershipTypeAttr(), clang::TemplateDeclInstantiator::InstantiateTypedefNameDecl(), clang::interp::interp__builtin_is_within_lifetime(), clang::Type::isAlignValT(), IsDeclSourceLocationCurrent(), isDestroyingDeleteT(), isEnableIf(), clang::TypoCorrection::isKeyword(), clang::Sema::isLibstdcxxEagerExceptionSpecHack(), isMainVar(), isNamed(), clang::Type::isNothrowT(), isObjCProtectedMacro(), clang::Type::isStdByteType(), IsStdFunction(), clang::DeclContext::isStdNamespace(), clang::FunctionDecl::isUsableAsGlobalAllocationFunctionInConstantEvaluation(), isWideStringLiteralFromMacro(), clang::Preprocessor::LexOnOffSwitch(), ParseAlignPragma(), clang::Preprocessor::ParsePragmaPushOrPopMacro(), clang::CodeGen::CodeGenFunction::StartFunction(), and clang::CodeGen::CodeGenFunction::StartObjCMethod().

◆ isStr() [2/2]

bool clang::IdentifierInfo::isStr ( llvm::StringRef Str) const
inline

Return true if this is the identifier for the specified StringRef.

Definition at line 237 of file IdentifierTable.h.

References getLength(), and getNameStart().

◆ operator<()

bool clang::IdentifierInfo::operator< ( const IdentifierInfo & RHS) const
inline

Provide less than operator for lexicographical sorting.

Definition at line 566 of file IdentifierTable.h.

References getName().

◆ operator=() [1/2]

IdentifierInfo & clang::IdentifierInfo::operator= ( const IdentifierInfo & )
delete

◆ operator=() [2/2]

IdentifierInfo & clang::IdentifierInfo::operator= ( IdentifierInfo && )
delete

◆ revertIdentifierToTokenID()

void clang::IdentifierInfo::revertIdentifierToTokenID ( tok::TokenKind TK)
inline

Definition at line 332 of file IdentifierTable.h.

◆ revertTokenIDToIdentifier()

void clang::IdentifierInfo::revertTokenIDToIdentifier ( )
inline

Revert TokenID to tok::identifier; used for GNU libstdc++ 4.2 compatibility.

TokenID is normally read-only but there are 2 instances where we revert it to tok::identifier for libstdc++ 4.2. Keep track of when this happens using this method so we can inform serialization about it.

Definition at line 327 of file IdentifierTable.h.

Referenced by clang::serialization::reader::ASTIdentifierLookupTrait::ReadData().

◆ setBuiltinID()

void clang::IdentifierInfo::setBuiltinID ( unsigned ID)
inline

◆ setChangedSinceDeserialization()

void clang::IdentifierInfo::setChangedSinceDeserialization ( )
inline

Note that this identifier has changed since it was loaded from an AST file.

Definition at line 489 of file IdentifierTable.h.

Referenced by clang::Preprocessor::appendMacroDirective(), clang::Preprocessor::HandlePragmaPoison(), and markIdentifierFromAST().

◆ setFETokenInfo()

void clang::IdentifierInfo::setFETokenInfo ( void * T)
inline

Definition at line 465 of file IdentifierTable.h.

References clang::T.

◆ setFETokenInfoChangedSinceDeserialization()

void clang::IdentifierInfo::setFETokenInfoChangedSinceDeserialization ( )
inline

Note that the frontend token information for this identifier has changed since it was loaded from an AST file.

Definition at line 501 of file IdentifierTable.h.

◆ setHandleIdentifierCase()

void clang::IdentifierInfo::setHandleIdentifierCase ( bool Val = true)
inline

Definition at line 473 of file IdentifierTable.h.

Referenced by MarkIdentifierAsKeywordInCpp().

◆ setHasMacroDefinition()

void clang::IdentifierInfo::setHasMacroDefinition ( bool Val)
inline

◆ setIsCPlusPlusOperatorKeyword()

void clang::IdentifierInfo::setIsCPlusPlusOperatorKeyword ( bool Val = true)
inline

isCPlusPlusOperatorKeyword/setIsCPlusPlusOperatorKeyword controls whether this identifier is a C++ alternate representation of an operator.

Definition at line 446 of file IdentifierTable.h.

Referenced by AddCXXOperatorKeyword().

◆ setIsDeprecatedMacro()

void clang::IdentifierInfo::setIsDeprecatedMacro ( bool Val)
inline

Definition at line 287 of file IdentifierTable.h.

◆ setIsExtensionToken()

void clang::IdentifierInfo::setIsExtensionToken ( bool Val)
inline

Definition at line 409 of file IdentifierTable.h.

Referenced by AddKeyword().

◆ setIsFinal()

void clang::IdentifierInfo::setIsFinal ( bool Val)
inline

Definition at line 311 of file IdentifierTable.h.

◆ setIsFromAST()

void clang::IdentifierInfo::setIsFromAST ( )
inline

Definition at line 479 of file IdentifierTable.h.

Referenced by markIdentifierFromAST().

◆ setIsFutureCompatKeyword()

void clang::IdentifierInfo::setIsFutureCompatKeyword ( bool Val)
inline

Definition at line 423 of file IdentifierTable.h.

Referenced by AddKeyword(), and clang::Preprocessor::HandleIdentifier().

◆ setIsKeywordInCPlusPlus()

void clang::IdentifierInfo::setIsKeywordInCPlusPlus ( bool Val = true)
inline

Definition at line 453 of file IdentifierTable.h.

Referenced by MarkIdentifierAsKeywordInCpp().

◆ setIsPoisoned()

void clang::IdentifierInfo::setIsPoisoned ( bool Value = true)
inline

setIsPoisoned - Mark this identifier as poisoned.

After poisoning, the Preprocessor will emit an error every time this token is used.

Definition at line 433 of file IdentifierTable.h.

Referenced by clang::Preprocessor::HandleIdentifier(), clang::Preprocessor::HandlePragmaPoison(), and clang::serialization::reader::ASTIdentifierLookupTrait::ReadData().

◆ setIsRestrictExpansion()

void clang::IdentifierInfo::setIsRestrictExpansion ( bool Val)
inline

Definition at line 299 of file IdentifierTable.h.

◆ setMangledOpenMPVariantName()

void clang::IdentifierInfo::setMangledOpenMPVariantName ( bool I)
inline

Set whether this is the mangled name of an OpenMP variant.

Definition at line 535 of file IdentifierTable.h.

Referenced by clang::SemaOpenMP::ActOnStartOfFunctionDefinitionInOpenMPDeclareVariantScope().

◆ setModulesImport()

void clang::IdentifierInfo::setModulesImport ( bool I)
inline

Set whether this identifier is the contextual keyword import.

Definition at line 523 of file IdentifierTable.h.

Referenced by clang::IdentifierTable::AddKeywords(), and clang::IdentifierTable::getOwn().

◆ setNotableIdentifierID()

void clang::IdentifierInfo::setNotableIdentifierID ( unsigned ID)
inline

Definition at line 394 of file IdentifierTable.h.

References getNotableIdentifierID(), and clang::NUM_OBJC_KEYWORDS.

Referenced by AddNotableIdentifier().

◆ setObjCKeywordID()

void clang::IdentifierInfo::setObjCKeywordID ( tok::ObjCKeywordKind ID)
inline

Definition at line 353 of file IdentifierTable.h.

References getObjCKeywordID().

Referenced by AddObjCKeyword().

◆ setObjCOrBuiltinID()

void clang::IdentifierInfo::setObjCOrBuiltinID ( unsigned ID)
inline

◆ setOutOfDate()

void clang::IdentifierInfo::setOutOfDate ( bool OOD)
inline

Set whether the information for this identifier is out of date with respect to the external source.

Definition at line 511 of file IdentifierTable.h.

Referenced by clang::ASTReader::ReadAST().

◆ IdentifierTable

friend class IdentifierTable
friend

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