clang  5.0.0
Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Friends | List of all members
clang::DeclarationName Class Reference

DeclarationName - The name of a declaration. More...

#include "clang/AST/DeclarationName.h"

Collaboration diagram for clang::DeclarationName:
[legend]

Public Types

enum  NameKind {
  Identifier, ObjCZeroArgSelector, ObjCOneArgSelector, ObjCMultiArgSelector,
  CXXConstructorName, CXXDestructorName, CXXConversionFunctionName, CXXDeductionGuideName,
  CXXOperatorName, CXXLiteralOperatorName, CXXUsingDirective
}
 NameKind - The kind of name this object contains. More...
 

Public Member Functions

 DeclarationName ()
 DeclarationName - Used to create an empty selector. More...
 
 DeclarationName (const IdentifierInfo *II)
 
 DeclarationName (Selector Sel)
 
 operator bool () const
 
bool isEmpty () const
 Evaluates true when this declaration name is empty. More...
 
bool isIdentifier () const
 Predicate functions for querying what type of name this is. More...
 
bool isObjCZeroArgSelector () const
 
bool isObjCOneArgSelector () const
 
NameKind getNameKind () const
 getNameKind - Determine what kind of name this is. More...
 
bool isDependentName () const
 Determines whether the name itself is dependent, e.g., because it involves a C++ type that is itself dependent. More...
 
std::string getAsString () const
 getNameAsString - Retrieve the human-readable string for this name. More...
 
IdentifierInfogetAsIdentifierInfo () const
 getAsIdentifierInfo - Retrieve the IdentifierInfo * stored in this declaration name, or NULL if this declaration name isn't a simple identifier. More...
 
uintptr_t getAsOpaqueInteger () const
 getAsOpaqueInteger - Get the representation of this declaration name as an opaque integer. More...
 
void * getAsOpaquePtr () const
 getAsOpaquePtr - Get the representation of this declaration name as an opaque pointer. More...
 
QualType getCXXNameType () const
 getCXXNameType - If this name is one of the C++ names (of a constructor, destructor, or conversion function), return the type associated with that name. More...
 
TemplateDeclgetCXXDeductionGuideTemplate () const
 If this name is the name of a C++ deduction guide, return the template associated with that name. More...
 
OverloadedOperatorKind getCXXOverloadedOperator () const
 getCXXOverloadedOperator - If this name is the name of an overloadable operator in C++ (e.g., operator+), retrieve the kind of overloaded operator. More...
 
IdentifierInfogetCXXLiteralIdentifier () const
 getCXXLiteralIdentifier - If this name is the name of a literal operator, retrieve the identifier associated with it. More...
 
Selector getObjCSelector () const
 getObjCSelector - Get the Objective-C selector stored in this declaration name. More...
 
template<typename T >
T * getFETokenInfo () const
 getFETokenInfo/setFETokenInfo - The language front-end is allowed to associate arbitrary metadata with some kinds of declaration names, including normal identifiers and C++ constructors, destructors, and conversion functions. More...
 
void setFETokenInfo (void *T)
 
void print (raw_ostream &OS, const PrintingPolicy &Policy)
 
void dump () const
 

Static Public Member Functions

static DeclarationName getUsingDirectiveName ()
 getUsingDirectiveName - Return name for all using-directives. More...
 
static DeclarationName getFromOpaquePtr (void *P)
 
static DeclarationName getFromOpaqueInteger (uintptr_t P)
 
static DeclarationName getEmptyMarker ()
 
static DeclarationName getTombstoneMarker ()
 
static int compare (DeclarationName LHS, DeclarationName RHS)
 

Static Public Attributes

static const unsigned NumNameKinds = CXXUsingDirective + 1
 

Friends

class DeclarationNameTable
 
class NamedDecl
 
bool operator== (DeclarationName LHS, DeclarationName RHS)
 operator== - Determine whether the specified names are identical.. More...
 
bool operator!= (DeclarationName LHS, DeclarationName RHS)
 operator!= - Determine whether the specified names are different. More...
 

Detailed Description

DeclarationName - The name of a declaration.

In the common case, this just stores an IdentifierInfo pointer to a normal name. However, it also provides encodings for Objective-C selectors (optimizing zero- and one-argument selectors, which make up 78% percent of all selectors in Cocoa.h) and special C++ names for constructors, destructors, and conversion functions.

