clang 20.0.0git
|
A structure for storing an already-substituted template template parameter pack. More...
#include "clang/AST/TemplateName.h"
Public Member Functions | |
SubstTemplateTemplateParmPackStorage (ArrayRef< TemplateArgument > ArgPack, Decl *AssociatedDecl, unsigned Index, bool Final) | |
Decl * | getAssociatedDecl () const |
A template-like entity which owns the whole pattern being substituted. | |
unsigned | getIndex () const |
Returns the index of the replaced parameter in the associated declaration. | |
bool | getFinal () const |
TemplateTemplateParmDecl * | getParameterPack () const |
Retrieve the template template parameter pack being substituted. | |
TemplateArgument | getArgumentPack () const |
Retrieve the template template argument pack with which this parameter was substituted. | |
void | Profile (llvm::FoldingSetNodeID &ID, ASTContext &Context) |
Public Member Functions inherited from clang::UncommonTemplateNameStorage | |
OverloadedTemplateStorage * | getAsOverloadedStorage () |
AssumedTemplateStorage * | getAsAssumedTemplateName () |
DeducedTemplateStorage * | getAsDeducedTemplateName () |
SubstTemplateTemplateParmStorage * | getAsSubstTemplateTemplateParm () |
SubstTemplateTemplateParmPackStorage * | getAsSubstTemplateTemplateParmPack () |
Static Public Member Functions | |
static void | Profile (llvm::FoldingSetNodeID &ID, ASTContext &Context, const TemplateArgument &ArgPack, Decl *AssociatedDecl, unsigned Index, bool Final) |
Additional Inherited Members | |
Protected Types inherited from clang::UncommonTemplateNameStorage | |
enum | Kind { Overloaded , Assumed , Deduced , SubstTemplateTemplateParm , SubstTemplateTemplateParmPack } |
Protected Member Functions inherited from clang::UncommonTemplateNameStorage | |
UncommonTemplateNameStorage (Kind Kind, unsigned Index, unsigned Data) | |
Protected Attributes inherited from clang::UncommonTemplateNameStorage | |
union { | |
struct BitsTag Bits | |
void * PointerAlignment | |
}; | |
A structure for storing an already-substituted template template parameter pack.
This kind of template names occurs when the parameter pack has been provided with a template template argument pack in a context where its enclosing pack expansion could not be fully expanded.
Definition at line 148 of file TemplateName.h.
SubstTemplateTemplateParmPackStorage::SubstTemplateTemplateParmPackStorage | ( | ArrayRef< TemplateArgument > | ArgPack, |
Decl * | AssociatedDecl, | ||
unsigned | Index, | ||
bool | Final | ||
) |
Definition at line 92 of file TemplateName.cpp.
TemplateArgument SubstTemplateTemplateParmPackStorage::getArgumentPack | ( | ) | const |
Retrieve the template template argument pack with which this parameter was substituted.
Definition at line 61 of file TemplateName.cpp.
References clang::UncommonTemplateNameStorage::Bits, and clang::UncommonTemplateNameStorage::BitsTag::Data.
Referenced by clang::ASTContext::getCanonicalTemplateName(), clang::ASTImporter::Import(), IsStructurallyEquivalent(), and Profile().
Decl * SubstTemplateTemplateParmPackStorage::getAssociatedDecl | ( | ) | const |
A template-like entity which owns the whole pattern being substituted.
This will own a set of template parameters.
Definition at line 107 of file TemplateName.cpp.
Referenced by clang::ASTContext::getCanonicalTemplateName(), getParameterPack(), clang::ASTImporter::Import(), IsStructurallyEquivalent(), and Profile().
bool SubstTemplateTemplateParmPackStorage::getFinal | ( | ) | const |
Definition at line 111 of file TemplateName.cpp.
Referenced by clang::ASTContext::getCanonicalTemplateName(), clang::ASTImporter::Import(), and Profile().
|
inline |
Returns the index of the replaced parameter in the associated declaration.
This should match the result of getParameterPack()->getIndex()
.
Definition at line 164 of file TemplateName.h.
Referenced by clang::ASTContext::getCanonicalTemplateName(), clang::ASTImporter::Import(), IsStructurallyEquivalent(), and Profile().
TemplateTemplateParmDecl * SubstTemplateTemplateParmPackStorage::getParameterPack | ( | ) | const |
Retrieve the template template parameter pack being substituted.
Definition at line 66 of file TemplateName.cpp.
References clang::UncommonTemplateNameStorage::Bits, getAssociatedDecl(), clang::getReplacedTemplateParameterList(), and clang::UncommonTemplateNameStorage::BitsTag::Index.
Referenced by clang::ASTContext::getNameForTemplate().
void SubstTemplateTemplateParmPackStorage::Profile | ( | llvm::FoldingSetNodeID & | ID, |
ASTContext & | Context | ||
) |
Definition at line 101 of file TemplateName.cpp.
References getArgumentPack(), getAssociatedDecl(), getFinal(), getIndex(), and Profile().
Referenced by clang::ASTContext::getSubstTemplateTemplateParmPack(), and Profile().
|
static |
Definition at line 115 of file TemplateName.cpp.
References clang::TemplateArgument::Profile().