On Jul 25, 11 03:44, Shahid wrote:
I've been using the WithStatement alot recently and there's a situation
that's really bugging me.
my code is similar to the following:
struct Struct
{
enum Enum1 { A, B, C }
enum Enum2 { D, E, F }
...
}
T foo( ... )
{
with ( Struct )
{
bar( Enum1.A );
...
...
}
}
I'm wondering what others think about extending the WithStatement to take
a colon, which would create an implicit scope similar to how Attributes
work. eg:
T func( ... )
{
with ( Struct ):
bar( Enum1.A );
...
...
}
@property string usingNamespace(S)() {
string res = "";
enum prefix = "alias " ~ S.stringof ~ '.';
foreach (m; __traits(allMembers, S)) {
res ~= prefix ~ m ~ ' ' ~ m ~ ';';
}
return res;
}
struct Struct {
enum Enum1 { A, B, C }
enum Enum2 { D, E, F }
}
void main() {
mixin(usingNamespace!Struct);
auto a = Enum1.A;
auto b = Enum2.F;
}