import std.traits;
import std.stdio;

alias FDg = void delegate (string args);

FDg[string] cmdlist;

void register(DG) (string name, DG dg) if (isCallable!DG) {
  cmdlist[name] = delegate (string args) {
    import std.array : split;
    import std.conv : to;
    alias Args = Parameters!DG;
    auto spx = args.split(' ');
    Args ara;
    foreach (immutable idx, ref a; ara) {
      a = spx[idx].to!(typeof(a));
    }
    dg(ara);
  };
}


void main () {
register("test", (int a, bool b) { writeln("a=", a, "; b=", b); });
  cmdlist["test"]("42 true");
}

Reply via email to