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