Iterating through enumeration

bearophile bearophileHUGS at lycos.com
Sun Aug 12 07:26:50 PDT 2012


Timon Gehr:

> This builds the array once at compile time:
>
> static immutable members = [EnumMembers!Foo];
> foreach(m; members){
>
> }

Right:

import std.traits;
enum Foo { A, B, C, D, E, F }
int main() {
     static immutable members = [EnumMembers!Foo];
     int count = 0;
     foreach (m; members) count++;
     foreach (m; members) count++;
     return count;
}


__Dmain:
         push EAX
         xor EAX, EAX
         xor EDX, EDX
         cmp _D4temp4mainFZi7membersyAE4temp3Foo, EAX
         je  L17
LD:     inc EAX
         inc EDX
         cmp EDX, _D4temp4mainFZi7membersyAE4temp3Foo
         jb  LD
L17:    xor EDX, EDX
         cmp _D4temp4mainFZi7membersyAE4temp3Foo, EDX
         je  L2B
L21:    inc EAX
         inc EDX
         cmp EDX, _D4temp4mainFZi7membersyAE4temp3Foo
         jb  L21
L2B:    pop ECX
         ret

Bye,
bearophile


More information about the Digitalmars-d-learn mailing list