On Monday, 15 July 2013 at 11:00:59 UTC, Dicebot wrote:
On Monday, 15 July 2013 at 04:24:59 UTC, JS wrote:
...

I think closest solution you can get is having bunch of private enum definitions and combining them into single public one via compile-time reflection. Something like "mixin(generateEnum!(Red, Green, blue))".

That might solve the partitioning problem and solve part of the hierarchical problem but won't allow submember access, e.g., colors.red.redorange. It seems like a good start though.

I imagine one could potentially build up a set of nested struct with immutable members representing the enums:

final immutable struct Colors
{
        final immutable struct Red
        {
                private immutable int _Red = 10000;
                immutable int RedOrange = 10001;
                alias _Red this; // obviously doesn't work
        }

        final immutable struct Green
        {
                immutable int Green = 20000;
        }

}

but with the glitch on the alias(Colors.Red doesn't work)... which sort of throws a kink in the solution making more than a 2-deep nest useless.

Reply via email to