Figuring out the returntype opDipatch

TheFlyingFiddle theflyingfiddle at gmail.com
Sat Nov 2 15:41:05 PDT 2013


I'm currently working on a IReflectionable interface

Currently the usage is as follows

class Foo : IReflectionable
{
   mixin ReflectionImpl;

   void bar(int a) { /* do something */ }
   int baz(string a) { return a.length; }

}

unittest
{
    IReflectionable foo = new Foo();

    alias void delegate(int) bar_t;

    auto bar = foo.funcPtr!(bar_t, "bar"); //Gets a delegate to 
foo.bar
    bar(1); //Calls foo.bar(1);

    alias int delegate(string) baz_t;
    auto baz = foo.funcPtr!(baz_t, "baz");
    int a = baz("Hello");
}

Now this works and is all well and good. However i would like to 
improve on the
syntax a bit.

This is how i would like to call the code.

unittest
{
   IReflectionable foo = new FooService();

   foo.bar(1); //Now this becomes foo.opDispatch!("bar", int)(1);

   int a = foo.baz("Hello"); //This does NOT work. Cannot figure 
out returntype
}

The problem i am faced with is that i need a way to figure out 
the return value of opDispatch by the invokation call.

all the information i need is here

int a = foo.baz("hello");

This gives returntype int.

So is there a way to gain this information in opDspatch? Is it 
possible to do something like this?

auto a = foo.baz!(int)("hello");









More information about the Digitalmars-d-learn mailing list