constructing labels for static foreach inside switch inside foreach
Steven Schveighoffer
schveiguy at gmail.com
Wed Jul 8 02:06:01 UTC 2020
OK, so I have a situation where I'm foreaching over a compile-time list
of types. Inside the loop, I'm using a second loop over a set of input.
Inside that loop, I'm using a switch on the input, and inside the
switch, I'm foreaching over the type's members, to construct a switch
that can handle member names (this is for serialization).
If I encounter a certain name, then I want to break out of the inner
loop (it's a while loop)
So naturally, I have to use break statements with labels like:
innerloop:
while(haveMoreData)
switchstmt:
switch(nextDataElement) {
static foreach(name; __traits(allMembers, T)) {
case name:
... // handle it
break switchstmt;
}
case "STOP":
break innerloop;
}
Seems simple enough, except that this inner portion is unrolled, and if
I have more than one type to run this on, I already have an "innerloop"
label defined.
Is there a way to define a label using a mixin or something? or do I
have to wrap this in a function?
Is there another way to approach this?
-Steve
More information about the Digitalmars-d-learn
mailing list