Proposal: user defined attributes

Jacob Carlborg doob at me.com
Wed Mar 21 10:06:54 PDT 2012


On 2012-03-21 16:11, Andrei Alexandrescu wrote:
I think the liability here is that b needs to appear in two places, once
> in the declaration proper and then in the NonSerialized part. (A
> possible advantage is that sometimes it may be advantageous to keep all
> symbols with a specific attribute in one place.) A possibility would be
> to make the mixin expand to the field and the metadata at once.

Yes, but that just looks ugly:

class Foo
{
     int a;
     mixin NonSerialized!(int, "b");
}

That's why it's so nice with attributes.

> Did you mean
>
> static const __nonSerialized = ["b"];
>
> ?

Yes, sorry.

> In case there are several non-serialized variables, how do you avoid
> clashes between different definitions of __nonSerialized?

In my current implementation you are forced to only mixin one 
NonSerialized per type:

class Foo
{
     int a;
     int b;
     mixin NonSerialized!(a, b);
}

Of course there are ways around that with various pros and cons.

-- 
/Jacob Carlborg


More information about the Digitalmars-d mailing list