foreach over enums?

Simen kjaeraas simen.kjaras at gmail.com
Thu Sep 23 17:28:43 PDT 2010


%u <e at ee.com> wrote:

> though, supporting a non-continues range of values (which I don't need)  
> will be
> annoying in this setup, I think..

Impossible in the current version, unless you accept having a bunch of
dummy fields. It is not hard to implement:

template defineStaticImpl( T, int value, string name ) {
     // Do as below, no recursion.
}

template defineStaticImpl( T, int value, string name, string next, args...  
) {
     // Mostly as before.
}


template defineStaticImpl( T, int value, string name, int actualValue,  
args... ) {
     mixin defineStaticImpl!( T, actualValue, name, args );
}

>> > 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.
> Good to know.
>
> All this makes for a nice freachable D1 defineEnum, thanks!

My pleasure. Was a fun challenge.

-- 
Simen


More information about the Digitalmars-d-learn mailing list