clang 20.0.0git
Classes | Public Member Functions | Public Attributes | List of all members
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 5862 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

◆ 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 6018 of file ItaniumMangle.cpp.

References clang::TemplateParameterList::getRequiresClause(), clang::TemplateDecl::getTemplateParameters(), 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 5886 of file ItaniumMangle.cpp.

References ResolvedTemplate.

Referenced by getArgInfo(), and getTrailingRequiresClauseToMangle().

◆ needToMangleTemplateParam()

bool CXXNameMangler::TemplateArgManglingInfo::needToMangleTemplateParam ( const NamedDecl Param,
const TemplateArgument Arg 
)
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().

Member Data Documentation

◆ Mangler

const CXXNameMangler& CXXNameMangler::TemplateArgManglingInfo::Mangler

Definition at line 5863 of file ItaniumMangle.cpp.

Referenced by needToMangleTemplateParam().

◆ ResolvedTemplate

TemplateDecl* CXXNameMangler::TemplateArgManglingInfo::ResolvedTemplate = nullptr

◆ SeenPackExpansionIntoNonPack

bool CXXNameMangler::TemplateArgManglingInfo::SeenPackExpansionIntoNonPack = false

Definition at line 5865 of file ItaniumMangle.cpp.

Referenced by getArgInfo().

◆ UnresolvedExpandedPack

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

Definition at line 5866 of file ItaniumMangle.cpp.

Referenced by getArgInfo().


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