Custom attributes (again)

Manu turkeyman at gmail.com
Fri Apr 6 03:18:49 PDT 2012


On 6 April 2012 09:47, Walter Bright <newshound2 at digitalmars.com> wrote:

> On 4/5/2012 5:00 AM, Manu wrote:
> > C# and Java both have attributes, following these established design
> patterns, I
> > don't think there should be any mystery over how they should be
> implemented.
>
> I was thinking of something along the lines of what has been proposed here
> earlier:
>
>  @attr(identifier = expression)
>
> as a storage class, like:
>
>  @attr(foo = bar + 1) int x;
>
> and then:
>
>  __traits(hasAttribute, x, foo)
>
> would return true, and:
>
>  __traits(getAttribute, x, foo)
>
> would return the expression (bar+1). The expression would be compile-time
> only, evaluated at the point of declaration.
>
> The implementation is simple enough, just attach to each symbol an array
> of (identifier,expression) pairs.
>
> You could also omit the expression, and just have:
>
>  @attr(bar) int y;
>

I think this is unnecessarily verbose, although certainly workable as a
minimum. Although there is one issue that 'foo' can't store compound data.
I'd like to see attributes defined as a special sort of struct, and support
constructors, this way you can associate rich data, and you can perform
complex expressions (ctfe) within the constructor to set defaults, or
calculate other details about the attribute if not specified.

@replay int x; // this is all that is needed if the attribute associates no
variable information

// or something associating consideraly more rich information
@editor("X coordinate", EditType.Slider, Colour.Red, "Verbose description
about the thing") // this is still a lot easier to read to me...
int x;
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/digitalmars-d/attachments/20120406/ac56e018/attachment.html>


More information about the Digitalmars-d mailing list