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 }