GetElementSize() private method

private GetElementSize ( TargetMemoryAccess target ) : int
target TargetMemoryAccess
return int
Example #1
0
        protected int GetArrayOffset(TargetMemoryAccess target, int[] indices)
        {
            if (!GetArrayBounds(target))
            {
                throw new LocationInvalidException();
            }

            if (indices.Length != Rank)
            {
                throw new ArgumentException();
            }

            if (bounds.IsMultiDimensional)
            {
                for (int i = 0; i < Rank; i++)
                {
                    if (indices [i] < bounds.LowerBounds [i])
                    {
                        throw new ArgumentException();
                    }
                    if (indices [i] > bounds.UpperBounds [i])
                    {
                        throw new ArgumentException();
                    }
                }
            }
            else if (!bounds.IsUnbound &&
                     ((indices [0] < 0) || (indices [0] >= bounds.Length)))
            {
                throw new ArgumentException();
            }

            int index = indices [0];

            for (int i = 1; i < Rank; i++)
            {
                int length = bounds.UpperBounds [i] - bounds.LowerBounds [i] + 1;
                index = index * length + indices [i];
            }

            return(index * Type.GetElementSize(target));
        }