clang 22.0.0git
CXXNameMangler::TemplateArgManglingInfo Struct Reference

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 ExprgetTrailingRequiresClauseToMangle ()
 Determine if we should mangle a requires-clause after the template argument list.

Public Attributes

const CXXNameMangler & Mangler
TemplateDeclResolvedTemplate = nullptr
bool SeenPackExpansionIntoNonPack = false
const NamedDeclUnresolvedExpandedPack = nullptr

Detailed Description

Definition at line 6049 of file ItaniumMangle.cpp.

Constructor & Destructor Documentation

◆ TemplateArgManglingInfo()

CXXNameMangler::TemplateArgManglingInfo::TemplateArgManglingInfo ( const CXXNameMangler & Mangler,
TemplateName TN )
inline

Member Function Documentation

◆ getArgInfo()

Info CXXNameMangler::TemplateArgManglingInfo::getArgInfo ( unsigned ParamIdx,
const TemplateArgument & Arg )
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.

◆ getTrailingRequiresClauseToMangle()

const Expr * CXXNameMangler::TemplateArgManglingInfo::getTrailingRequiresClauseToMangle ( )
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.

◆ isOverloadable()

bool CXXNameMangler::TemplateArgManglingInfo::isOverloadable ( )
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().

◆ needToMangleTemplateParam()

bool CXXNameMangler::TemplateArgManglingInfo::needToMangleTemplateParam ( const NamedDecl * Param,
const TemplateArgument & Arg )
inline

Member Data Documentation

◆ Mangler

const CXXNameMangler& CXXNameMangler::TemplateArgManglingInfo::Mangler

Definition at line 6050 of file ItaniumMangle.cpp.

Referenced by needToMangleTemplateParam(), and TemplateArgManglingInfo().

◆ ResolvedTemplate

TemplateDecl* CXXNameMangler::TemplateArgManglingInfo::ResolvedTemplate = nullptr

◆ SeenPackExpansionIntoNonPack

bool CXXNameMangler::TemplateArgManglingInfo::SeenPackExpansionIntoNonPack = false

Definition at line 6052 of file ItaniumMangle.cpp.

Referenced by getArgInfo().

◆ UnresolvedExpandedPack

const NamedDecl* CXXNameMangler::TemplateArgManglingInfo::UnresolvedExpandedPack = nullptr

Definition at line 6053 of file ItaniumMangle.cpp.

Referenced by getArgInfo().


The documentation for this struct was generated from the following file: