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<d...@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

Reply via email to