Rotating though an enum idiom
Denis Koroskin
2korden at gmail.com
Sat Sep 6 16:22:30 PDT 2008
On Sun, 07 Sep 2008 02:18:32 +0400, Spacen Jasset
<spacenjasset at yahoo.co.uk> wrote:
> 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));
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.LINE
More information about the Digitalmars-d-learn
mailing list