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

== Quote from Simen kjaeraas (simen.kja...@gmail.com)'s article
%u <e...@ee.com> wrote:
> enum X { A=3, B=1, C }
>
> void main() {
>     foreach(e;X)
>         writefln(e.stringof," = ",e);
> }
> //X.A = 3
> //X.B = 1
> //X.C = 2
> or
> //X.B = 1
> //X.C = 2
> //X.A = 3
enum X { A=3, B=1, C }
void main( ) {
     foreach( e;  __traits(allMembers, X) ) {
         writeln( "X.", e, " = ", mixin( "X."~e ) );
     }
}

D1 :'(

Oh. Without being an expert on D1 matters, I believe that is impossible.

I thought there was a struct called defineEnum in phobos1, but it
appears I am wrong. However, it should be fairly simple to create one.
Untested code, as I do not have D1 installed:

struct defineEnum( T... ) {
    foreach ( i, e; T ) {
        mixin( "static defineEnum " ~ e ~ " = defineEnum( i );" );
    }
    static int opApply( int delegate( ref bar ) dg ) {
        int result = 0;
        foreach ( e; T ) {
            mixin( "result = dg( " ~ e ~ " ) );" );
            if ( result ) {
                break;
            }
        }
        return result;
    }

}

--
Simen

Reply via email to