Definition at line 50 of file DeclarationName.h.

Member Enumeration Documentation

NameKind - The kind of name this object contains.

Enumerator
Identifier 
ObjCZeroArgSelector 
ObjCOneArgSelector 
ObjCMultiArgSelector 
CXXConstructorName 
CXXDestructorName 
CXXConversionFunctionName 
CXXDeductionGuideName 
CXXOperatorName 
CXXLiteralOperatorName 
CXXUsingDirective 

Definition at line 53 of file DeclarationName.h.

Constructor & Destructor Documentation

clang::DeclarationName::DeclarationName ( )
inline

DeclarationName - Used to create an empty selector.

Definition at line 169 of file DeclarationName.h.

Referenced by getEmptyMarker(), getTombstoneMarker(), and getUsingDirectiveName().

clang::DeclarationName::DeclarationName ( const IdentifierInfo II)
inline

Definition at line 172 of file DeclarationName.h.

clang::DeclarationName::DeclarationName ( Selector  Sel)
inline

Definition at line 178 of file DeclarationName.h.

Member Function Documentation

int clang::DeclarationName::compare ( DeclarationName  LHS,
DeclarationName  RHS 
)
static
LLVM_DUMP_METHOD void DeclarationName::dump ( ) const

Definition at line 415 of file DeclarationName.cpp.

IdentifierInfo* clang::DeclarationName::getAsIdentifierInfo ( ) const
inline

getAsIdentifierInfo - Retrieve the IdentifierInfo * stored in this declaration name, or NULL if this declaration name isn't a simple identifier.

Definition at line 221 of file DeclarationName.h.

References isIdentifier().

Referenced by clang::Sema::ActOnCXXMemberDeclarator(), clang::Sema::ActOnIdExpression(), clang::Sema::ActOnVariableDeclarator(), clang::IdentifierResolver::AddDecl(), clang::ODRHash::AddDeclarationName(), clang::ASTRecordWriter::AddDeclarationName(), clang::IdentifierResolver::begin(), clang::Sema::BuildUsingDeclaration(), CalculateHiddenNames(), clang::Sema::CheckFieldDecl(), clang::Sema::CheckTemplateTypeArgument(), compare(), clang::Sema::CorrectTypo(), clang::Sema::CorrectTypoDelayed(), clang::UnresolvedUsingTypenameDecl::Create(), CreateNewFunctionDecl(), clang::serialization::DeclarationNameKey::DeclarationNameKey(), DiagnoseDirectIsaAccess(), DiagnoseInvalidRedeclaration(), clang::TypoCorrection::getCorrectionAsIdentifierInfo(), getFETokenInfo(), clang::NamedDecl::getIdentifier(), getOrderedName(), clang::Sema::HandleExprPropertyRefExpr(), clang::ASTImporter::Import(), clang::IdentifierResolver::InsertDeclAfter(), isCXXSharedPtrDtor(), LookupBuiltin(), print(), clang::IdentifierResolver::RemoveDecl(), setFETokenInfo(), clang::IdentifierResolver::tryAddTopLevelDecl(), clang::ASTNodeImporter::VisitEnumConstantDecl(), clang::ASTNodeImporter::VisitEnumDecl(), clang::ASTNodeImporter::VisitFieldDecl(), clang::ASTNodeImporter::VisitImplicitParamDecl(), clang::ASTNodeImporter::VisitIndirectFieldDecl(), clang::ASTNodeImporter::VisitLabelDecl(), clang::ASTNodeImporter::VisitNamespaceDecl(), clang::ASTNodeImporter::VisitNonTypeTemplateParmDecl(), clang::ASTNodeImporter::VisitObjCCategoryDecl(), clang::ASTNodeImporter::VisitObjCInterfaceDecl(), clang::ASTNodeImporter::VisitObjCIvarDecl(), clang::ASTNodeImporter::VisitObjCPropertyDecl(), clang::ASTNodeImporter::VisitObjCProtocolDecl(), clang::ASTNodeImporter::VisitObjCTypeParamDecl(), clang::ASTNodeImporter::VisitParmVarDecl(), clang::ASTNodeImporter::VisitRecordDecl(), clang::ASTNodeImporter::VisitTemplateTemplateParmDecl(), clang::ASTNodeImporter::VisitTypedefNameDecl(), clang::ASTNodeImporter::VisitVarDecl(), and clang::ASTNodeImporter::VisitVarTemplateDecl().

