clang
3.7.0
|
Declaration of a function specialization at template class scope. More...
#include <DeclTemplate.h>
Public Member Functions | |
CXXMethodDecl * | getSpecialization () const |
bool | hasExplicitTemplateArgs () const |
const TemplateArgumentListInfo & | templateArgs () const |
![]() | |
virtual SourceRange | getSourceRange () const LLVM_READONLY |
Source range that this declaration covers. More... | |
SourceLocation | getLocStart () const LLVM_READONLY |
SourceLocation | getLocEnd () const LLVM_READONLY |
SourceLocation | getLocation () const |
void | setLocation (SourceLocation L) |
Kind | getKind () const |
const char * | getDeclKindName () const |
Decl * | getNextDeclInContext () |
const Decl * | getNextDeclInContext () const |
DeclContext * | getDeclContext () |
const DeclContext * | getDeclContext () const |
Decl * | getNonClosureContext () |
const Decl * | getNonClosureContext () const |
TranslationUnitDecl * | getTranslationUnitDecl () |
const TranslationUnitDecl * | getTranslationUnitDecl () const |
bool | isInAnonymousNamespace () const |
bool | isInStdNamespace () const |
ASTContext & | getASTContext () const LLVM_READONLY |
void | setAccess (AccessSpecifier AS) |
AccessSpecifier | getAccess () const |
AccessSpecifier | getAccessUnsafe () const |
Retrieve the access specifier for this declaration, even though it may not yet have been properly set. More... | |
bool | hasAttrs () const |
void | setAttrs (const AttrVec &Attrs) |
AttrVec & | getAttrs () |
const AttrVec & | getAttrs () const |
void | dropAttrs () |
void | addAttr (Attr *A) |
attr_range | attrs () const |
attr_iterator | attr_begin () const |
attr_iterator | attr_end () const |
template<typename T > | |
void | dropAttr () |
template<typename T > | |
llvm::iterator_range < specific_attr_iterator< T > > | specific_attrs () const |
template<typename T > | |
specific_attr_iterator< T > | specific_attr_begin () const |
template<typename T > | |
specific_attr_iterator< T > | specific_attr_end () const |
template<typename T > | |
T * | getAttr () const |
template<typename T > | |
bool | hasAttr () const |
unsigned | getMaxAlignment () const |
void | setInvalidDecl (bool Invalid=true) |
bool | isInvalidDecl () const |
bool | isImplicit () const |
void | setImplicit (bool I=true) |
bool | isUsed (bool CheckUsedAttr=true) const |
Whether this declaration was used, meaning that a definition is required. More... | |
void | setIsUsed () |
Set whether the declaration is used, in the sense of odr-use. More... | |
void | markUsed (ASTContext &C) |
Mark the declaration used, in the sense of odr-use. More... | |
bool | isReferenced () const |
Whether any declaration of this entity was referenced. More... | |
bool | isThisDeclarationReferenced () const |
Whether this declaration was referenced. This should not be relied upon for anything other than debugging. More... | |
void | setReferenced (bool R=true) |
bool | isTopLevelDeclInObjCContainer () const |
Whether this declaration is a top-level declaration (function, global variable, etc.) that is lexically inside an objc container definition. More... | |
void | setTopLevelDeclInObjCContainer (bool V=true) |
bool | isModulePrivate () const |
Whether this declaration was marked as being private to the module in which it was defined. More... | |
AvailabilityResult | getAvailability (std::string *Message=nullptr) const |
Determine the availability of the given declaration. More... | |
bool | isDeprecated (std::string *Message=nullptr) const |
Determine whether this declaration is marked 'deprecated'. More... | |
bool | isUnavailable (std::string *Message=nullptr) const |
Determine whether this declaration is marked 'unavailable'. More... | |
bool | isWeakImported () const |
Determine whether this is a weak-imported symbol. More... | |
bool | canBeWeakImported (bool &IsDefinition) const |
Determines whether this symbol can be weak-imported, e.g., whether it would be well-formed to add the weak_import attribute. More... | |
bool | isFromASTFile () const |
Determine whether this declaration came from an AST file (such as a precompiled header or module) rather than having been parsed. More... | |
unsigned | getGlobalID () const |
Retrieve the global declaration ID associated with this declaration, which specifies where in the. More... | |
unsigned | getOwningModuleID () const |
Retrieve the global ID of the module that owns this particular declaration. More... | |
Module * | getImportedOwningModule () const |
Get the imported owning module, if this decl is from an imported (non-local) module. More... | |
Module * | getLocalOwningModule () const |
Get the local owning module, if known. Returns nullptr if owner is not yet known or declaration is not from a module. More... | |
void | setLocalOwningModule (Module *M) |
unsigned | getIdentifierNamespace () const |
bool | isInIdentifierNamespace (unsigned NS) const |
bool | hasTagIdentifierNamespace () const |
DeclContext * | getLexicalDeclContext () |
const DeclContext * | getLexicalDeclContext () const |
virtual bool | isOutOfLine () const |
void | setDeclContext (DeclContext *DC) |
void | setLexicalDeclContext (DeclContext *DC) |
bool | isDefinedOutsideFunctionOrMethod () const |
const DeclContext * | getParentFunctionOrMethod () const |
If this decl is defined inside a function/method/block it returns the corresponding DeclContext, otherwise it returns null. More... | |
DeclContext * | getParentFunctionOrMethod () |
virtual Decl * | getCanonicalDecl () |
Retrieves the "canonical" declaration of the given declaration. More... | |
const Decl * | getCanonicalDecl () const |
bool | isCanonicalDecl () const |
Whether this particular Decl is a canonical one. More... | |
redecl_range | redecls () const |
Returns an iterator range for all the redeclarations of the same decl. It will iterate at least once (when this decl is the only one). More... | |
redecl_iterator | redecls_begin () const |
redecl_iterator | redecls_end () const |
Decl * | getPreviousDecl () |
Retrieve the previous declaration that declares the same entity as this declaration, or NULL if there is no previous declaration. More... | |
const Decl * | getPreviousDecl () const |
Retrieve the most recent declaration that declares the same entity as this declaration, or NULL if there is no previous declaration. More... | |
bool | isFirstDecl () const |
True if this is the first declaration in its redeclaration chain. More... | |
Decl * | getMostRecentDecl () |
Retrieve the most recent declaration that declares the same entity as this declaration (which may be this declaration). More... | |
const Decl * | getMostRecentDecl () const |
Retrieve the most recent declaration that declares the same entity as this declaration (which may be this declaration). More... | |
virtual Stmt * | getBody () const |
virtual bool | hasBody () const |
Returns true if this Decl represents a declaration for a body of code, such as a function or method definition. Note that hasBody can also return true if any redeclaration of this Decl represents a declaration for a body of code. More... | |
SourceLocation | getBodyRBrace () const |
bool | isTemplateParameter () const |
bool | isTemplateParameterPack () const |
bool | isParameterPack () const |
Whether this declaration is a parameter pack. More... | |
bool | isTemplateDecl () const |
returns true if this declaration is a template More... | |
bool | isFunctionOrFunctionTemplate () const |
Whether this declaration is a function or function template. More... | |
FunctionDecl * | getAsFunction () LLVM_READONLY |
Returns the function itself, or the templated function if this is a function template. More... | |
const FunctionDecl * | getAsFunction () const |
void | setLocalExternDecl () |
Changes the namespace of this declaration to reflect that it's a function-local extern declaration. More... | |
bool | isLocalExternDecl () |
Determine whether this is a block-scope declaration with linkage. This will either be a local variable declaration declared 'extern', or a local function declaration. More... | |
void | setObjectOfFriendDecl (bool PerformFriendInjection=false) |
Changes the namespace of this declaration to reflect that it's the object of a friend declaration. More... | |
FriendObjectKind | getFriendObjectKind () const |
Determines whether this declaration is the object of a friend declaration and, if so, what kind. More... | |
void | setNonMemberOperator () |
Specifies that this declaration is a C++ overloaded non-member. More... | |
void | print (raw_ostream &Out, unsigned Indentation=0, bool PrintInstantiation=false) const |
void | print (raw_ostream &Out, const PrintingPolicy &Policy, unsigned Indentation=0, bool PrintInstantiation=false) const |
void | dump () const |
void | dumpColor () const |
void | dump (raw_ostream &Out) const |
const FunctionType * | getFunctionType (bool BlocksToo=true) const |
Looks through the Decl's underlying type to extract a FunctionType when possible. Will return null if the type underlying the Decl does not have a FunctionType. More... | |
Static Public Member Functions | |
static ClassScopeFunctionSpecializationDecl * | Create (ASTContext &C, DeclContext *DC, SourceLocation Loc, CXXMethodDecl *FD, bool HasExplicitTemplateArgs, TemplateArgumentListInfo TemplateArgs) |
static ClassScopeFunctionSpecializationDecl * | CreateDeserialized (ASTContext &Context, unsigned ID) |
static bool | classof (const Decl *D) |
static bool | classofKind (Kind K) |
![]() | |
static unsigned | getIdentifierNamespaceForKind (Kind DK) |
static bool | isTagIdentifierNamespace (unsigned NS) |
static void | add (Kind k) |
static void | EnableStatistics () |
static void | PrintStats () |
static bool | classofKind (Kind K) |
static DeclContext * | castToDeclContext (const Decl *) |
static Decl * | castFromDeclContext (const DeclContext *) |
static void | printGroup (Decl **Begin, unsigned NumDecls, raw_ostream &Out, const PrintingPolicy &Policy, unsigned Indentation=0) |
Friends | |
class | ASTDeclReader |
class | ASTDeclWriter |
Additional Inherited Members | |
![]() | |
enum | Kind |
Lists the kind of concrete classes of Decl. More... | |
enum | IdentifierNamespace { IDNS_Label = 0x0001, IDNS_Tag = 0x0002, IDNS_Type = 0x0004, IDNS_Member = 0x0008, IDNS_Namespace = 0x0010, IDNS_Ordinary = 0x0020, IDNS_ObjCProtocol = 0x0040, IDNS_OrdinaryFriend = 0x0080, IDNS_TagFriend = 0x0100, IDNS_Using = 0x0200, IDNS_NonMemberOperator = 0x0400, IDNS_LocalExtern = 0x0800 } |
enum | ObjCDeclQualifier { OBJC_TQ_None = 0x0, OBJC_TQ_In = 0x1, OBJC_TQ_Inout = 0x2, OBJC_TQ_Out = 0x4, OBJC_TQ_Bycopy = 0x8, OBJC_TQ_Byref = 0x10, OBJC_TQ_Oneway = 0x20, OBJC_TQ_CSNullability = 0x40 } |
enum | FriendObjectKind { FOK_None, FOK_Declared, FOK_Undeclared } |
typedef AttrVec::const_iterator | attr_iterator |
typedef llvm::iterator_range < attr_iterator > | attr_range |
typedef llvm::iterator_range < redecl_iterator > | redecl_range |
![]() | |
enum | { TopLevelDeclInObjCContainerFlag = 0x01, ModulePrivateFlag = 0x02 } |
![]() | |
void * | operator new (std::size_t Size, const ASTContext &Ctx, unsigned ID, std::size_t Extra=0) |
Allocate memory for a deserialized declaration. More... | |
void * | operator new (std::size_t Size, const ASTContext &Ctx, DeclContext *Parent, std::size_t Extra=0) |
Allocate memory for a non-deserialized declaration. More... | |
Decl (Kind DK, DeclContext *DC, SourceLocation L) | |
Decl (Kind DK, EmptyShell Empty) | |
virtual | ~Decl () |
void | updateOutOfDate (IdentifierInfo &II) const |
Update a potentially out-of-date declaration. More... | |
Linkage | getCachedLinkage () const |
void | setCachedLinkage (Linkage L) const |
bool | hasCachedLinkage () const |
void | setModulePrivate (bool MP=true) |
Specify whether this declaration was marked as being private to the module in which it was defined. More... | |
void | setOwningModuleID (unsigned ID) |
Set the owning module ID. More... | |
bool | hasLocalOwningModuleStorage () const |
virtual Decl * | getNextRedeclarationImpl () |
Returns the next redeclaration or itself if this is the only decl. More... | |
virtual Decl * | getPreviousDeclImpl () |
Implementation of getPreviousDecl(), to be overridden by any subclass that has a redeclaration chain. More... | |
virtual Decl * | getMostRecentDeclImpl () |
Implementation of getMostRecentDecl(), to be overridden by any subclass that has a redeclaration chain. More... | |
ASTMutationListener * | getASTMutationListener () const |
![]() | |
llvm::PointerIntPair< Decl *, 2, unsigned > | NextInContextAndBits |
The next declaration within the same lexical DeclContext. These pointers form the linked list that is traversed via DeclContext's decls_begin()/decls_end(). More... | |
unsigned | Access: 2 |
Access - Used by C++ decls for the access specifier. More... | |
unsigned | FromASTFile: 1 |
Whether this declaration was loaded from an AST file. More... | |
unsigned | Hidden: 1 |
Whether this declaration is hidden from normal name lookup, e.g., because it is was loaded from an AST file is either module-private or because its submodule has not been made visible. More... | |
unsigned | IdentifierNamespace: 12 |
IdentifierNamespace - This specifies what IDNS_* namespace this lives in. More... | |
unsigned | CacheValidAndLinkage: 3 |
If 0, we have not computed the linkage of this declaration. Otherwise, it is the linkage + 1. More... | |
Declaration of a function specialization at template class scope.
This is a non-standard extension needed to support MSVC.
For example:
"template<> foo(int a)" will be saved in Specialization as a normal CXXMethodDecl. Then during an instantiation of class A, it will be transformed into an actual function specialization.
Definition at line 2273 of file DeclTemplate.h.
Definition at line 2309 of file DeclTemplate.h.
References clang::Decl::getKind().
Definition at line 2310 of file DeclTemplate.h.
|
inlinestatic |
Definition at line 2295 of file DeclTemplate.h.
References AttributeLangSupport::C.
Referenced by clang::Sema::ActOnFunctionDeclarator().
|
static |
Definition at line 953 of file DeclTemplate.cpp.
References AttributeLangSupport::C.
|
inline |
Definition at line 2291 of file DeclTemplate.h.
Referenced by clang::ASTDeclWriter::VisitClassScopeFunctionSpecializationDecl().
|
inline |
Definition at line 2292 of file DeclTemplate.h.
|
inline |
Definition at line 2293 of file DeclTemplate.h.
|
friend |
Definition at line 2314 of file DeclTemplate.h.
|
friend |
Definition at line 2315 of file DeclTemplate.h.