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