Mercurial > hg > ucis.core
diff Util/ArrayUtil.cs @ 81:3352f89cf6f5
FBGUI ContainerControl fixes (client area, keyboard capture)
author | Ivo Smits <Ivo@UCIS.nl> |
---|---|
date | Sun, 23 Feb 2014 16:56:42 +0100 |
parents | 4714531734b3 |
children | 146a8d224d86 c9da306e06c9 |
line wrap: on
line diff
--- a/Util/ArrayUtil.cs Sun Feb 16 15:05:31 2014 +0100 +++ b/Util/ArrayUtil.cs Sun Feb 23 16:56:42 2014 +0100 @@ -122,38 +122,45 @@ foreach (T v in array) h ^= v.GetHashCode(); return h; } - public static void Add<T>(ref T[] array, params T[] items) { + public static int Add<T>(ref T[] array, params T[] items) { if (array == null) { array = new T[items.Length]; items.CopyTo(array, 0); + return 0; } else { int index = array.Length; Array.Resize(ref array, index + items.Length); items.CopyTo(array, index); + return index; } } - public static void Add<T>(ref T[] array, ICollection<T> items) { + public static int Add<T>(ref T[] array, ICollection<T> items) { if (array == null) { array = new T[items.Count]; items.CopyTo(array, 0); + return 0; } else { int index = array.Length; Array.Resize(ref array, index + items.Count); items.CopyTo(array, index); + return index; } } - public static void Add<T>(ref T[] array, T item) { + public static int Add<T>(ref T[] array, T item) { if (array == null) { array = new T[] { item }; + return 0; } else { int index = array.Length; Array.Resize(ref array, index + 1); array[index] = item; + return index; } } - public static void AddUnique<T>(ref T[] array, T item) { - if (Array.IndexOf(array, item) != -1) return; - Add(ref array, item); + public static int AddUnique<T>(ref T[] array, T item) { + int index = Array.IndexOf(array, item); + if (index == -1) index = Add(ref array, item); + return index; } } }