@@ -98,30 +98,49 @@ GetDemangledTypeMangling(swift::Demangle::Demangler &dem,
98
98
}
99
99
100
100
// / Wrap node in Global/TypeMangling/Type.
101
- static swift::Demangle::NodePointer
102
- mangleType (swift::Demangle::Demangler &dem,
103
- swift::Demangle::NodePointer typeNode ) {
101
+ inline swift::Demangle::NodePointer
102
+ MangleType (swift::Demangle::Demangler &dem,
103
+ swift::Demangle::NodePointer type_node ) {
104
104
auto *global = dem.createNode (Node::Kind::Global);
105
- auto *typeMangling = dem.createNode (Node::Kind::TypeMangling);
106
- global->addChild (typeMangling , dem);
105
+ auto *type_mangling = dem.createNode (Node::Kind::TypeMangling);
106
+ global->addChild (type_mangling , dem);
107
107
auto *type = dem.createNode (Node::Kind::Type);
108
- typeMangling ->addChild (type, dem);
109
- type->addChild (typeNode , dem);
108
+ type_mangling ->addChild (type, dem);
109
+ type->addChild (type_node , dem);
110
110
return global;
111
111
}
112
112
113
+ // / Produce a type mangle tree for a nominal type.
114
+ inline swift::Demangle::NodePointer
115
+ CreateNominal (swift::Demangle::Demangler &dem, swift::Demangle::Node::Kind kind,
116
+ llvm::StringRef module_name, llvm::StringRef type_name) {
117
+ auto *nominal = dem.createNode (kind);
118
+ auto *m = dem.createNodeWithAllocatedText (Node::Kind::Module, module_name);
119
+ auto *id = dem.createNodeWithAllocatedText (Node::Kind::Identifier, type_name);
120
+ nominal->addChild (m, dem);
121
+ nominal->addChild (id, dem);
122
+ return nominal;
123
+ }
124
+
113
125
// / Produce a type mangling for a class.
114
126
inline ManglingErrorOr<std::string>
115
- mangleClass (swift::Demangle::Demangler &dem, llvm::StringRef moduleName,
116
- llvm::StringRef className, swift::Mangle::ManglingFlavor flavor) {
117
- auto *classNode = dem.createNode (Node::Kind::Class);
118
- auto *module =
119
- dem.createNodeWithAllocatedText (Node::Kind::Module, moduleName);
120
- auto *identifier =
121
- dem.createNodeWithAllocatedText (Node::Kind::Identifier, className);
122
- classNode->addChild (module , dem);
123
- classNode->addChild (identifier, dem);
124
- return mangleNode (mangleType (dem, classNode), flavor);
127
+ MangleClass (swift::Demangle::Demangler &dem, llvm::StringRef module_name,
128
+ llvm::StringRef class_name, swift::Mangle::ManglingFlavor flavor) {
129
+ auto *node = CreateNominal (dem, Node::Kind::Class, module_name, class_name);
130
+ return mangleNode (MangleType (dem, node), flavor);
131
+ }
132
+
133
+ // / Create a mangled name for a type node.
134
+ inline swift::Demangle::ManglingErrorOr<std::string>
135
+ GetMangledName (swift::Demangle::Demangler &dem,
136
+ swift::Demangle::NodePointer node,
137
+ swift::Mangle::ManglingFlavor flavor) {
138
+ using namespace swift ::Demangle;
139
+ auto global = dem.createNode (Node::Kind::Global);
140
+ auto type_mangling = dem.createNode (Node::Kind::TypeMangling);
141
+ global->addChild (type_mangling, dem);
142
+ type_mangling->addChild (node, dem);
143
+ return mangleNode (global, flavor);
125
144
}
126
145
127
146
} // namespace swift_demangle
0 commit comments