digitalmars.D.learn - Rotating though an enum idiom
- Spacen Jasset (9/9) Sep 06 2008 Is there a way to "rotate" though and enum; So that:
- Spacen Jasset (3/16) Sep 06 2008 Like this:
- Denis Koroskin (9/21) Sep 06 2008 T rotate(T)(T elem)
- Manfred_Nowak (7/8) Sep 06 2008 Might be dependent on what you know about the enum:
Is there a way to "rotate" though and enum; So that: enum RenderMode { POINT, LINE, FILL } renderMode = POINT; fn(renderMode) gives LINE fn(renderMode) gives FILL fn(renderMode) gives POINT and so on, in rotation. I would normally use some sort of modulo operation on an int to do this, but I wonder if there is another way.
Sep 06 2008
Spacen Jasset wrote:Is there a way to "rotate" though and enum; So that: enum RenderMode { POINT, LINE, FILL } renderMode = POINT; fn(renderMode) gives LINE fn(renderMode) gives FILL fn(renderMode) gives POINT and so on, in rotation. I would normally use some sort of modulo operation on an int to do this, but I wonder if there is another way.Like this: mRenderMode = cast(RenderMode)((mRenderMode + 1) % (RenderMode.max + 1));
Sep 06 2008
On Sun, 07 Sep 2008 02:18:32 +0400, Spacen Jasset <spacenjasset yahoo.co.uk> wrote:Spacen Jasset wrote:T rotate(T)(T elem) { return cast(T)((elem + 1) % (T.max + 1)); } enum RenderMode { POINT, LINE, FILL } RenderMode mRenderMode = RenderMode.POINT; mRenderMode = rotate(mRenderMode); // returns RenderMode.LINEIs there a way to "rotate" though and enum; So that: enum RenderMode { POINT, LINE, FILL } renderMode = POINT; fn(renderMode) gives LINE fn(renderMode) gives FILL fn(renderMode) gives POINT and so on, in rotation. I would normally use some sort of modulo operation on an int to do this, but I wonder if there is another way.Like this: mRenderMode = cast(RenderMode)((mRenderMode + 1) % (RenderMode.max + 1));
Sep 06 2008
Spacen Jasset wrote:use some sort of modulo operationMight be dependent on what you know about the enum: enum E{ A , B=42 , C=int.max} -manfred -- If life is going to exist in this Universe, then the one thing it cannot afford to have is a sense of proportion. (Douglas Adams)
Sep 06 2008