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!

Reply via email to