Mercurial > hg > ucis.core
comparison 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 |
comparison
equal
deleted
inserted
replaced
80:4714531734b3 | 81:3352f89cf6f5 |
---|---|
120 public static int GetHashCode<T>(T[] array) { | 120 public static int GetHashCode<T>(T[] array) { |
121 int h = 0; | 121 int h = 0; |
122 foreach (T v in array) h ^= v.GetHashCode(); | 122 foreach (T v in array) h ^= v.GetHashCode(); |
123 return h; | 123 return h; |
124 } | 124 } |
125 public static void Add<T>(ref T[] array, params T[] items) { | 125 public static int Add<T>(ref T[] array, params T[] items) { |
126 if (array == null) { | 126 if (array == null) { |
127 array = new T[items.Length]; | 127 array = new T[items.Length]; |
128 items.CopyTo(array, 0); | 128 items.CopyTo(array, 0); |
129 return 0; | |
129 } else { | 130 } else { |
130 int index = array.Length; | 131 int index = array.Length; |
131 Array.Resize(ref array, index + items.Length); | 132 Array.Resize(ref array, index + items.Length); |
132 items.CopyTo(array, index); | 133 items.CopyTo(array, index); |
134 return index; | |
133 } | 135 } |
134 } | 136 } |
135 public static void Add<T>(ref T[] array, ICollection<T> items) { | 137 public static int Add<T>(ref T[] array, ICollection<T> items) { |
136 if (array == null) { | 138 if (array == null) { |
137 array = new T[items.Count]; | 139 array = new T[items.Count]; |
138 items.CopyTo(array, 0); | 140 items.CopyTo(array, 0); |
141 return 0; | |
139 } else { | 142 } else { |
140 int index = array.Length; | 143 int index = array.Length; |
141 Array.Resize(ref array, index + items.Count); | 144 Array.Resize(ref array, index + items.Count); |
142 items.CopyTo(array, index); | 145 items.CopyTo(array, index); |
146 return index; | |
143 } | 147 } |
144 } | 148 } |
145 public static void Add<T>(ref T[] array, T item) { | 149 public static int Add<T>(ref T[] array, T item) { |
146 if (array == null) { | 150 if (array == null) { |
147 array = new T[] { item }; | 151 array = new T[] { item }; |
152 return 0; | |
148 } else { | 153 } else { |
149 int index = array.Length; | 154 int index = array.Length; |
150 Array.Resize(ref array, index + 1); | 155 Array.Resize(ref array, index + 1); |
151 array[index] = item; | 156 array[index] = item; |
157 return index; | |
152 } | 158 } |
153 } | 159 } |
154 public static void AddUnique<T>(ref T[] array, T item) { | 160 public static int AddUnique<T>(ref T[] array, T item) { |
155 if (Array.IndexOf(array, item) != -1) return; | 161 int index = Array.IndexOf(array, item); |
156 Add(ref array, item); | 162 if (index == -1) index = Add(ref array, item); |
163 return index; | |
157 } | 164 } |
158 } | 165 } |
159 } | 166 } |