11 if ((modName.substr(modName.rfind(
'/') + 1, modName.rfind(
'.')) ==
"main" ||
12 modName.substr(modName.rfind(
'\\') + 1, modName.rfind(
'.')) ==
"main") &&
14 return "chigraph_main";
19 size_t id = modName.find(
'_');
20 while (
id != std::string::npos) {
21 modName.replace(
id, 1,
"__");
23 id = modName.find(
'_',
id + 2);
27 id = modName.find(
'/');
28 while (
id != std::string::npos) {
29 modName.replace(
id, 1,
"_s");
31 id = modName.find(
'/',
id);
35 id = modName.find(
'.');
36 while (
id != std::string::npos) {
37 modName.replace(
id, 1,
"_d");
39 id = modName.find(
'.',
id);
42 return modName +
"_m" + name;
46 if (mangled ==
"main") {
return {
"main",
"main"}; }
48 size_t splitter = mangled.find(
"_m");
49 std::string modName = mangled.substr(0, splitter);
50 std::string typeName = mangled.substr(splitter + 2);
53 while ((
id = modName.find(
'_', static_cast<size_t>(
id))) != std::string::npos &&
54 modName.size() >= id) {
55 switch (modName[static_cast<size_t>(
id + 1)]) {
56 case '_': modName.replace(
id, 2,
"_");
break;
57 case 's': modName.replace(
id, 2,
"/");
break;
58 case 'd': modName.replace(
id, 2,
".");
break;
66 return {modName, typeName};
std::string mangleFunctionName(std::string fullModuleName, const std::string &name)
Mangle a function name.
Definitions for mangling functions.
std::pair< std::string, std::string > unmangleFunctionName(std::string mangled)
Unmangle a function name.
The namespace where chigraph lives.