using System; namespace sharp.extensions { public static class ArrayExtension { public static bool ArrayEquals(this T[] a,T[] b){ if (a.Length != b.Length){ return false; } for (int n = 0; n < a.Length;n++){ if (!a[n].Equals(b[n])){ return false; } } return true; } public static T[] Extend(this T[] source, int len) { if (source.Length < len) { T[] c = new T[len]; Array.Copy(source, 0, c, 0, source.Length); Fill(c, default(T),source.Length); return c; } return source; } public static T[] Resize(this T[] source, int len) { if (source.Length < len) { T[] c = new T[len]; Array.Copy(source, 0, c, 0, source.Length); return c; } else if (source.Length > len){ return Segment(source, 0, len); } return Segment(source, 0); } public static T[] Segment(this T[] source, int start) { return Segment(source, start, source.Length - start); } public static T[] Segment(this T[] source,int start,int len){ T[] temp = new T[len]; Array.Copy(source,start,temp,0,len); return temp; } public static T[] Reverse(this T[] source){ T[] t = new T[source.Length]; Array.Copy(source,t,source.Length); Array.Reverse(t); return t; } public static void Fill(this T[] a, T value) { Fill(a, value, 0, a.Length); } public static void Fill(this T[] a, T value,int start) { Fill(a, value, start, a.Length - start); } public static void Fill(this T[] a, T value,int start,int len) { for (int n = start; n < (start+len); n++) { a[n] = value; } } public static T[] Insert(this T[] a, T[] insert, int start,int len) { Array.Copy(insert,0,a,start,len); return a; } public static T[] Insert(this T[] a,T[] insert,int start){ return Insert(a, insert, start, insert.Length); } } }