namespace ZeroLevel.Services.Formats.IDX { public class IDXIndex { private readonly int[] _measures; public int[] Cursor { get; private set; } public IDXIndex(int[] measures) { _measures = measures; Cursor = new int[_measures.Length]; Cursor[Cursor.Length - 1] = -1; } public bool MoveNext() { Cursor[Cursor.Length - 1]++; for (int i = Cursor.Length - 1; i >= 0; i--) { if (Cursor[i] >= _measures[i]) { Cursor[i] = 0; if (i > 0) { Cursor[i - 1]++; } } else { return true; } } return false; } } }