Re: Min, max of enum

2017-01-25 Thread Stefan Koch via Digitalmars-d-learn
On Thursday, 26 January 2017 at 05:58:26 UTC, Profile Anaysis 
wrote:
Since we do not have attributes for enums, I use _ in front of 
the names for meta values.


[...]


This can be done with Ctfe mixins and __traits,

look at __traits(allMembers)


Min, max of enum

2017-01-25 Thread Profile Anaysis via Digitalmars-d-learn
Since we do not have attributes for enums, I use _ in front of 
the names for meta values.


I need to get the non-meta values for the enum so I can iterate 
over it and use it properly.


enum myEnum
{
_Meta1 = 0,
A,B,C,
_Meta3 = 43,
D = 3,
}

The num, for all practical purposes does not contain _Meta1, 
and_Meta3. But in code I use to!myEnum(intI) and having the meta 
values complicate things(simple shifting may or may not work).


I also need to create array indexers based on myEnum that don't 
include the meta characters.


What I do a lot is convert integers in to fields of the enum.

If I do not include any Meta, then it is straight forward 
to!myEnum(i), but with them it is not, so doing things like


int[myEnum] x;

x[to!myEnum(i))] is difficult because the conversion will be 
invalid for meta. I'd have to do some work on i to get the 0-n 
representation to map properly in to the enum... basically 
avoiding the meta fields.


This would all be solved with attributes for enums, but that, I 
suppose is a pipe dream.


Any ideas how I can make this easy?