MCPcopy Create free account
hub / github.com/Vector35/binaryninja-api / DemangleBaseUnresolvedName

Method DemangleBaseUnresolvedName

demangler/gnu3/demangle_gnu3.cpp:1215–1264  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1213
1214
1215QualifiedName DemangleGNU3::DemangleBaseUnresolvedName()
1216{
1217 // <base-unresolved-name> ::= <simple-id> # unresolved name
1218 // ::= on <operator-name> # unresolved operator-function-id
1219 // ::= on <operator-name> <template-args> # unresolved operator template-id
1220 // ::= dn <destructor-name> # destructor or pseudo-destructor;
1221 // # e.g. ~X or ~X<N-1>
1222
1223 indent()
1224 MyLogDebug("%s: '%s'\n", __FUNCTION__, m_reader.GetRaw().c_str());
1225 QualifiedName out;
1226 if (m_reader.Length() > 1)
1227 {
1228 const string str = m_reader.PeekString(2);
1229 if (str == "on")
1230 {
1231 out.push_back(GetOperator(m_reader.Read(), m_reader.Read()));
1232 if (m_reader.Peek() == 'I')
1233 {
1234 m_reader.Consume();
1235 vector<FunctionParameter> args;
1236 DemangleTemplateArgs(args);
1237 out.back() += GetTemplateString(args);
1238 PushType(CreateUnknownType(out));
1239 }
1240 }
1241 else if (str == "dn")
1242 {
1243 string name = DemangleUnresolvedType().GetString();
1244 if (name.empty())
1245 out.push_back("~" + DemangleSourceName());
1246 else
1247 out.push_back("~" + name);
1248 }
1249 else
1250 {
1251 // <simple-id>
1252 out.push_back(DemangleSourceName());
1253 if (m_reader.Peek() == 'I')
1254 {
1255 m_reader.Consume();
1256 vector<FunctionParameter> args;
1257 DemangleTemplateArgs(args);
1258 out.back() += GetTemplateString(args);
1259 }
1260 }
1261 }
1262 dedent();
1263 return out;
1264}
1265
1266
1267TypeBuilder DemangleGNU3::DemangleUnresolvedType()

Callers

nothing calls this directly

Calls 14

MyLogDebugFunction · 0.85
GetOperatorFunction · 0.85
GetTemplateStringFunction · 0.85
CreateUnknownTypeFunction · 0.85
c_strMethod · 0.80
push_backMethod · 0.80
GetRawMethod · 0.45
LengthMethod · 0.45
PeekStringMethod · 0.45
ReadMethod · 0.45
PeekMethod · 0.45
ConsumeMethod · 0.45

Tested by

no test coverage detected