On Thursday, 20 January 2011 at 18:19:21 UTC, Jacob Carlborg
wrote:
On 2011-01-20 14:47, Justin Johansson wrote:
Not long ago the Java Language people introduced the idea of
annotations
together with an annotation processing tool (apt).
Now perhaps the idea of source code annotations is not
actually a Java
invention per se, however for someone learning D is there any
equivalent
idiom [of Java annotations] in the D language?
Depending on what you want to do you can create a template
mixin that accepts string(s)/alias(es). For example: for the
serialization library (http://dsource.org/projects/orange) I'm
working on the following syntax is used:
class Foo
{
int x;
int y;
int z;
mixin NonSerialized!(z);
}
The above mixin indicates that the "z" instance variable
shouldn't be serialized. This is (currently) achieved by
defining a field in the mixed in template (which will be added
to the class) which is a struct containing the string of the
filed which shouldn't be serialized. Then I iterate over all
the fields in the class with .tupleof and collects all mixed in
fields in a list. Then I know what fields to skip later during
the serialization.
let's assume you are building a web application and you want to
keep that controller only for the logged in users. in java you
can create an annotation class called @RequireLogin and put your
logic there. mixins are not the way for this.