public static Array CreateArray <T>(this RegularArrayInfo arrayInfo, ICollection <T> coll) { if (arrayInfo == null) { throw new ArgumentNullException("arrayInfo"); } if (coll == null) { throw new ArgumentNullException("coll"); } if (coll.Count != arrayInfo.Length) { throw new ArgumentException("Invalid collection length", "coll"); } var indices = new int[arrayInfo.Rank]; var array = arrayInfo.CreateArray <T>(); coll.ForEach((t, i) => { arrayInfo.CalcDimIndices(i, indices); arrayInfo.SetValue(array, t, indices); }); return(array); }
public static int TransformFlatIndex(this RegularArrayInfo arrayInfo, int flatIndex, params Range[] ranges) { arrayInfo.ValidateRanges(ranges); int[] dimIndices = new int[arrayInfo.Rank]; RegularArrayInfo ai = new RegularArrayInfo(ranges.Select(r => new ArrayDimension(r.Count, r.Index)).ToArray()); ai.CalcDimIndices(flatIndex, dimIndices); return(arrayInfo.CalcFlatIndex(dimIndices)); }