%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