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