uintptr_t clang::DeclarationName::getAsOpaqueInteger ( ) const
inline

getAsOpaqueInteger - Get the representation of this declaration name as an opaque integer.

Definition at line 229 of file DeclarationName.h.

Referenced by clang::operator<<().

void* clang::DeclarationName::getAsOpaquePtr ( ) const
inline

getAsOpaquePtr - Get the representation of this declaration name as an opaque pointer.

Definition at line 233 of file DeclarationName.h.

Referenced by llvm::DenseMapInfo< clang::DeclarationName >::getHashValue().

std::string DeclarationName::getAsString ( ) const
TemplateDecl * DeclarationName::getCXXDeductionGuideTemplate ( ) const
IdentifierInfo * DeclarationName::getCXXLiteralIdentifier ( ) const
QualType DeclarationName::getCXXNameType ( ) const
OverloadedOperatorKind DeclarationName::getCXXOverloadedOperator ( ) const
static DeclarationName clang::DeclarationName::getEmptyMarker ( )
inlinestatic
template<typename T >
T* clang::DeclarationName::getFETokenInfo ( ) const
inline

getFETokenInfo/setFETokenInfo - The language front-end is allowed to associate arbitrary metadata with some kinds of declaration names, including normal identifiers and C++ constructors, destructors, and conversion functions.

Definition at line 280 of file DeclarationName.h.

References getAsIdentifierInfo().

Referenced by clang::IdentifierResolver::AddDecl(), clang::IdentifierResolver::begin(), clang::IdentifierResolver::iterator::incrementSlowCase(), clang::IdentifierResolver::InsertDeclAfter(), clang::IdentifierResolver::IdDeclInfoMap::operator[](), clang::IdentifierResolver::RemoveDecl(), and clang::IdentifierResolver::tryAddTopLevelDecl().

static DeclarationName clang::DeclarationName::getFromOpaqueInteger ( uintptr_t  P)
inlinestatic

Definition at line 241 of file DeclarationName.h.

References P.

Referenced by clang::FormatASTNodeDiagnosticArgument().

static DeclarationName clang::DeclarationName::getFromOpaquePtr ( void *  P)
inlinestatic

Definition at line 235 of file DeclarationName.h.

References P.

DeclarationName::NameKind DeclarationName::getNameKind ( ) const

getNameKind - Determine what kind of name this is.

Definition at line 261 of file DeclarationName.cpp.

References clang::DeclarationNameExtra::CXXConstructor, CXXConstructorName, clang::DeclarationNameExtra::CXXConversionFunction, CXXConversionFunctionName, clang::DeclarationNameExtra::CXXDeductionGuide, CXXDeductionGuideName, clang::DeclarationNameExtra::CXXDestructor, CXXDestructorName, clang::DeclarationNameExtra::CXXLiteralOperator, CXXLiteralOperatorName, CXXOperatorName, CXXUsingDirective, clang::DeclarationNameExtra::CXXUsingDirective, Identifier, ObjCMultiArgSelector, ObjCOneArgSelector, and ObjCZeroArgSelector.

