On 2013-11-03 03:15, TheFlyingFiddle wrote:

In the IReflectionable interface:

interface IReflectionable
{
     final P funcPtr(P)(string fun) if (is(P == delegate))
     {
         //Using mangeling for overloads and type safety
     auto ptr = delPtr_impl(mangle!P(fun));

     P del;
     del.ptr = cast(typeof(del.ptr))ptr[0];
     del.funcptr = cast(typeof(del.funcptr))ptr[1];
     return del;
     }

     final P funcPtr(P)(string fun) if (is(P == function))
     {
         //Using mangeling for overloads and type safety
     auto ptr = funcPtr_impl(mangle!(P)(fun));
     return cast(P)ptr;
     }

     final ?? opDispatch(string name, Params...)(Params params)
     {
        alias ?? delegate(Params) del_type;
        auto del = funcPtr!(del_type)(name);

        static if(?? == void)
           del(params);
        else
           return del(params);
     }

     protected Tuple!(void*, void*) delPtr_impl(string s);
     protected void* funcPtr_impl(string s);
}

What i'm interested in is determining what type ?? should be. Variant
works but if possible i would like to avoid it. This would require me to
know about the code at the invokation site. (So i'm guessing it might
not be possible)

I have the same problem as well. I haven't figured out the best way to solve this yet.

--
/Jacob Carlborg

Reply via email to