On Saturday, 2 September 2017 at 18:28:02 UTC, Moritz Maxeiner
wrote:
[...]
Code will eventually look something like the following.
The point is to be able to retrieve the exported function at
runtime only by knowing what the template arg would have been.
export extern(C) const(Reflection) dummy(string fqn)(){ ... }
int main(string[] argv)
{
enum ARG = "AAAAAA";
auto hex = toAsciiHex(ARG);
// original
writeln(dummy!ARG.mangleof);
// reconstructed at runtime
auto remangled = dummy!"".mangleof;
remangled = remangled.replaceFirst(
"_D7mainMod17", "_D7mainMod" ~ (17 +
hex.length).to!string);
remangled = remangled.replaceFirst(
"VAyaa0_", "VAyaa" ~ ARG.length.to!string ~ "_" ~ hex);
writeln(remangled);
return 0;
}