|
clang
5.0.0
|
Declaration of a class template. More...
#include "clang/AST/DeclTemplate.h"
Classes | |
| struct | Common |
| Data that is common to all of the declarations of a given class template. More... | |
Public Types | |
| typedef SpecIterator < ClassTemplateSpecializationDecl > | spec_iterator |
| typedef llvm::iterator_range < spec_iterator > | spec_range |
Public Types inherited from clang::RedeclarableTemplateDecl | |
| typedef redeclarable_base::redecl_range | redecl_range |
| typedef redeclarable_base::redecl_iterator | redecl_iterator |
Public Types inherited from clang::NamedDecl | |
| enum | ExplicitVisibilityKind { VisibilityForType, VisibilityForValue } |
| Kinds of explicit visibility. More... | |
Public Types inherited from clang::Decl | |
| 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, IDNS_OMPReduction = 0x1000 } |
| IdentifierNamespace - The different namespaces in which declarations may appear. More... | |
| 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 } |
| ObjCDeclQualifier - 'Qualifiers' written next to the return and parameter types in method declarations. More... | |
| enum | ModuleOwnershipKind : unsigned { ModuleOwnershipKind::Unowned, ModuleOwnershipKind::Visible, ModuleOwnershipKind::VisibleWhenImported, ModuleOwnershipKind::ModulePrivate } |
| The kind of ownership a declaration has, for visibility purposes. More... | |
| 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 |
Public Types inherited from clang::Redeclarable< RedeclarableTemplateDecl > | |
| typedef llvm::iterator_range < redecl_iterator > | redecl_range |
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. 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 () const |
| 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. 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 |
Public Member Functions inherited from clang::RedeclarableTemplateDecl | |
| 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) |
Public Member Functions inherited from clang::TemplateDecl | |
| TemplateParameterList * | getTemplateParameters () const |
| Get the list of template parameters. More... | |
| const Expr * | getRequiresClause () const |
| Get the constraint-expression from the associated requires-clause (if any) More... | |
| Expr * | getAssociatedConstraints () const |
| NamedDecl * | getTemplatedDecl () const |
| Get the underlying, templated declaration. More... | |
| SourceRange | getSourceRange () const override LLVM_READONLY |
| Source range that this declaration covers. More... | |
| bool | isConcept () const |
| Whether this is a (C++ Concepts TS) function or variable concept. More... | |
| void | setConcept () |
| void | init (NamedDecl *templatedDecl, TemplateParameterList *templateParams) |
| Initialize the underlying templated declaration and template parameters. More... | |
Public Member Functions inherited from clang::NamedDecl | |
| IdentifierInfo * | getIdentifier () const |
| getIdentifier - Get the identifier that names this declaration, if there is one. More... | |
| StringRef | getName () const |
| getName - Get the name of identifier for this declaration as a StringRef. More... | |
| std::string | getNameAsString () const |
| getNameAsString - Get a human-readable name for the declaration, even if it is one of the special kinds of names (C++ constructor, Objective-C selector, etc). More... | |
| virtual void | printName (raw_ostream &os) const |
| DeclarationName | getDeclName () const |
| getDeclName - Get the actual, stored name of the declaration, which may be a special name. More... | |
| void | setDeclName (DeclarationName N) |
| Set the name of this declaration. More... | |
| void | printQualifiedName (raw_ostream &OS) const |
| printQualifiedName - Returns human-readable qualified name for declaration, like A::B::i, for i being member of namespace A::B. More... | |
| 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 |
| getNameForDiagnostic - Appends a human-readable name for this declaration into the given stream. More... | |
| 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. More... | |
| bool | hasLinkage () const |
| Determine whether this declaration has linkage. 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. More... | |
| Linkage | getFormalLinkage () const |
| Get the linkage from a semantic point of view. 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. 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 |
Public Member Functions inherited from clang::Decl | |
| 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 () |
| Find the innermost non-closure ancestor of this declaration, walking up through blocks, lambdas, etc. More... | |
| 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 |
| getMaxAlignment - return the maximum alignment specified by attributes on this decl, 0 if there are none. More... | |
| void | setInvalidDecl (bool Invalid=true) |
| setInvalidDecl - Indicates the Decl had a semantic error. More... | |
| bool | isInvalidDecl () const |
| bool | isImplicit () const |
| isImplicit - Indicates whether the declaration was implicitly generated by the implementation. More... | |
| void | setImplicit (bool I=true) |
| bool | isUsed (bool CheckUsedAttr=true) const |
| Whether any (re-)declaration of the entity 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. 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) |
| ExternalSourceSymbolAttr * | getExternalSourceSymbolAttr () const |
| Looks on this and related declarations for an applicable external source symbol attribute. More... | |
| bool | isModulePrivate () const |
| Whether this declaration was marked as being private to the module in which it was defined. More... | |
| bool | isExported () const |
| Whether this declaration is exported (by virtue of being lexically within an ExportDecl or by being a NamespaceDecl). More... | |
| bool | hasDefiningAttr () const |
| Return true if this declaration has an attribute which acts as definition of the entity, such as 'alias' or 'ifunc'. More... | |
| const Attr * | getDefiningAttr () const |
| Return this declaration's defining attribute if it has one. More... | |
| AvailabilityResult | getAvailability (std::string *Message=nullptr, VersionTuple EnclosingVersion=VersionTuple()) const |
| Determine the availability of the given declaration. More... | |
| VersionTuple | getVersionIntroduced () const |
| Retrieve the version of the target platform in which this declaration was introduced. 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 this Decl was loaded from. 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. More... | |
| void | setLocalOwningModule (Module *M) |
| bool | hasOwningModule () const |
| Is this declaration owned by some module? More... | |
| Module * | getOwningModule () const |
| Get the module that owns this declaration. More... | |
| bool | isHidden () const |
| Determine whether this declaration might be hidden from name lookup. More... | |
| void | setVisibleDespiteOwningModule () |
| Set that this declaration is globally visible, even if it came from a module that is not visible. More... | |
| ModuleOwnershipKind | getModuleOwnershipKind () const |
| Get the kind of module ownership for this declaration. More... | |
| void | setModuleOwnershipKind (ModuleOwnershipKind MOK) |
| Set whether this declaration is hidden from name lookup. More... | |
| unsigned | getIdentifierNamespace () const |
| bool | isInIdentifierNamespace (unsigned NS) const |
| bool | hasTagIdentifierNamespace () const |
| DeclContext * | getLexicalDeclContext () |
| getLexicalDeclContext - The declaration context where this Decl was lexically declared (LexicalDC). More... | |
| const DeclContext * | getLexicalDeclContext () const |
| virtual bool | isOutOfLine () const |
| Determine whether this declaration is declared out of line (outside its semantic context). More... | |
| void | setDeclContext (DeclContext *DC) |
| setDeclContext - Set both the semantic and lexical DeclContext to DC. More... | |
| void | setLexicalDeclContext (DeclContext *DC) |
| bool | isDefinedOutsideFunctionOrMethod () const |
| isDefinedOutsideFunctionOrMethod - This predicate returns true if this scoped decl is defined outside the current function or method. More... | |
| bool | isLexicallyWithinFunctionOrMethod () const |
| Returns true if this declaration lexically is inside a function. More... | |
| 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. 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 |
| getBody - If this Decl represents a declaration for a body of code, such as a function or method definition, this method returns the top-level Stmt* of that body. More... | |
| virtual bool | hasBody () const |
Returns true if this Decl represents a declaration for a body of code, such as a function or method definition. More... | |
| SourceLocation | getBodyRBrace () const |
| getBodyRBrace - Gets the right brace of the body, if a body exists. More... | |
| bool | isTemplateParameter () const |
| isTemplateParameter - Determines whether this declaration is a template parameter. More... | |
| bool | isTemplateParameterPack () const |
| isTemplateParameter - Determines whether this declaration is a template parameter pack. More... | |
| 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... | |
| TemplateDecl * | getDescribedTemplate () const |
| If this is a declaration that describes some template, this method returns that template declaration. 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. 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, bool Deserialize=false) const |
| const FunctionType * | getFunctionType (bool BlocksToo=true) const |
| Looks through the Decl's underlying type to extract a FunctionType when possible. More... | |
Public Member Functions inherited from clang::Redeclarable< RedeclarableTemplateDecl > | |
| 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. More... | |
| redecl_range | redecls () const |
| Returns an iterator range for all the redeclarations of the same decl. 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, Expr *AssociatedConstraints=nullptr) |
| 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 Public Member Functions inherited from clang::RedeclarableTemplateDecl | |
| static bool | classof (const Decl *D) |
| static bool | classofKind (Kind K) |
Static Public Member Functions inherited from clang::TemplateDecl | |
| static bool | classof (const Decl *D) |
| static bool | classofKind (Kind K) |
Static Public Member Functions inherited from clang::NamedDecl | |
| static bool | classof (const Decl *D) |
| static bool | classofKind (Kind K) |
Static Public Member Functions inherited from clang::Decl | |
| 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 | |
Static Protected Member Functions inherited from clang::RedeclarableTemplateDecl | |
| template<typename EntryType > | |
| static SpecIterator< EntryType > | makeSpecIterator (llvm::FoldingSetVector< EntryType > &Specs, bool isEnd) |
Static Protected Member Functions inherited from clang::Redeclarable< RedeclarableTemplateDecl > | |
| static DeclLink | PreviousDeclLink (RedeclarableTemplateDecl *D) |
| static DeclLink | LatestDeclLink (const ASTContext &Ctx) |
Protected Attributes inherited from clang::RedeclarableTemplateDecl | |
| CommonBase * | Common |
| Pointer to the common data shared by all declarations of this template. More... | |
Protected Attributes inherited from clang::TemplateDecl | |
| llvm::PointerIntPair < NamedDecl *, 1, bool > | TemplatedDecl |
| The named declaration from which this template was instantiated. More... | |
| llvm::PointerUnion < TemplateParameterList *, ConstrainedTemplateDeclInfo * > | TemplateParams |
The template parameter list and optional requires-clause associated with this declaration; alternatively, a ConstrainedTemplateDeclInfo if the associated constraints of the template are being tracked by this particular declaration. More... | |
Protected Attributes inherited from clang::Decl | |
| llvm::PointerIntPair< Decl *, 2, ModuleOwnershipKind > | NextInContextAndBits |
| The next declaration within the same lexical DeclContext. 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 | IdentifierNamespace: 13 |
| IdentifierNamespace - This specifies what IDNS_* namespace this lives in. More... | |
| unsigned | CacheValidAndLinkage: 3 |
| If 0, we have not computed the linkage of this declaration. More... | |
Protected Attributes inherited from clang::Redeclarable< RedeclarableTemplateDecl > | |
| DeclLink | RedeclLink |
| Points to the next redeclaration in the chain. More... | |
| RedeclarableTemplateDecl * | First |
Declaration of a class template.
Definition at line 2036 of file DeclTemplate.h.
Definition at line 2214 of file DeclTemplate.h.
| typedef llvm::iterator_range<spec_iterator> clang::ClassTemplateDecl::spec_range |
Definition at line 2215 of file DeclTemplate.h.
|
inlineprotected |
Definition at line 2072 of file DeclTemplate.h.
Referenced by Create(), and CreateDeserialized().
|
inlineprotected |
Definition at line 2078 of file DeclTemplate.h.
| 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 364 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 353 of file DeclTemplate.cpp.
References getSpecializations().
Referenced by clang::ASTNodeImporter::VisitClassTemplateSpecializationDecl().
Definition at line 2230 of file DeclTemplate.h.
References clang::Decl::getKind().
Definition at line 2231 of file DeclTemplate.h.
|
static |
Create a class template node.
Definition at line 287 of file DeclTemplate.cpp.
References AdoptTemplateParameterList(), ClassTemplateDecl(), and clang::TemplateDecl::setAssociatedConstraints().
Referenced by clang::Sema::CheckClassTemplate(), and clang::ASTNodeImporter::VisitClassTemplateDecl().
|
static |
Create an empty class template node.
Definition at line 307 of file DeclTemplate.cpp.
References ClassTemplateDecl(), and ID.
| 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 359 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 391 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 403 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 348 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 2125 of file DeclTemplate.h.
References clang::RedeclarableTemplateDecl::getCanonicalDecl().
Referenced by clang::Sema::FindInstantiatedDecl(), isInstantiationOf(), clang::Sema::isStdInitializerList(), MatchesFriend(), and clang::ASTDeclWriter::VisitClassTemplateSpecializationDecl().
|
inline |
Definition at line 2129 of file DeclTemplate.h.
References clang::RedeclarableTemplateDecl::getCanonicalDecl().
|
inlineprotected |
Definition at line 2085 of file DeclTemplate.h.
References clang::RedeclarableTemplateDecl::getCommonPtr().
Referenced by getInjectedClassNameSpecialization(), getPartialSpecializations(), getSpecializations(), LoadLazySpecializations(), 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 415 of file DeclTemplate.cpp.
References Context, clang::Decl::getASTContext(), getCommonPtr(), clang::ASTContext::getInjectedTemplateArgs(), clang::TemplateDecl::getTemplateParameters(), clang::ASTContext::getTemplateSpecializationType(), clang::ClassTemplateDecl::Common::InjectedClassNameType, and clang::QualType::isNull().
Referenced by clang::Sema::ActOnClassTemplateSpecialization(), clang::Sema::CheckClassTemplate(), clang::Sema::isMoreSpecializedThanPrimary(), and clang::ASTDeclReader::VisitClassTemplateDecl().
|
inline |
Definition at line 2157 of file DeclTemplate.h.
References clang::RedeclarableTemplateDecl::getInstantiatedFromMemberTemplate().
Referenced by clang::Sema::CheckClassTemplate(), getPatternForClassTemplateSpecialization(), and isInstantiationOf().
|
inline |
Definition at line 2149 of file DeclTemplate.h.
Referenced by LoadLazySpecializations().
|
inline |
Definition at line 2153 of file DeclTemplate.h.
|
protected |
Retrieve the set of partial specializations of this class template.
Definition at line 335 of file DeclTemplate.cpp.
References getCommonPtr(), LoadLazySpecializations(), and clang::ClassTemplateDecl::Common::PartialSpecializations.
Referenced by AddPartialSpecialization(), findPartialSpecialization(), findPartialSpecInstantiatedFromMember(), getPartialSpecializations(), getPatternForClassTemplateSpecialization(), and clang::Sema::usesPartialOrExplicitSpecialization().
| void ClassTemplateDecl::getPartialSpecializations | ( | SmallVectorImpl< ClassTemplatePartialSpecializationDecl * > & | PS | ) |
Retrieve the partial specializations as an ordered list.
Definition at line 380 of file DeclTemplate.cpp.
References getPartialSpecializations(), P, and PartialSpecs.
|
inline |
Retrieve the previous declaration of this class template, or NULL if no such declaration exists.
Definition at line 2136 of file DeclTemplate.h.
|
inline |
Retrieve the previous declaration of this class template, or NULL if no such declaration exists.
Definition at line 2143 of file DeclTemplate.h.
|
protected |
Retrieve the set of specializations of this class template.
Definition at line 329 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 2094 of file DeclTemplate.h.
Referenced by clang::Sema::ActOnClassTemplateSpecialization(), clang::Sema::ActOnExplicitInstantiation(), clang::Sema::CheckClassTemplate(), getLVForClassMember(), getPatternForClassTemplateSpecialization(), clang::Sema::isStdInitializerList(), 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 2100 of file DeclTemplate.h.
| void ClassTemplateDecl::LoadLazySpecializations | ( | ) | const |
Load any lazily-loaded specializations from the external source.
Definition at line 313 of file DeclTemplate.cpp.
References Context, clang::Decl::getASTContext(), getCommonPtr(), clang::ExternalASTSource::GetExternalDecl(), clang::ASTContext::getExternalSource(), getMostRecentDecl(), I, and clang::ClassTemplateDecl::Common::LazySpecializations.
Referenced by getPartialSpecializations(), and getSpecializations().
|
overrideprotectedvirtual |
Implements clang::RedeclarableTemplateDecl.
Definition at line 341 of file DeclTemplate.cpp.
References clang::ASTContext::addDestruction().
|
inline |
Definition at line 2221 of file DeclTemplate.h.
|
inline |
Definition at line 2225 of file DeclTemplate.h.
|
inline |
Definition at line 2217 of file DeclTemplate.h.
|
friend |
Definition at line 2233 of file DeclTemplate.h.
|
friend |
Definition at line 2234 of file DeclTemplate.h.
1.8.6