Referenced by clang::Sema::ActOnCXXMemberDeclarator(), clang::Sema::ActOnExplicitInstantiation(), clang::Sema::ActOnFunctionDeclarator(), clang::Sema::ActOnIdExpression(), clang::ODRHash::AddDeclarationName(), clang::ASTRecordWriter::AddDeclarationName(), clang::ASTRecordWriter::AddDeclarationNameLoc(), AddTypedNameChunk(), clang::Sema::BuildMemberPointerType(), clang::Sema::BuildUsingDeclaration(), CheckArityMismatch(), compare(), computeDeclRefDependence(), clang::DeclarationNameInfo::containsUnexpandedParameterPack(), clang::CXXConstructorDecl::Create(), clang::CXXDestructorDecl::Create(), clang::CXXConversionDecl::Create(), CreateNewFunctionDecl(), clang::DeclarationNameLoc::DeclarationNameLoc(), DeclareImplicitMemberFunctionsWithName(), clang::Sema::DiagnoseEmptyLookup(), clang::Sema::diagnoseQualifiedDeclaration(), clang::Sema::DiagnoseUnexpandedParameterPack(), clang::DeclarationNameInfo::getCXXLiteralOperatorNameLoc(), clang::DeclarationNameInfo::getCXXOperatorNameRange(), clang::DeclarationNameInfo::getEndLoc(), clang::DeclarationNameInfo::getNamedTypeInfo(), getObjCSelector(), clang::Sema::HideUsingShadowDecl(), clang::ASTImporter::Import(), clang::ASTNodeImporter::ImportDeclarationNameLoc(), isImplicitlyDeclaredMemberFunctionName(), clang::DeclarationNameInfo::isInstantiationDependent(), LookupDirect(), print(), clang::DeclarationNameInfo::printName(), clang::ASTReader::ReadDeclarationNameLoc(), clang::DeclarationNameInfo::setCXXLiteralOperatorNameLoc(), clang::DeclarationNameInfo::setCXXOperatorNameRange(), setFETokenInfo(), clang::DeclarationNameInfo::setNamedTypeInfo(), clang::TreeTransform< Derived >::TransformDeclarationNameInfo(), clang::RecursiveASTVisitor< Derived >::TraverseDeclarationNameInfo(), clang::ASTDeclWriter::VisitCXXMethodDecl(), clang::ASTDeclWriter::VisitEnumDecl(), clang::ASTDeclWriter::VisitRecordDecl(), clang::ASTDeclWriter::VisitTypedefDecl(), and clang::ASTDeclWriter::VisitVarDecl().

Selector clang::DeclarationName::getObjCSelector ( ) const
inline
static DeclarationName clang::DeclarationName::getTombstoneMarker ( )
inlinestatic
DeclarationName DeclarationName::getUsingDirectiveName ( )
static
bool DeclarationName::isDependentName ( ) const

Determines whether the name itself is dependent, e.g., because it involves a C++ type that is itself dependent.

Note that this does not capture all of the notions of "dependent name", because an identifier can be a dependent name if it is used as the callee in a call expression with dependent arguments.

Definition at line 301 of file DeclarationName.cpp.

References getCXXDeductionGuideTemplate(), getCXXNameType(), clang::Type::isDependentType(), and clang::QualType::isNull().

Referenced by clang::Sema::ActOnDependentMemberExpr(), clang::Sema::ActOnMemberAccessExpr(), and clang::Sema::CheckMicrosoftIfExistsSymbol().

bool clang::DeclarationName::isEmpty ( ) const
inline

Evaluates true when this declaration name is empty.

Definition at line 191 of file DeclarationName.h.

Referenced by clang::ODRHash::AddDeclarationName(), clang::index::printSymbolName(), shouldSkipNamelessDecl(), and clang::ASTNodeImporter::VisitIndirectFieldDecl().

bool clang::DeclarationName::isIdentifier ( ) const
inline
bool clang::DeclarationName::isObjCOneArgSelector ( ) const
inline

Definition at line 200 of file DeclarationName.h.

Referenced by hasDefaultSetterName().

bool clang::DeclarationName::isObjCZeroArgSelector ( ) const
inline

Definition at line 197 of file DeclarationName.h.

Referenced by getOrderedName(), and hasDefaultGetterName().

clang::DeclarationName::operator bool ( ) const
inlineexplicit

Definition at line 185 of file DeclarationName.h.

void clang::DeclarationName::print ( raw_ostream &  OS,
const PrintingPolicy Policy 
)
void DeclarationName::setFETokenInfo ( void *  T)

Friends And Related Function Documentation

friend class DeclarationNameTable
friend

Definition at line 160 of file DeclarationName.h.

friend class NamedDecl
friend

Definition at line 161 of file DeclarationName.h.

bool operator!= ( DeclarationName  LHS,
DeclarationName  RHS 
)
friend

operator!= - Determine whether the specified names are different.

Definition at line 294 of file DeclarationName.h.

bool operator== ( DeclarationName  LHS,
DeclarationName  RHS 
)
friend

operator== - Determine whether the specified names are identical..

Definition at line 289 of file DeclarationName.h.

Member Data Documentation

const unsigned clang::DeclarationName::NumNameKinds = CXXUsingDirective + 1
static

Definition at line 66 of file DeclarationName.h.


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