UDA question

Dicebot m.strashun at gmail.com
Tue Apr 16 00:13:37 PDT 2013


On Tuesday, 16 April 2013 at 06:29:22 UTC, Ulf Johansson wrote:
> I have a question regarding using a struct value as 
> user-defined attribute. The use-case I am trying to get working 
> is as follows:
>
> struct message {
>     int atom;
> }
>
> ...
>
> class AnActor : ... {
>     @message(id) void myHandler(string arg1, real arg2) {
>     }
>
>     mixin ... // a mixin that builds message dispatch
> }
>
>
> The 'message' attribute defines methods of the class that will 
> participate in message dispatch argument matching. This works 
> fine but I want to take this one step further. I want to be 
> able to give a message and a handler an ID that more strictly 
> directs a message (and gives an error if arguments does not 
> match).
>
> The problem I have is quite simple - getting the value of 
> 'atom' out of the message attribute. How can I do this? I did 
> not post any of my actual code, I hope the above example 
> describes the problem.
>
> Regards,
> Ulf

foreach(attribute, __traits(getAttributes, AnActor))
{
     static if (is(typeof(attribute) == message))
         pragma(msg, attribute.atom);
}


More information about the Digitalmars-d mailing list