using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace SharpOSC { internal static class Extensions { public static int FirstIndexAfter(this IEnumerable items, int start, Func predicate) { if (items == null) throw new ArgumentNullException("items"); if (predicate == null) throw new ArgumentNullException("predicate"); if (start >= items.Count()) throw new ArgumentOutOfRangeException("start"); int retVal = 0; foreach (var item in items) { if (retVal >= start && predicate(item)) return retVal; retVal++; } return -1; } public static List> Split(this IEnumerable data, Func predicate) { var output = new List>(); var curr = new List(); output.Add(curr); foreach (var x in data) { if (predicate(x)) { curr = new List(); output.Add(curr); } else curr.Add(x); } return output; } public static T[] SubArray(this T[] data, int index, int length) { T[] result = new T[length]; Array.Copy(data, index, result, 0, length); return result; } } }