clang API Documentation
Data structure that captures multiple levels of template argument lists for use in template instantiation. More...
#include <Template.h>
Public Member Functions | |
| MultiLevelTemplateArgumentList () | |
| Construct an empty set of template argument lists. | |
| MultiLevelTemplateArgumentList (const TemplateArgumentList &TemplateArgs) | |
| Construct a single-level template argument list. | |
| unsigned | getNumLevels () const |
| Determine the number of levels in this template argument list. | |
| const TemplateArgument & | operator() (unsigned Depth, unsigned Index) const |
| Retrieve the template argument at a given depth and index. | |
| bool | hasTemplateArgument (unsigned Depth, unsigned Index) const |
| Determine whether there is a non-NULL template argument at the given depth and index. | |
| void | setArgument (unsigned Depth, unsigned Index, TemplateArgument Arg) |
| Clear out a specific template argument. | |
| void | addOuterTemplateArguments (const TemplateArgumentList *TemplateArgs) |
| Add a new outermost level to the multi-level template argument list. | |
| void | addOuterTemplateArguments (ArgList Args) |
| Add a new outmost level to the multi-level template argument list. | |
| const ArgList & | getInnermost () const |
| Retrieve the innermost template argument list. | |
Data structure that captures multiple levels of template argument lists for use in template instantiation.
Multiple levels of template arguments occur when instantiating the definitions of member templates. For example:
template<typename T> struct X { template<T Value> struct Y { void f(); }; };
When instantiating X<int>::Y<17>::f, the multi-level template argument list will contain a template argument list (int) at depth 0 and a template argument list (17) at depth 1.
Definition at line 42 of file Template.h.
Construct an empty set of template argument lists.
Definition at line 52 of file Template.h.
| clang::MultiLevelTemplateArgumentList::MultiLevelTemplateArgumentList | ( | const TemplateArgumentList & | TemplateArgs | ) | [inline, explicit] |
Construct a single-level template argument list.
Definition at line 56 of file Template.h.
References addOuterTemplateArguments().
| void clang::MultiLevelTemplateArgumentList::addOuterTemplateArguments | ( | const TemplateArgumentList * | TemplateArgs | ) | [inline] |
Add a new outermost level to the multi-level template argument list.
Definition at line 96 of file Template.h.
References clang::TemplateArgumentList::data(), and clang::TemplateArgumentList::size().
Referenced by clang::Sema::BuildVarTemplateInstantiation(), clang::Sema::CheckTemplateIdType(), clang::Sema::getTemplateInstantiationArgs(), MultiLevelTemplateArgumentList(), SubstDefaultTemplateArgument(), and clang::TemplateDeclInstantiator::VisitCXXMethodDecl().
| void clang::MultiLevelTemplateArgumentList::addOuterTemplateArguments | ( | ArgList | Args | ) | [inline] |
Add a new outmost level to the multi-level template argument list.
Definition at line 103 of file Template.h.
| const ArgList& clang::MultiLevelTemplateArgumentList::getInnermost | ( | ) | const [inline] |
Retrieve the innermost template argument list.
Definition at line 108 of file Template.h.
Referenced by clang::Sema::BuildCXXDefaultArgExpr().
| unsigned clang::MultiLevelTemplateArgumentList::getNumLevels | ( | ) | const [inline] |
Determine the number of levels in this template argument list.
Definition at line 62 of file Template.h.
Referenced by clang::Sema::CheckParameterPacksForExpansion(), clang::Sema::getNumArgumentsInExpansion(), hasTemplateArgument(), operator()(), and setArgument().
| bool clang::MultiLevelTemplateArgumentList::hasTemplateArgument | ( | unsigned | Depth, |
| unsigned | Index | ||
| ) | const [inline] |
Determine whether there is a non-NULL template argument at the given depth and index.
There must exist a template argument list at the given depth.
Definition at line 75 of file Template.h.
References Depth, and getNumLevels().
Referenced by clang::Sema::CheckParameterPacksForExpansion(), and clang::Sema::getNumArgumentsInExpansion().
| const TemplateArgument& clang::MultiLevelTemplateArgumentList::operator() | ( | unsigned | Depth, |
| unsigned | Index | ||
| ) | const [inline] |
Retrieve the template argument at a given depth and index.
Definition at line 65 of file Template.h.
References getNumLevels().
| void clang::MultiLevelTemplateArgumentList::setArgument | ( | unsigned | Depth, |
| unsigned | Index, | ||
| TemplateArgument | Arg | ||
| ) | [inline] |
Clear out a specific template argument.
Definition at line 85 of file Template.h.
References getNumLevels().