//------------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------------ /* * Methods: */ #region Utility methods /// <summary> /// Increments the enumerator to go to the next discrete element. /// </summary> /// <returns>Returns true if it can continue to increment, false otherwise.</returns> public bool Increment() { //Build the first element: if (!_started) { _started = true; return(true); } //End the loop: else if (CurrentElement.IsComplete()) { CurrentElement = DiscreteElement.GetEmptyElement(Size); _started = false; return(false); } //Increment: else { uint[] numbers = CurrentElement.Numbers; if (numbers[0] != uint.MaxValue) { numbers[0]++; } else { numbers[0] = 0; int indexToIncrement = 1; for (int i = 1; i < numbers.Length - 1; i++) { if (numbers[i] == uint.MaxValue) { numbers[i] = 0; indexToIncrement++; } else { break; } } numbers[indexToIncrement]++; } CurrentElement = new DiscreteElement(Size, numbers); return(true); } }