Proposal: user defined attributes

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Mon Mar 19 14:00:00 PDT 2012


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