コード例 #1
0
        //------------------------------------------------------------------------------------------------
        //------------------------------------------------------------------------------------------------
        //------------------------------------------------------------------------------------------------

        /*
         * 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);
            }
        }