On 2013-04-16 08:29, 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
Use __traits(getAttributes, symbol) to get the attributes out of the given symbol. It will return a tuple with the attributes.
I would guess it would look something like this: message msg = __traits(getAttributes, AnActor.myHandler)[0]; int atom = msg.atom; See the docs: http://dlang.org/traits.html#getAttributes http://dlang.org/attribute.html#uda -- /Jacob Carlborg
