clang 20.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 6002 of file ItaniumMangle.cpp.
|
inline |
Definition at line 6008 of file ItaniumMangle.cpp.
References clang::TemplateName::getAsTemplateDecl(), 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 6108 of file ItaniumMangle.cpp.
References clang::TemplateArgument::getKind(), clang::TemplateParameterList::getParam(), clang::TemplateDecl::getTemplateParameters(), isOverloadable(), clang::TemplateArgument::isPackExpansion(), clang::Decl::isParameterPack(), 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 6161 of file ItaniumMangle.cpp.
References clang::TemplateParameterList::getRequiresClause(), clang::TemplateDecl::getTemplateParameters(), 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 6026 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 6043 of file ItaniumMangle.cpp.
References 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 6003 of file ItaniumMangle.cpp.
Referenced by needToMangleTemplateParam().
TemplateDecl* CXXNameMangler::TemplateArgManglingInfo::ResolvedTemplate = nullptr |
Definition at line 6004 of file ItaniumMangle.cpp.
Referenced by getArgInfo(), getTrailingRequiresClauseToMangle(), isOverloadable(), and TemplateArgManglingInfo().
Definition at line 6005 of file ItaniumMangle.cpp.
Referenced by getArgInfo().
const NamedDecl* CXXNameMangler::TemplateArgManglingInfo::UnresolvedExpandedPack = nullptr |
Definition at line 6006 of file ItaniumMangle.cpp.
Referenced by getArgInfo().