using System;
namespace Funique
{
///
/// Enum cycle utility class
/// This can only use for default int enum type
/// ------------------------------------------------
/// 列舉循環功能類
/// 這只能用於預設正整數 Key 的列舉
///
/// Enum Type
public class EnumCycle where T : Enum
{
///
/// Next enum value
/// ------------------------------------------------
/// 下一個列舉值
///
///
///
public int Next(int v)
{
v++;
if (v >= Enum.GetNames(typeof(T)).Length) v = 0;
return v;
}
///
///
///
public T Next(T v)
{
return (T)Enum.ToObject(typeof(T), Next((int)(object)v));
}
///
/// Last enum value
/// ------------------------------------------------
/// 上一個列舉值
///
///
///
public int Last(int v)
{
v--;
if (v <= -1) v = Enum.GetNames(typeof(T)).Length - 1;
return v;
}
///
///
///
public T Last(T v)
{
return (T)Enum.ToObject(typeof(T), Last((int)(object)v));
}
}
}