clang
3.7.0
|
Declaration of a class template. More...
#include <DeclTemplate.h>
Classes | |
struct | Common |
Data that is common to all of the declarations of a given class template. More... | |
Public Member Functions | |
void | LoadLazySpecializations () const |
Load any lazily-loaded specializations from the external source. More... | |
CXXRecordDecl * | getTemplatedDecl () const |
Get the underlying class declarations of the template. More... | |
bool | isThisDeclarationADefinition () const |
Returns whether this template declaration defines the primary class pattern. More... | |
ClassTemplateSpecializationDecl * | findSpecialization (ArrayRef< TemplateArgument > Args, void *&InsertPos) |
Return the specialization with the provided arguments if it exists, otherwise return the insertion point. More... | |
void | AddSpecialization (ClassTemplateSpecializationDecl *D, void *InsertPos) |
Insert the specified specialization knowing that it is not already in. InsertPos must be obtained from findSpecialization. More... | |
ClassTemplateDecl * | getCanonicalDecl () override |
Retrieves the canonical declaration of this template. More... | |
const ClassTemplateDecl * | getCanonicalDecl () const |
ClassTemplateDecl * | getPreviousDecl () |
Retrieve the previous declaration of this class template, or NULL if no such declaration exists. More... | |
const ClassTemplateDecl * | getPreviousDecl () const |
Retrieve the previous declaration of this class template, or NULL if no such declaration exists. More... | |
ClassTemplateDecl * | getMostRecentDecl () |
const ClassTemplateDecl * | getMostRecentDecl () const |
ClassTemplateDecl * | getInstantiatedFromMemberTemplate () |
ClassTemplatePartialSpecializationDecl * | findPartialSpecialization (ArrayRef< TemplateArgument > Args, void *&InsertPos) |
Return the partial specialization with the provided arguments if it exists, otherwise return the insertion point. More... | |
void | AddPartialSpecialization (ClassTemplatePartialSpecializationDecl *D, void *InsertPos) |
Insert the specified partial specialization knowing that it is not already in. InsertPos must be obtained from findPartialSpecialization. More... | |
void | getPartialSpecializations (SmallVectorImpl< ClassTemplatePartialSpecializationDecl * > &PS) |
Retrieve the partial specializations as an ordered list. More... | |
ClassTemplatePartialSpecializationDecl * | findPartialSpecialization (QualType T) |
Find a class template partial specialization with the given type T. More... | |
ClassTemplatePartialSpecializationDecl * | findPartialSpecInstantiatedFromMember (ClassTemplatePartialSpecializationDecl *D) |
Find a class template partial specialization which was instantiated from the given member partial specialization. More... | |
QualType | getInjectedClassNameSpecialization () |
Retrieve the template specialization type of the injected-class-name for this class template. More... | |
spec_range | specializations () const |
spec_iterator | spec_begin () const |
spec_iterator | spec_end () const |
![]() | |
const RedeclarableTemplateDecl * | getCanonicalDecl () const |
bool | isMemberSpecialization () const |
Determines whether this template was a specialization of a member template. More... | |
void | setMemberSpecialization () |
Note that this member template is a specialization. More... | |
RedeclarableTemplateDecl * | getInstantiatedFromMemberTemplate () const |
Retrieve the member template from which this template was instantiated, or NULL if this template was not instantiated from a member template. More... | |
void | setInstantiatedFromMemberTemplate (RedeclarableTemplateDecl *TD) |
![]() | |
TemplateParameterList * | getTemplateParameters () const |
Get the list of template parameters. More... | |
NamedDecl * | getTemplatedDecl () const |
Get the underlying, templated declaration. More... | |
SourceRange | getSourceRange () const override LLVM_READONLY |
Source range that this declaration covers. More... | |
void | init (NamedDecl *templatedDecl, TemplateParameterList *templateParams) |
Initialize the underlying templated declaration and template parameters. More... | |
![]() | |
IdentifierInfo * | getIdentifier () const |
StringRef | getName () const |
std::string | getNameAsString () const |
void | printName (raw_ostream &os) const |
DeclarationName | getDeclName () const |
void | setDeclName (DeclarationName N) |
Set the name of this declaration. More... | |
void | printQualifiedName (raw_ostream &OS) const |
void | printQualifiedName (raw_ostream &OS, const PrintingPolicy &Policy) const |
std::string | getQualifiedNameAsString () const |
virtual void | getNameForDiagnostic (raw_ostream &OS, const PrintingPolicy &Policy, bool Qualified) const |
bool | declarationReplaces (NamedDecl *OldD, bool IsKnownNewer=true) const |
Determine whether this declaration, if known to be well-formed within its context, will replace the declaration OldD if introduced into scope. A declaration will replace another declaration if, for example, it is a redeclaration of the same variable or function, but not if it is a declaration of a different kind (function vs. class) or an overloaded function. More... | |
bool | hasLinkage () const |
Determine whether this declaration has linkage. More... | |
bool | isHidden () const |
Determine whether this declaration is hidden from name lookup. More... | |
void | setHidden (bool Hide) |
Set whether this declaration is hidden from name lookup. More... | |
bool | isCXXClassMember () const |
Determine whether this declaration is a C++ class member. More... | |
bool | isCXXInstanceMember () const |
Determine whether the given declaration is an instance member of a C++ class. More... | |
Linkage | getLinkageInternal () const |
Determine what kind of linkage this entity has. This is not the linkage as defined by the standard or the codegen notion of linkage. It is just an implementation detail that is used to compute those. More... | |
Linkage | getFormalLinkage () const |
Get the linkage from a semantic point of view. Entities in anonymous namespaces are external (in c++98). More... | |
bool | hasExternalFormalLinkage () const |
True if this decl has external linkage. More... | |
bool | isExternallyVisible () const |
Visibility | getVisibility () const |
Determines the visibility of this entity. More... | |
LinkageInfo | getLinkageAndVisibility () const |
Determines the linkage and visibility of this entity. More... | |
Optional< Visibility > | getExplicitVisibility (ExplicitVisibilityKind kind) const |
If visibility was explicitly specified for this declaration, return that visibility. More... | |
bool | isLinkageValid () const |
True if the computed linkage is valid. Used for consistency checking. Should always return true. More... | |
bool | hasLinkageBeenComputed () const |
True if something has required us to compute the linkage of this declaration. More... | |
NamedDecl * | getUnderlyingDecl () |
Looks through UsingDecls and ObjCCompatibleAliasDecls for the underlying named decl. More... | |
const NamedDecl * | getUnderlyingDecl () const |
NamedDecl * | getMostRecentDecl () |
const NamedDecl * | getMostRecentDecl () const |
ObjCStringFormatFamily | getObjCFStringFormattingFamily () const |
![]() | |
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 () |
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... | |
![]() | |
Redeclarable (const ASTContext &Ctx) | |
RedeclarableTemplateDecl * | getPreviousDecl () |
Return the previous declaration of this declaration or NULL if this is the first declaration. More... | |
const RedeclarableTemplateDecl * | getPreviousDecl () const |
RedeclarableTemplateDecl * | getFirstDecl () |
Return the first declaration of this declaration or itself if this is the only declaration. More... | |
const RedeclarableTemplateDecl * | getFirstDecl () const |
Return the first declaration of this declaration or itself if this is the only declaration. More... | |
bool | isFirstDecl () const |
True if this is the first declaration in its redeclaration chain. More... | |
RedeclarableTemplateDecl * | getMostRecentDecl () |
Returns the most recent (re)declaration of this declaration. More... | |
const RedeclarableTemplateDecl * | getMostRecentDecl () const |
Returns the most recent (re)declaration of this declaration. More... | |
void | setPreviousDecl (RedeclarableTemplateDecl *PrevDecl) |
Set the previous declaration. If PrevDecl is NULL, set this as the first and only declaration. 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 |
Static Public Member Functions | |
static ClassTemplateDecl * | Create (ASTContext &C, DeclContext *DC, SourceLocation L, DeclarationName Name, TemplateParameterList *Params, NamedDecl *Decl, ClassTemplateDecl *PrevDecl) |
Create a class template node. More... | |
static ClassTemplateDecl * | CreateDeserialized (ASTContext &C, unsigned ID) |
Create an empty class template node. More... | |
static bool | classof (const Decl *D) |
static bool | classofKind (Kind K) |
![]() | |
static bool | classof (const Decl *D) |
static bool | classofKind (Kind K) |
![]() | |
static bool | classof (const Decl *D) |
static bool | classofKind (Kind K) |
![]() | |
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) |
Protected Member Functions | |
llvm::FoldingSetVector < ClassTemplateSpecializationDecl > & | getSpecializations () const |
Retrieve the set of specializations of this class template. More... | |
llvm::FoldingSetVector < ClassTemplatePartialSpecializationDecl > & | getPartialSpecializations () |
Retrieve the set of partial specializations of this class template. More... | |
ClassTemplateDecl (ASTContext &C, DeclContext *DC, SourceLocation L, DeclarationName Name, TemplateParameterList *Params, NamedDecl *Decl) | |
CommonBase * | newCommon (ASTContext &C) const override |
Common * | getCommonPtr () const |
![]() | |
template<class EntryType > | |
SpecEntryTraits< EntryType > ::DeclType * | findSpecializationImpl (llvm::FoldingSetVector< EntryType > &Specs, ArrayRef< TemplateArgument > Args, void *&InsertPos) |
template<class Derived , class EntryType > | |
void | addSpecializationImpl (llvm::FoldingSetVector< EntryType > &Specs, EntryType *Entry, void *InsertPos) |
CommonBase * | getCommonPtr () const |
Retrieves the "common" pointer shared by all (re-)declarations of the same template. Calling this routine may implicitly allocate memory for the common pointer. More... | |
RedeclarableTemplateDecl (Kind DK, ASTContext &C, DeclContext *DC, SourceLocation L, DeclarationName Name, TemplateParameterList *Params, NamedDecl *Decl) | |
![]() | |
TemplateDecl (Kind DK, DeclContext *DC, SourceLocation L, DeclarationName Name) | |
TemplateDecl (Kind DK, DeclContext *DC, SourceLocation L, DeclarationName Name, TemplateParameterList *Params) | |
TemplateDecl (Kind DK, DeclContext *DC, SourceLocation L, DeclarationName Name, TemplateParameterList *Params, NamedDecl *Decl) | |
![]() | |
NamedDecl (Kind DK, DeclContext *DC, SourceLocation L, DeclarationName N) | |
![]() | |
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 |
ASTMutationListener * | getASTMutationListener () const |
![]() | |
RedeclarableTemplateDecl * | getNextRedeclaration () const |
Friends | |
class | ASTDeclReader |
class | ASTDeclWriter |
Additional Inherited Members | |
![]() | |
enum | { TopLevelDeclInObjCContainerFlag = 0x01, ModulePrivateFlag = 0x02 } |
![]() | |
template<typename EntryType > | |
static SpecIterator< EntryType > | makeSpecIterator (llvm::FoldingSetVector< EntryType > &Specs, bool isEnd) |
![]() | |
static DeclLink | PreviousDeclLink (RedeclarableTemplateDecl *D) |
static DeclLink | LatestDeclLink (const ASTContext &Ctx) |
![]() | |
CommonBase * | Common |
Pointer to the common data shared by all declarations of this template. More... | |
![]() | |
NamedDecl * | TemplatedDecl |
TemplateParameterList * | TemplateParams |
![]() | |
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... | |
![]() | |
DeclLink | RedeclLink |
Points to the next redeclaration in the chain. More... | |
RedeclarableTemplateDecl * | First |
Declaration of a class template.
Definition at line 1887 of file DeclTemplate.h.
Definition at line 2060 of file DeclTemplate.h.
typedef llvm::iterator_range<spec_iterator> clang::ClassTemplateDecl::spec_range |
Definition at line 2061 of file DeclTemplate.h.
|
inlineprotected |
Definition at line 1925 of file DeclTemplate.h.
Referenced by Create(), and CreateDeserialized().
void ClassTemplateDecl::AddPartialSpecialization | ( | ClassTemplatePartialSpecializationDecl * | D, |
void * | InsertPos | ||
) |
Insert the specified partial specialization knowing that it is not already in. InsertPos must be obtained from findPartialSpecialization.
Definition at line 405 of file DeclTemplate.cpp.
References clang::Decl::getASTMutationListener(), getPartialSpecializations(), and clang::Decl::isCanonicalDecl().
void ClassTemplateDecl::AddSpecialization | ( | ClassTemplateSpecializationDecl * | D, |
void * | InsertPos | ||
) |
Insert the specified specialization knowing that it is not already in. InsertPos must be obtained from findSpecialization.
Definition at line 394 of file DeclTemplate.cpp.
References getSpecializations().
Definition at line 2076 of file DeclTemplate.h.
References clang::Decl::getKind().
Definition at line 2077 of file DeclTemplate.h.
|
static |
Create a class template node.
Definition at line 334 of file DeclTemplate.cpp.
References AdoptTemplateParameterList(), AttributeLangSupport::C, ClassTemplateDecl(), and clang::Redeclarable< decl_type >::setPreviousDecl().
Referenced by clang::Sema::CheckClassTemplate(), and clang::ASTNodeImporter::VisitClassTemplateDecl().
|
static |
Create an empty class template node.
Definition at line 348 of file DeclTemplate.cpp.
References AttributeLangSupport::C, and ClassTemplateDecl().
ClassTemplatePartialSpecializationDecl * ClassTemplateDecl::findPartialSpecialization | ( | ArrayRef< TemplateArgument > | Args, |
void *& | InsertPos | ||
) |
Return the partial specialization with the provided arguments if it exists, otherwise return the insertion point.
Definition at line 400 of file DeclTemplate.cpp.
References clang::RedeclarableTemplateDecl::findSpecializationImpl(), and getPartialSpecializations().
Referenced by clang::Sema::ActOnClassTemplateSpecialization(), and clang::TemplateDeclInstantiator::InstantiateClassTemplatePartialSpecialization().
ClassTemplatePartialSpecializationDecl * ClassTemplateDecl::findPartialSpecialization | ( | QualType | T | ) |
Find a class template partial specialization with the given type T.
T | a dependent type that names a specialization of this class template. |
T
, or NULL if no such partial specialization exists. Definition at line 434 of file DeclTemplate.cpp.
References Context, clang::Decl::getASTContext(), getPartialSpecializations(), clang::ASTContext::hasSameType(), and P.
ClassTemplatePartialSpecializationDecl * ClassTemplateDecl::findPartialSpecInstantiatedFromMember | ( | ClassTemplatePartialSpecializationDecl * | D | ) |
Find a class template partial specialization which was instantiated from the given member partial specialization.
D | a member class template partial specialization. |
Definition at line 450 of file DeclTemplate.cpp.
References clang::CXXRecordDecl::getCanonicalDecl(), getPartialSpecializations(), and P.
ClassTemplateSpecializationDecl * ClassTemplateDecl::findSpecialization | ( | ArrayRef< TemplateArgument > | Args, |
void *& | InsertPos | ||
) |
Return the specialization with the provided arguments if it exists, otherwise return the insertion point.
Definition at line 389 of file DeclTemplate.cpp.
References clang::RedeclarableTemplateDecl::findSpecializationImpl(), and getSpecializations().
Referenced by clang::Sema::ActOnClassTemplateSpecialization(), clang::Sema::ActOnExplicitInstantiation(), and clang::ASTNodeImporter::VisitClassTemplateSpecializationDecl().
|
inlineoverridevirtual |
Retrieves the canonical declaration of this template.
Reimplemented from clang::RedeclarableTemplateDecl.
Definition at line 1971 of file DeclTemplate.h.
References clang::RedeclarableTemplateDecl::getCanonicalDecl().
Referenced by clang::ASTWriter::AddedCXXTemplateSpecialization(), clang::Sema::FindInstantiatedDecl(), isInstantiationOf(), clang::Sema::isStdInitializerList(), MatchesFriend(), and clang::ASTDeclWriter::VisitClassTemplateSpecializationDecl().
|
inline |
Definition at line 1975 of file DeclTemplate.h.
References clang::RedeclarableTemplateDecl::getCanonicalDecl().
|
inlineprotected |
Definition at line 1932 of file DeclTemplate.h.
References clang::RedeclarableTemplateDecl::getCommonPtr().
Referenced by getInjectedClassNameSpecialization(), getPartialSpecializations(), getSpecializations(), LoadLazySpecializations(), clang::ASTDeclReader::VisitClassTemplateDecl(), and clang::ASTDeclReader::VisitClassTemplateSpecializationDeclImpl().
QualType ClassTemplateDecl::getInjectedClassNameSpecialization | ( | ) |
Retrieve the template specialization type of the injected-class-name for this class template.
The injected-class-name for a class template X
is X<template-args>
, where template-args
is formed from the template arguments that correspond to the template parameters of X
. For example:
Definition at line 465 of file DeclTemplate.cpp.
References Context, GenerateInjectedTemplateArgs(), clang::Decl::getASTContext(), getCommonPtr(), clang::TemplateDecl::getTemplateParameters(), clang::ASTContext::getTemplateSpecializationType(), clang::ClassTemplateDecl::Common::InjectedClassNameType, clang::QualType::isNull(), and clang::TemplateParameterList::size().
Referenced by clang::Sema::ActOnClassTemplateSpecialization(), clang::Sema::CheckClassTemplate(), and clang::ASTDeclReader::VisitClassTemplateDecl().
|
inline |
Definition at line 2003 of file DeclTemplate.h.
References clang::RedeclarableTemplateDecl::getInstantiatedFromMemberTemplate().
Referenced by clang::Sema::CheckClassTemplate(), clang::Sema::InstantiateClassTemplateSpecialization(), and isInstantiationOf().
|
inline |
Definition at line 1995 of file DeclTemplate.h.
Referenced by LoadLazySpecializations().
|
inline |
Definition at line 1999 of file DeclTemplate.h.
|
protected |
Retrieve the set of partial specializations of this class template.
Definition at line 376 of file DeclTemplate.cpp.
References getCommonPtr(), LoadLazySpecializations(), and clang::ClassTemplateDecl::Common::PartialSpecializations.
Referenced by AddPartialSpecialization(), findPartialSpecialization(), findPartialSpecInstantiatedFromMember(), getPartialSpecializations(), and clang::Sema::InstantiateClassTemplateSpecialization().
void ClassTemplateDecl::getPartialSpecializations | ( | SmallVectorImpl< ClassTemplatePartialSpecializationDecl * > & | PS | ) |
Retrieve the partial specializations as an ordered list.
Definition at line 421 of file DeclTemplate.cpp.
References getPartialSpecializations(), and P.
|
inline |
Retrieve the previous declaration of this class template, or NULL if no such declaration exists.
Definition at line 1982 of file DeclTemplate.h.
|
inline |
Retrieve the previous declaration of this class template, or NULL if no such declaration exists.
Definition at line 1989 of file DeclTemplate.h.
|
protected |
Retrieve the set of specializations of this class template.
Definition at line 370 of file DeclTemplate.cpp.
References getCommonPtr(), LoadLazySpecializations(), and clang::ClassTemplateDecl::Common::Specializations.
Referenced by AddSpecialization(), and findSpecialization().
|
inline |
Get the underlying class declarations of the template.
Definition at line 1941 of file DeclTemplate.h.
Referenced by clang::Sema::ActOnClassTemplateSpecialization(), clang::Sema::ActOnExplicitInstantiation(), clang::Sema::CheckClassTemplate(), getLVForClassMember(), clang::Sema::InstantiateClassTemplateSpecialization(), clang::Sema::isStdInitializerList(), IsStructurallyEquivalent(), clang::Sema::propagateDLLAttrToBaseClassTemplate(), clang::ASTNodeImporter::VisitClassTemplateDecl(), clang::ASTDeclReader::VisitClassTemplateDecl(), and clang::ASTDeclReader::VisitCXXRecordDeclImpl().
|
inline |
Returns whether this template declaration defines the primary class pattern.
Definition at line 1947 of file DeclTemplate.h.
void ClassTemplateDecl::LoadLazySpecializations | ( | ) | const |
Load any lazily-loaded specializations from the external source.
Definition at line 354 of file DeclTemplate.cpp.
References Context, clang::Decl::getASTContext(), getCommonPtr(), clang::ExternalASTSource::GetExternalDecl(), clang::ASTContext::getExternalSource(), getMostRecentDecl(), and clang::ClassTemplateDecl::Common::LazySpecializations.
Referenced by getPartialSpecializations(), and getSpecializations().
|
overrideprotectedvirtual |
Implements clang::RedeclarableTemplateDecl.
Definition at line 382 of file DeclTemplate.cpp.
References clang::ASTContext::AddDeallocation(), and AttributeLangSupport::C.
|
inline |
Definition at line 2067 of file DeclTemplate.h.
|
inline |
Definition at line 2071 of file DeclTemplate.h.
|
inline |
Definition at line 2063 of file DeclTemplate.h.
|
friend |
Definition at line 2079 of file DeclTemplate.h.
|
friend |
Definition at line 2080 of file DeclTemplate.h.