%u <e...@ee.com> wrote:

I'm not sure what you're getting at here. In what way that you don't like
it is it enum-unlike?

These two have distinctly different outputs ;P

alias defineEnum!( "A", "B", "C" ) Bar;
writefln( typeof(Bar.A).stringof );

enum Foo { A, B, C }
writefln( typeof(Foo.A).stringof );

They do. There are ways around that - mostly by using string mixins
on this form:

    template defineEnum( string name, T... ) {
        string defineEnum = "struct " ~ name ~ " {"
            // Stuff from other implementation goes here.
        "}"
    }

    mixin( defineEnum!( "EnumName", "A","B","C" ) );

This pattern is one of the reasons I have been lobbying for automatic
mixin templates in D2 - it should look only like this:

    defineEnum!( "EnumName", "A","B","C" )


Won't the compiler even choke on the type size when feeding defineEnum a hundred
elements or so?

Types are limited to 64K of memory, I think. That should be enough for 16K
elements in this case. If you're thinking of the horribly long names,
I believe identifiers are hashed rather than being stored wholesale, once
they move past 16K.

--
Simen

Reply via email to