Esempio n. 1
0
        static public int[] GetStartingIndex(this IArrayDefinition array)
        {
            var indexes = new int[array.Rank];

            array.GetStartingIndex(indexes);
            return(indexes);
        }
Esempio n. 2
0
        static public bool IndexesIntersects(this IArrayDefinition first, IArrayDefinition second, out IArrayDefinition intersection)
        {
            int[] minimums = first.GetStartingIndex().Zip(second.GetStartingIndex(), Math.Max).ToArray();
            int[] maximums = first.GetEndingIndex().Zip(second.GetEndingIndex(), Math.Min).ToArray();

            if (Enumerable.Range(0, first.Rank).Any(x => minimums[x] > maximums[x]))
            {
                intersection = new IndexRange();
                return(false);
            }

            intersection = new IndexRange(minimums, maximums.Zip(minimums, (x, y) => x - y + 1).ToArray());
            return(true);
        }
Esempio n. 3
0
 static public void GetResetIndex(this IArrayDefinition array, int[] indexes)
 {
     array.GetStartingIndex(indexes);
     indexes[array.Rank - 1]--;
 }
Esempio n. 4
0
 static public int[] GetResetIndex(this IArrayDefinition array)
 {
     int[] indexes = array.GetStartingIndex();
     indexes[array.Rank - 1]--;
     return(indexes);
 }