clang
3.9.0
|
NonTypeTemplateParmDecl - Declares a non-type template parameter, e.g., "Size" in. More...
#include <DeclTemplate.h>
Public Member Functions | |
SourceRange | getSourceRange () const override LLVM_READONLY |
const DefArgStorage & | getDefaultArgStorage () const |
bool | hasDefaultArgument () const |
Determine whether this template parameter has a default argument. More... | |
Expr * | getDefaultArgument () const |
Retrieve the default argument, if any. More... | |
SourceLocation | getDefaultArgumentLoc () const |
Retrieve the location of the default argument, if any. More... | |
bool | defaultArgumentWasInherited () const |
Determines whether the default argument was inherited from a previous declaration of this template. More... | |
void | setDefaultArgument (Expr *DefArg) |
Set the default argument for this template parameter, and whether that default argument was inherited from another declaration. More... | |
void | setInheritedDefaultArgument (const ASTContext &C, NonTypeTemplateParmDecl *Parm) |
void | removeDefaultArgument () |
Removes the default argument of this template parameter. More... | |
bool | isParameterPack () const |
Whether this parameter is a non-type template parameter pack. More... | |
bool | isPackExpansion () const |
Whether this parameter pack is a pack expansion. More... | |
bool | isExpandedParameterPack () const |
Whether this parameter is a non-type template parameter pack that has a known list of different types at different positions. More... | |
unsigned | getNumExpansionTypes () const |
Retrieves the number of expansion types in an expanded parameter pack. More... | |
QualType | getExpansionType (unsigned I) const |
Retrieve a particular expansion type within an expanded parameter pack. More... | |
TypeSourceInfo * | getExpansionTypeSourceInfo (unsigned I) const |
Retrieve a particular expansion type source info within an expanded parameter pack. More... | |
![]() | |
TypeSourceInfo * | getTypeSourceInfo () const |
void | setTypeSourceInfo (TypeSourceInfo *TI) |
SourceLocation | getInnerLocStart () const |
getInnerLocStart - Return SourceLocation representing start of source range ignoring outer template declarations. More... | |
void | setInnerLocStart (SourceLocation L) |
SourceLocation | getOuterLocStart () const |
getOuterLocStart - Return SourceLocation representing start of source range taking into account any outer template declarations. More... | |
SourceRange | getSourceRange () const override LLVM_READONLY |
SourceLocation | getLocStart () const LLVM_READONLY |
NestedNameSpecifier * | getQualifier () const |
Retrieve the nested-name-specifier that qualifies the name of this declaration, if it was present in the source. More... | |
NestedNameSpecifierLoc | getQualifierLoc () const |
Retrieve the nested-name-specifier (with source-location information) that qualifies the name of this declaration, if it was present in the source. More... | |
void | setQualifierInfo (NestedNameSpecifierLoc QualifierLoc) |
unsigned | getNumTemplateParameterLists () const |
TemplateParameterList * | getTemplateParameterList (unsigned index) const |
void | setTemplateParameterListsInfo (ASTContext &Context, ArrayRef< TemplateParameterList * > TPLists) |
SourceLocation | getTypeSpecStartLoc () const |
![]() | |
QualType | getType () const |
void | setType (QualType newType) |
bool | isWeak () const |
Determine whether this symbol is weakly-imported, or declared with the weak or weak-ref attr. 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 |
Friends | |
class | ASTDeclReader |
Additional Inherited Members | |
![]() | |
enum | ExplicitVisibilityKind { VisibilityForType, VisibilityForValue } |
Kinds of explicit visibility. More... | |
![]() | |
DeclaratorDecl (Kind DK, DeclContext *DC, SourceLocation L, DeclarationName N, QualType T, TypeSourceInfo *TInfo, SourceLocation StartL) | |
![]() | |
ValueDecl (Kind DK, DeclContext *DC, SourceLocation L, DeclarationName N, QualType T) | |
![]() | |
NamedDecl (Kind DK, DeclContext *DC, SourceLocation L, DeclarationName N) | |
![]() | |
TemplateParmPosition (unsigned D, unsigned P) | |
unsigned | getDepth () const |
Get the nesting depth of the template parameter. More... | |
void | setDepth (unsigned D) |
unsigned | getPosition () const |
Get the position of the template parameter within its parameter list. More... | |
void | setPosition (unsigned P) |
unsigned | getIndex () const |
Get the index of the template parameter within its parameter list. More... | |
![]() | |
unsigned | Depth |
unsigned | Position |
NonTypeTemplateParmDecl - Declares a non-type template parameter, e.g., "Size" in.
Definition at line 1140 of file DeclTemplate.h.
Definition at line 1316 of file DeclTemplate.h.
Definition at line 1317 of file DeclTemplate.h.
|
static |
Definition at line 538 of file DeclTemplate.cpp.
Referenced by clang::Sema::ActOnNonTypeTemplateParameter(), createMakeIntegerSeqParameterList(), createTypePackElementParameterList(), and clang::ASTNodeImporter::VisitNonTypeTemplateParmDecl().
|
static |
Definition at line 547 of file DeclTemplate.cpp.
|
static |
Definition at line 560 of file DeclTemplate.cpp.
References ID.
|
static |
Definition at line 567 of file DeclTemplate.cpp.
References ID, and clang::None.
|
inline |
Determines whether the default argument was inherited from a previous declaration of this template.
Definition at line 1228 of file DeclTemplate.h.
Referenced by getSourceRange(), and clang::ASTDeclWriter::VisitNonTypeTemplateParmDecl().
|
inline |
Definition at line 1214 of file DeclTemplate.h.
|
inline |
Retrieve the default argument, if any.
Definition at line 1221 of file DeclTemplate.h.
Referenced by getDefaultArgumentLoc(), getSourceRange(), SubstDefaultTemplateArgument(), and clang::ASTDeclWriter::VisitNonTypeTemplateParmDecl().
SourceLocation NonTypeTemplateParmDecl::getDefaultArgumentLoc | ( | ) | const |
Retrieve the location of the default argument, if any.
Definition at line 586 of file DeclTemplate.cpp.
References getDefaultArgument(), and hasDefaultArgument().
Referenced by clang::Sema::CheckTemplateParameterList().
Retrieve a particular expansion type within an expanded parameter pack.
Definition at line 1299 of file DeclTemplate.h.
References I.
Referenced by clang::ASTDeclWriter::VisitNonTypeTemplateParmDecl().
|
inline |
Retrieve a particular expansion type source info within an expanded parameter pack.
Definition at line 1308 of file DeclTemplate.h.
References I.
Referenced by clang::ASTDeclWriter::VisitNonTypeTemplateParmDecl().
|
inline |
Retrieves the number of expansion types in an expanded parameter pack.
Definition at line 1292 of file DeclTemplate.h.
Referenced by clang::ASTDeclWriter::VisitNonTypeTemplateParmDecl(), and clang::ASTDeclReader::VisitNonTypeTemplateParmDecl().
|
override |
Definition at line 579 of file DeclTemplate.cpp.
References defaultArgumentWasInherited(), getDefaultArgument(), clang::DeclaratorDecl::getOuterLocStart(), clang::DeclaratorDecl::getSourceRange(), and hasDefaultArgument().
|
inline |
Determine whether this template parameter has a default argument.
Definition at line 1218 of file DeclTemplate.h.
Referenced by clang::Sema::CheckTemplateParameterList(), getDefaultArgumentLoc(), getSourceRange(), and clang::ASTDeclWriter::VisitNonTypeTemplateParmDecl().
|
inline |
Whether this parameter is a non-type template parameter pack that has a known list of different types at different positions.
A parameter pack is an expanded parameter pack when the original parameter pack's type was itself a pack expansion, and that expansion has already been expanded. For example, given:
The parameter pack Values
has a PackExpansionType
as its type, which expands Types
. When Types
is supplied with template arguments by instantiating X
, the instantiation of Values
becomes an expanded parameter pack. For example, instantiating X<int, unsigned int>
results in Values
being an expanded parameter pack with expansion types int
and unsigned
int.
The getExpansionType()
and getExpansionTypeSourceInfo()
functions return the expansion types.
Definition at line 1288 of file DeclTemplate.h.
Referenced by clang::ASTDeclWriter::VisitNonTypeTemplateParmDecl(), and clang::ASTDeclReader::VisitNonTypeTemplateParmDecl().
|
inline |
Whether this parameter pack is a pack expansion.
A non-type template parameter pack is a pack expansion if its type contains an unexpanded parameter pack. In this case, we will have built a PackExpansionType wrapping the type.
Definition at line 1260 of file DeclTemplate.h.
|
inline |
Whether this parameter is a non-type template parameter pack.
If the parameter is a parameter pack, the type may be a PackExpansionType
. In the following example, the Dims
parameter is a parameter pack (whose type is 'unsigned').
Definition at line 1253 of file DeclTemplate.h.
Referenced by isSameTemplateParameter(), IsStructurallyEquivalent(), clang::ASTDeclWriter::VisitNonTypeTemplateParmDecl(), and clang::ASTNodeImporter::VisitNonTypeTemplateParmDecl().
|
inline |
Removes the default argument of this template parameter.
Definition at line 1242 of file DeclTemplate.h.
|
inline |
Set the default argument for this template parameter, and whether that default argument was inherited from another declaration.
Definition at line 1235 of file DeclTemplate.h.
Referenced by clang::Sema::ActOnNonTypeTemplateParameter(), and clang::ASTDeclReader::VisitNonTypeTemplateParmDecl().
|
inline |
Definition at line 1236 of file DeclTemplate.h.
|
friend |
Definition at line 1185 of file DeclTemplate.h.