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 5862 of file ItaniumMangle.cpp.
|
inline |
Definition at line 5868 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 5965 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 6018 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 5886 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 5903 of file ItaniumMangle.cpp.
References clang::TemplateName::getAsTemplateDecl(), clang::TemplateArgument::getAsTemplateOrTemplatePattern(), clang::TemplateParameterList::getDepth(), clang::TemplateArgument::getKind(), 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 5863 of file ItaniumMangle.cpp.
Referenced by needToMangleTemplateParam().
TemplateDecl* CXXNameMangler::TemplateArgManglingInfo::ResolvedTemplate = nullptr |
Definition at line 5864 of file ItaniumMangle.cpp.
Referenced by getArgInfo(), getTrailingRequiresClauseToMangle(), isOverloadable(), and TemplateArgManglingInfo().
Definition at line 5865 of file ItaniumMangle.cpp.
Referenced by getArgInfo().
const NamedDecl* CXXNameMangler::TemplateArgManglingInfo::UnresolvedExpandedPack = nullptr |
Definition at line 5866 of file ItaniumMangle.cpp.
Referenced by getArgInfo().