System.Runtime.Serialization.Formatters.Binary.ObjectReader.NextRectangleMap C# (CSharp) Method

NextRectangleMap() private method

private NextRectangleMap ( ParseRecord pr ) : void
pr ParseRecord
return void
        private void NextRectangleMap(ParseRecord pr)
        {
            // For each invocation, calculate the next rectangular array position
            // example
            // indexMap 0 [0,0,0]
            // indexMap 1 [0,0,1]
            // indexMap 2 [0,0,2]
            // indexMap 3 [0,0,3]
            // indexMap 4 [0,1,0]       
            for (int irank = pr._rank - 1; irank > -1; irank--)
            {
                // Find the current or lower dimension which can be incremented.
                if (pr._rectangularMap[irank] < pr._lengthA[irank] - 1)
                {
                    // The current dimension is at maximum. Increase the next lower dimension by 1
                    pr._rectangularMap[irank]++;
                    if (irank < pr._rank - 1)
                    {
                        // The current dimension and higher dimensions are zeroed.
                        for (int i = irank + 1; i < pr._rank; i++)
                        {
                            pr._rectangularMap[i] = 0;
                        }
                    }
                    Array.Copy(pr._rectangularMap, 0, pr._indexMap, 0, pr._rank);
                    break;
                }
            }
        }