clang
3.9.0
|
Declaration of a variable template. More...
#include <DeclTemplate.h>
Classes | |
struct | Common |
Data that is common to all of the declarations of a given variable template. More... | |
Public Types | |
typedef SpecIterator < VarTemplateSpecializationDecl > | spec_iterator |
typedef llvm::iterator_range < spec_iterator > | spec_range |
![]() | |
typedef redeclarable_base::redecl_range | redecl_range |
typedef redeclarable_base::redecl_iterator | redecl_iterator |
![]() | |
enum | ExplicitVisibilityKind { VisibilityForType, VisibilityForValue } |
Kinds of explicit visibility. More... | |
![]() | |
typedef llvm::iterator_range < redecl_iterator > | redecl_range |
Public Member Functions | |
void | LoadLazySpecializations () const |
Load any lazily-loaded specializations from the external source. More... | |
VarDecl * | getTemplatedDecl () const |
Get the underlying variable declarations of the template. More... | |
bool | isThisDeclarationADefinition () const |
Returns whether this template declaration defines the primary variable pattern. More... | |
VarTemplateDecl * | getDefinition () |
VarTemplateSpecializationDecl * | findSpecialization (ArrayRef< TemplateArgument > Args, void *&InsertPos) |
Return the specialization with the provided arguments if it exists, otherwise return the insertion point. More... | |
void | AddSpecialization (VarTemplateSpecializationDecl *D, void *InsertPos) |
Insert the specified specialization knowing that it is not already in. More... | |
VarTemplateDecl * | getCanonicalDecl () override |
const VarTemplateDecl * | getCanonicalDecl () const |
VarTemplateDecl * | getPreviousDecl () |
Retrieve the previous declaration of this variable template, or NULL if no such declaration exists. More... | |
const VarTemplateDecl * | getPreviousDecl () const |
Retrieve the previous declaration of this variable template, or NULL if no such declaration exists. More... | |
VarTemplateDecl * | getMostRecentDecl () |
const VarTemplateDecl * | getMostRecentDecl () const |
VarTemplateDecl * | getInstantiatedFromMemberTemplate () const |
VarTemplatePartialSpecializationDecl * | 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 (VarTemplatePartialSpecializationDecl *D, void *InsertPos) |
Insert the specified partial specialization knowing that it is not already in. More... | |
void | getPartialSpecializations (SmallVectorImpl< VarTemplatePartialSpecializationDecl * > &PS) |
Retrieve the partial specializations as an ordered list. More... | |
VarTemplatePartialSpecializationDecl * | findPartialSpecInstantiatedFromMember (VarTemplatePartialSpecializationDecl *D) |
Find a variable template partial specialization which was instantiated from the given member partial specialization. More... | |
spec_range | specializations () const |
spec_iterator | spec_begin () const |
spec_iterator | spec_end () const |
![]() | |
RedeclarableTemplateDecl * | getCanonicalDecl () override |
Retrieves the canonical declaration of this template. More... | |
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 |
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... | |
![]() | |
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... | |
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 | 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. 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 |
![]() | |
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 VarTemplateDecl * | Create (ASTContext &C, DeclContext *DC, SourceLocation L, DeclarationName Name, TemplateParameterList *Params, VarDecl *Decl) |
Create a variable template node. More... | |
static VarTemplateDecl * | CreateDeserialized (ASTContext &C, unsigned ID) |
Create an empty variable 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) |
Protected Member Functions | |
llvm::FoldingSetVector < VarTemplateSpecializationDecl > & | getSpecializations () const |
Retrieve the set of specializations of this variable template. More... | |
llvm::FoldingSetVector < VarTemplatePartialSpecializationDecl > & | getPartialSpecializations () |
Retrieve the set of partial specializations of this class template. More... | |
VarTemplateDecl (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. 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) | |
![]() | |
RedeclarableTemplateDecl * | getNextRedeclaration () const |
Friends | |
class | ASTDeclReader |
class | ASTDeclWriter |
Additional Inherited Members | |
![]() | |
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... | |
![]() | |
llvm::PointerIntPair < NamedDecl *, 1, bool > | TemplatedDecl |
The named declaration from which this template was instantiated. More... | |
TemplateParameterList * | TemplateParams |
![]() | |
DeclLink | RedeclLink |
Points to the next redeclaration in the chain. More... | |
RedeclarableTemplateDecl * | First |
Declaration of a variable template.
Definition at line 2749 of file DeclTemplate.h.
Definition at line 2892 of file DeclTemplate.h.
typedef llvm::iterator_range<spec_iterator> clang::VarTemplateDecl::spec_range |
Definition at line 2893 of file DeclTemplate.h.
|
inlineprotected |
Definition at line 2784 of file DeclTemplate.h.
Referenced by Create(), and CreateDeserialized().
void VarTemplateDecl::AddPartialSpecialization | ( | VarTemplatePartialSpecializationDecl * | D, |
void * | InsertPos | ||
) |
Insert the specified partial specialization knowing that it is not already in.
InsertPos must be obtained from findPartialSpecialization.
Definition at line 1014 of file DeclTemplate.cpp.
References getPartialSpecializations().
void VarTemplateDecl::AddSpecialization | ( | VarTemplateSpecializationDecl * | D, |
void * | InsertPos | ||
) |
Insert the specified specialization knowing that it is not already in.
InsertPos must be obtained from findSpecialization.
Definition at line 1003 of file DeclTemplate.cpp.
References getSpecializations().
Definition at line 2908 of file DeclTemplate.h.
References classofKind().
Definition at line 2909 of file DeclTemplate.h.
Referenced by classof().
|
static |
Create a variable template node.
Definition at line 948 of file DeclTemplate.cpp.
References VarTemplateDecl().
Referenced by clang::Sema::ActOnVariableDeclarator(), and clang::ASTNodeImporter::VisitVarTemplateDecl().
|
static |
Create an empty variable template node.
Definition at line 955 of file DeclTemplate.cpp.
References ID, and VarTemplateDecl().
VarTemplatePartialSpecializationDecl * VarTemplateDecl::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 1009 of file DeclTemplate.cpp.
References clang::RedeclarableTemplateDecl::findSpecializationImpl(), and getPartialSpecializations().
Referenced by clang::Sema::ActOnVarTemplateSpecialization(), and clang::TemplateDeclInstantiator::InstantiateVarTemplatePartialSpecialization().
VarTemplatePartialSpecializationDecl * VarTemplateDecl::findPartialSpecInstantiatedFromMember | ( | VarTemplatePartialSpecializationDecl * | D | ) |
Find a variable template partial specialization which was instantiated from the given member partial specialization.
D | a member variable template partial specialization. |
Definition at line 1040 of file DeclTemplate.cpp.
References clang::VarDecl::getCanonicalDecl(), and getPartialSpecializations().
VarTemplateSpecializationDecl * VarTemplateDecl::findSpecialization | ( | ArrayRef< TemplateArgument > | Args, |
void *& | InsertPos | ||
) |
Return the specialization with the provided arguments if it exists, otherwise return the insertion point.
Definition at line 998 of file DeclTemplate.cpp.
References clang::RedeclarableTemplateDecl::findSpecializationImpl(), and getSpecializations().
Referenced by clang::Sema::ActOnVarTemplateSpecialization(), clang::Sema::CheckVarTemplateId(), clang::ASTNodeImporter::VisitVarTemplateSpecializationDecl(), and clang::TemplateDeclInstantiator::VisitVarTemplateSpecializationDecl().
|
inlineoverride |
Definition at line 2830 of file DeclTemplate.h.
References clang::RedeclarableTemplateDecl::getCanonicalDecl().
Referenced by clang::ASTDeclWriter::VisitVarTemplateSpecializationDecl().
|
inline |
Definition at line 2833 of file DeclTemplate.h.
References clang::RedeclarableTemplateDecl::getCanonicalDecl().
|
inlineprotected |
Definition at line 2791 of file DeclTemplate.h.
References clang::RedeclarableTemplateDecl::getCommonPtr().
Referenced by getPartialSpecializations(), getSpecializations(), LoadLazySpecializations(), clang::ASTDeclReader::VisitVarTemplateDecl(), and clang::ASTDeclReader::VisitVarTemplateSpecializationDeclImpl().
VarTemplateDecl * VarTemplateDecl::getDefinition | ( | ) |
Definition at line 938 of file DeclTemplate.cpp.
References getPreviousDecl(), and isThisDeclarationADefinition().
|
inline |
Definition at line 2860 of file DeclTemplate.h.
References clang::RedeclarableTemplateDecl::getInstantiatedFromMemberTemplate().
Referenced by clang::Sema::ActOnVariableDeclarator(), and clang::Sema::InstantiateVariableDefinition().
|
inline |
Definition at line 2852 of file DeclTemplate.h.
Referenced by getMostRecentDecl(), and LoadLazySpecializations().
|
inline |
Definition at line 2856 of file DeclTemplate.h.
References getMostRecentDecl().
|
protected |
Retrieve the set of partial specializations of this class template.
Definition at line 985 of file DeclTemplate.cpp.
References getCommonPtr(), LoadLazySpecializations(), and clang::VarTemplateDecl::Common::PartialSpecializations.
Referenced by AddPartialSpecialization(), clang::Sema::CheckVarTemplateId(), findPartialSpecialization(), findPartialSpecInstantiatedFromMember(), and getPartialSpecializations().
void VarTemplateDecl::getPartialSpecializations | ( | SmallVectorImpl< VarTemplatePartialSpecializationDecl * > & | PS | ) |
Retrieve the partial specializations as an ordered list.
Definition at line 1029 of file DeclTemplate.cpp.
References getPartialSpecializations().
|
inline |
Retrieve the previous declaration of this variable template, or NULL if no such declaration exists.
Definition at line 2839 of file DeclTemplate.h.
Referenced by getDefinition(), and getPreviousDecl().
|
inline |
Retrieve the previous declaration of this variable template, or NULL if no such declaration exists.
Definition at line 2846 of file DeclTemplate.h.
References getPreviousDecl().
|
protected |
Retrieve the set of specializations of this variable template.
Definition at line 979 of file DeclTemplate.cpp.
References getCommonPtr(), LoadLazySpecializations(), and clang::VarTemplateDecl::Common::Specializations.
Referenced by AddSpecialization(), findSpecialization(), spec_begin(), and spec_end().
|
inline |
Get the underlying variable declarations of the template.
Definition at line 2800 of file DeclTemplate.h.
References clang::TemplateDecl::TemplatedDecl.
Referenced by clang::Sema::ActOnVarTemplateSpecialization(), clang::Sema::CheckVarTemplateId(), clang::Sema::InstantiateVariableDefinition(), isThisDeclarationADefinition(), clang::Sema::MergeVarDecl(), and clang::ASTNodeImporter::VisitVarTemplateDecl().
|
inline |
Returns whether this template declaration defines the primary variable pattern.
Definition at line 2806 of file DeclTemplate.h.
References getTemplatedDecl(), and clang::VarDecl::isThisDeclarationADefinition().
Referenced by getDefinition().
void VarTemplateDecl::LoadLazySpecializations | ( | ) | const |
Load any lazily-loaded specializations from the external source.
Definition at line 963 of file DeclTemplate.cpp.
References Context, getCommonPtr(), clang::ExternalASTSource::GetExternalDecl(), clang::ASTContext::getExternalSource(), getMostRecentDecl(), I, and clang::VarTemplateDecl::Common::LazySpecializations.
Referenced by getPartialSpecializations(), and getSpecializations().
|
overrideprotectedvirtual |
Implements clang::RedeclarableTemplateDecl.
Definition at line 991 of file DeclTemplate.cpp.
References clang::ASTContext::AddDeallocation().
|
inline |
Definition at line 2899 of file DeclTemplate.h.
References getSpecializations(), and clang::RedeclarableTemplateDecl::makeSpecIterator().
Referenced by specializations().
|
inline |
Definition at line 2903 of file DeclTemplate.h.
References getSpecializations(), and clang::RedeclarableTemplateDecl::makeSpecIterator().
Referenced by specializations().
|
inline |
Definition at line 2895 of file DeclTemplate.h.
References spec_begin(), and spec_end().
|
friend |
Definition at line 2911 of file DeclTemplate.h.
|
friend |
Definition at line 2912 of file DeclTemplate.h.