clang 22.0.0git
|
Classes | |
struct | Info |
Information about how to mangle a template argument. More... |
Public Member Functions | |
TemplateArgManglingInfo (const CXXNameMangler &Mangler, TemplateName TN) | |
bool | isOverloadable () |
Determine whether the resolved template might be overloaded on its template parameter list. | |
bool | needToMangleTemplateParam (const NamedDecl *Param, const TemplateArgument &Arg) |
Determine whether we need to prefix this <template-arg> mangling with a <template-param-decl>. | |
Info | getArgInfo (unsigned ParamIdx, const TemplateArgument &Arg) |
Determine information about how this template argument should be mangled. | |
const Expr * | getTrailingRequiresClauseToMangle () |
Determine if we should mangle a requires-clause after the template argument list. |
Public Attributes | |
const CXXNameMangler & | Mangler |
TemplateDecl * | ResolvedTemplate = nullptr |
bool | SeenPackExpansionIntoNonPack = false |
const NamedDecl * | UnresolvedExpandedPack = nullptr |
Definition at line 6049 of file ItaniumMangle.cpp.
|
inline |
Definition at line 6055 of file ItaniumMangle.cpp.
References clang::TemplateName::getAsTemplateDecl(), Mangler, and ResolvedTemplate.
|
inline |
Determine information about how this template argument should be mangled.
This should be called exactly once for each parameter / argument pair, in order.
Definition at line 6155 of file ItaniumMangle.cpp.
References clang::TemplateArgument::getKind(), isOverloadable(), clang::TemplateArgument::isPackExpansion(), needToMangleTemplateParam(), clang::TemplateArgument::Pack, ResolvedTemplate, SeenPackExpansionIntoNonPack, and UnresolvedExpandedPack.
|
inline |
Determine if we should mangle a requires-clause after the template argument list.
If so, returns the expression to mangle.
Definition at line 6208 of file ItaniumMangle.cpp.
References isOverloadable(), and ResolvedTemplate.
|
inline |
Determine whether the resolved template might be overloaded on its template parameter list.
If so, the mangling needs to include enough information to reconstruct the template parameter list.
Definition at line 6073 of file ItaniumMangle.cpp.
References ResolvedTemplate.
Referenced by getArgInfo(), and getTrailingRequiresClauseToMangle().
|
inline |
Determine whether we need to prefix this <template-arg> mangling with a <template-param-decl>.
This happens if the natural template parameter for the argument mangling is not the same as the actual template parameter.
Definition at line 6090 of file ItaniumMangle.cpp.
References clang::cast(), clang::TemplateName::getAsTemplateDecl(), clang::TemplateArgument::getAsTemplateOrTemplatePattern(), clang::TemplateParameterList::getDepth(), clang::TemplateArgument::getKind(), clang::TemplateName::getTemplateDeclAndDefaultArgs(), clang::TemplateDecl::getTemplateParameters(), Mangler, needToMangleTemplateParam(), clang::TemplateArgument::Pack, clang::TemplateArgument::pack_begin(), and clang::TemplateArgument::pack_size().
Referenced by getArgInfo(), and needToMangleTemplateParam().
const CXXNameMangler& CXXNameMangler::TemplateArgManglingInfo::Mangler |
Definition at line 6050 of file ItaniumMangle.cpp.
Referenced by needToMangleTemplateParam(), and TemplateArgManglingInfo().
TemplateDecl* CXXNameMangler::TemplateArgManglingInfo::ResolvedTemplate = nullptr |
Definition at line 6051 of file ItaniumMangle.cpp.
Referenced by getArgInfo(), getTrailingRequiresClauseToMangle(), isOverloadable(), and TemplateArgManglingInfo().
Definition at line 6052 of file ItaniumMangle.cpp.
Referenced by getArgInfo().
Definition at line 6053 of file ItaniumMangle.cpp.
Referenced by getArgInfo().