Resolve function pointers using UDA during CT

Tim Volckmann timvol at ymail.com
Sun Feb 9 05:10:13 PST 2014


On Sunday, 9 February 2014 at 13:03:47 UTC, Jakob Ovrum wrote:
> On Sunday, 9 February 2014 at 12:48:36 UTC, Tim Volckmann wrote:
>> Any way to do something like this?
>
> No, associative arrays cannot be transferred from compile-time 
> to runtime yet, due to implementation issues. The next best 
> thing you can do is to use a module constructor with a 
> generated body that fills the AA.

You mean using static this as follows?:

module myMain;

private
{
    string function(string)[string] callbacks;
}

static this()
{
    {
       // do something like this:
       //
       // auto u = __traits(getFunctionsByAttribute, "MyUDA")
       // foreach (myFunction; u)
       //    callbacks[myFunction.GetAttribute("MyUDA").Name] =
myFunction
    }
}

void main(string[] args)
{

    if (args[1] in callbacks)
    {
       callbacks[args[1]]("myString");
    }

}

That's also possible... but how can I find all functions with 
MyUDA?


More information about the Digitalmars-d-learn mailing list