Here's the basic code I'm playing with:
struct MyCmd
{
Variant func;
// Has other members.
}
MyCmd[string] functions_;
void addCommand(T)(const string name, T func)
{
MyCmd cmd;
cmd.func = Variant(func);
functions_[name] = cmd;
}
void process(string[] args) // args is only available at runtime.
{
const string name = args[0]; // Name of the command
if(name in functions_)
{
MyCmd cmd = functions_[name];
cmd.func(/*Call with proper number of arguments converted to
the proper type*/);
}
}
I initially got idea from the D Cookbook Chapter Reflection:
Creating a command-line function caller. But the code has to
reside in the same module as the functions it will use.
So I arrived at this code but can't figure out how to call the
actual stored function.
Thanks!