Proposal: user defined attributes

dennis luehring dl.soluz at gmx.net
Mon Mar 19 23:22:21 PDT 2012


and how to add attribute parameters like DoSerialize(type=packed) for 
example - very very common in C# attributes and java annotations

http://en.wikipedia.org/wiki/Java_annotation

Am 19.03.2012 22:00, schrieb Andrei Alexandrescu:
> On 3/19/12 3:44 PM, Andrej Mitrovic wrote:
>>  On 3/19/12, Jacob Carlborg<doob at me.com>   wrote:
>>>  * Can be repeated on several fields (with the mixin you can only mixin
>>>  "NonSerialized" once)
>>
>>  When I implemented NonSerialized for Vladimir's json library he made a
>>  suggestion to simply create enums of each field that is not to be
>>  serialized and encode it as "fieldname_nonSerialized". That would
>>  enable using a NonSerialized mixin multiple times.
>>
>>  I've yet to implement it in that way, I ran into some odd bugs but
>>  I'll have a look at this soon. My implementation used a hash lookup
>>  table for the fields, but using enums would make the code even
>>  simpler. Basically:
>>
>>  struct Foo
>>  {
>>       int x;
>>       string name;
>>       mixin(NonSerialized!name);
>>       string lastName;
>>       mixin(NonSerialized!lastName);
>>  }
>>
>>  and this would expand to:
>>  struct Foo
>>  {
>>       int x;
>>       string name;
>>       enum name_nonSerialized;
>>       string lastName;
>>       enum lastName_nonSerialized;
>>  }
>>
>>  So all you'd have to do is use compile-time introspection and a little
>>  bit of string processing to figure out if a field should be serialized
>>  or not.
>
> I salute creative uses of the language over defining new features.
>
> Andrei



More information about the Digitalmars-d mailing list