unsigned NumTemplateArgs);
void mangleUnqualifiedName(const NamedDecl *ND);
void mangleUnscopedName(const NamedDecl *ND);
- void mangleUnscopedTemplateName(const NamedDecl *ND);
+ void mangleUnscopedTemplateName(const TemplateDecl *ND);
void mangleSourceName(const IdentifierInfo *II);
void mangleLocalName(const NamedDecl *ND);
void mangleNestedName(const NamedDecl *ND);
const TemplateArgument *TemplateArgs,
unsigned NumTemplateArgs);
void manglePrefix(const DeclContext *DC);
- void mangleTemplatePrefix(const NamedDecl *ND);
+ void mangleTemplatePrefix(const TemplateDecl *ND);
void mangleOperatorName(OverloadedOperatorKind OO, unsigned Arity);
void mangleQualifiers(Qualifiers Quals);
void mangleType(QualType T);
if (DC->isTranslationUnit() || isStdNamespace(DC)) {
// Check if we have a template.
const TemplateArgumentList *TemplateArgs = 0;
- if (const NamedDecl *TD = isTemplate(ND, TemplateArgs)) {
+ if (const TemplateDecl *TD = isTemplate(ND, TemplateArgs)) {
mangleUnscopedTemplateName(TD);
mangleTemplateArgumentList(*TemplateArgs);
return;
}
if (DC->isTranslationUnit() || isStdNamespace(DC)) {
- mangleUnscopedTemplateName(cast<NamedDecl>(TD->getTemplatedDecl()));
+ mangleUnscopedTemplateName(TD);
mangleTemplateArgs(TemplateArgs, NumTemplateArgs);
} else {
mangleNestedName(TD, TemplateArgs, NumTemplateArgs);
mangleUnqualifiedName(ND);
}
-void CXXNameMangler::mangleUnscopedTemplateName(const NamedDecl *ND) {
+void CXXNameMangler::mangleUnscopedTemplateName(const TemplateDecl *ND) {
// <unscoped-template-name> ::= <unscoped-name>
// ::= <substitution>
if (mangleSubstitution(ND))
// Check if we have a template.
const TemplateArgumentList *TemplateArgs = 0;
- if (const NamedDecl *TD = isTemplate(ND, TemplateArgs)) {
+ if (const TemplateDecl *TD = isTemplate(ND, TemplateArgs)) {
mangleTemplatePrefix(TD);
mangleTemplateArgumentList(*TemplateArgs);
} else {
unsigned NumTemplateArgs) {
Out << 'N';
manglePrefix(TD->getDeclContext());
- mangleUnqualifiedName(TD->getTemplatedDecl());
+ mangleUnqualifiedName(TD);
mangleTemplateArgs(TemplateArgs, NumTemplateArgs);
Out << 'E';
// Check if we have a template.
const TemplateArgumentList *TemplateArgs = 0;
- if (const NamedDecl *TD = isTemplate(cast<NamedDecl>(DC), TemplateArgs)) {
+ if (const TemplateDecl *TD = isTemplate(cast<NamedDecl>(DC), TemplateArgs)) {
mangleTemplatePrefix(TD);
mangleTemplateArgumentList(*TemplateArgs);
} else {
addSubstitution(cast<NamedDecl>(DC));
}
-void CXXNameMangler::mangleTemplatePrefix(const NamedDecl *ND) {
+void CXXNameMangler::mangleTemplatePrefix(const TemplateDecl *ND) {
// <template-prefix> ::= <prefix> <template unqualified-name>
// ::= <template-param>
// ::= <substitution>
manglePrefix(ND->getDeclContext());
mangleUnqualifiedName(ND);
- // FIXME: Implement!
}
void