On 2011-01-20 20:10, Trass3r wrote:
class Foo
{
int x;
int y;
int z;

mixin NonSerialized!(z);
}

Had a quick look at
http://dsource.org/projects/orange/browser/orange/serialization/Serializable.d

1. How come it works without 'mixin' in the template declaration (mixin
template NonSerialized)?

I think it's optional, it works with DMD 2.052

2. What if several fields need to be tagged?

You use the mixin several times.

3. Is there a reason to use a struct instead of e.g. __nonSerialized =
["field1", "field2", ...]?

Hmm, I think I had a good reason. First it needs to be const so it works during compile time. But I think I used a struct because I used that on another project which required more data than just then name the field. If I would store it in an array you could only do the mixin once, I think. And that would require you to use strings instead of aliases, I think.

template foo (args...) {}

Does that work with aliases?

4. Couldn't that field be static to save space or maybe even enum?

That field should absolutely be static, I'm currently working on fixing that. I didn't think of that when I implemented it. This will also only work with one mixin (see the answer for the third comment).

--
/Jacob Carlborg

Reply via email to