58c80b1a56cdf144eb011d6d93c0efbc96111289
[mono.git] / mcs / class / corlib / System.Collections.Generic / ChangeLog
1 2009-07-31  Raja R Harinath  <harinath@hurrynot.org>
2
3         * List.cs (IList.this.set): Convert NullReference and InvalidCast
4         exceptions into ArgumentExceptions.
5         (IList.Add, IList.Contains, IList.IndexOf, IList.Insert, IList.Remove):
6         Convert NullReferenceException to ArgumentException.
7
8 2009-07-31  Raja R Harinath  <harinath@hurrynot.org>
9
10         * List.cs (Enumerator.next): Rename from Enumerator.idx and change
11         meaning to be the index of the next item to be enumerated.
12         (Enumerator.MoveNext): Simplify.
13
14 2009-07-31  Raja R Harinath  <harinath@hurrynot.org>
15
16         * Dictionary.cs (Enumerator.next): Rename from Enumerator.cur and
17         change meaning to be the index of the slot to start searching on
18         the next iteration.
19         (Enumerator.MoveNext): Avoid an out-of-bounds access.
20
21 2009-07-30  Raja R Harinath  <harinath@hurrynot.org>
22
23         * List.cs (Enumerator.current): New.
24         (Enumerator.MoveNext): Update it.
25         (Enumerator.Current): Don't verify any invariants.
26         (Enumerator.Dispose): Set 'l' to null.
27
28 2009-07-29  Raja R Harinath  <harinath@hurrynot.org>
29
30         * Dictionary.cs (Enumerator.current): New.
31         (Enumerator.MoveNext): Update it.
32         (Enumerator.Current): Don't verify any invariants.
33
34 2009-06-10  Marek Safar <marek.safar@gmail.com>
35
36         * IEqualityComparer.cs, IComparer.cs, IEnumerable.cs,
37         IEnumerator.cs: Add type variance.
38
39 2009-04-02  Jb Evain  <jbevain@novell.com>
40
41         * Dictionary.cs (ValueCollection.CopyTo): fix for copying to
42         an object array. Based on a patch by Tobias Grimm <mono@e-tobi.net>.
43         Fixes bug #328036.
44
45 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
46
47         * Dictionary.cs: Declare the Link struct outside the main class to avoid
48         creating a separate inflated instances for each instantiation of Dictionary.
49
50 2008-11-14  Jb Evain  <jbevain@novell.com>
51
52         * Dictionary.cs (ICollection.CopyTo): fix the different possible
53         copying cases depending on the actual type of destination array,
54         be it an array of KeyValuePair, DictionaryEntry, or object.
55         Fixes #444778.
56
57 2008-11-14  Jb Evain  <jbevain@novell.com>
58
59         * Dictionary.cs: fix ICollection<KeyValuePair<T>>.Remove and .Contains
60         to not only check if the key exists but if the associated value is the
61         good one as well. Fixes #444768.
62
63 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
64
65         * Dictionary.cs (Clear): Clear the linkSlots array as well, as 
66         Enumerator.MoveNext () depends on it. Fixes #432441.
67
68 Fri Oct 3 23:08:06 CEST 2008 Paolo Molaro <lupus@ximian.com>
69
70         * Dictionary.cs: by popular demand, return keys/values in insertion
71         order when possible.
72
73 2008-09-29  Jb Evain  <jbevain@novell.com>
74
75         * Dictionary.cs: check for null argument in ContainsKey.
76         Patch by Jonathan Anderson  <jonathan.l.anderson@gmail.com>
77
78 2008-09-24  Jb Evain  <jbevain@novell.com>
79
80         * Dictionary.cs: properly reset all compounds enumerators.
81         Fixes #429530.
82
83 2008-09-12  Jb Evain  <jbevain@novell.com>
84
85         * Dictionary.cs: (ToTValue) allow null values to be added for non
86         value types TValues to the dictionary when using the
87         non generic IDictionary. Fixes #425693.
88
89 2008-06-16  Andreas Nahr <ClassDevelopment@A-SoftTech.com>
90
91         * String.cs: Dictionary: Do not change the index data when using the indexer for
92         an already existing index. This is somewhat illogical and breakes obscure code situations
93
94 2008-05-29  Juraj Skripsky <js@hotfeet.ch>
95
96         * List.cs (RemoveAll, Shift): Fix leak by clearing empty array
97         items.
98
99 2008-04-29  Juraj Skripsky <js@hotfeet.ch>
100
101         * Dictionary.cs (Clear, Remove): Clear empty slots in keySlots 
102         and valueSlots. Otherwise the garbage collector cannot reclaim 
103         the referenced key/value. Fixes bug #384723.
104
105 2008-04-02  Andreas Nahr  <ClassDevelopment@A-SoftTech.com>
106
107         * KeyNotFoundException.cs
108         * KeyValuePair.cs: Fix parameter names
109
110 2008-03-21  Sebastien Pouliot  <sebastien@ximian.com>
111
112         * EqualityComparer.cs: Add null checks in GetHashCode. Fix bug 
113         #372892
114
115 2007-11-05  Sebastien Pouliot  <sebastien@ximian.com>
116
117         * Dictionary.cs: Ensure that the non-generic CopyTo works on Array.
118         Fix #322783
119
120 2007-10-31  Miguel de Icaza  <miguel@novell.com>
121
122         * Dictionary.cs: Do not increment curTableItem when we return
123         false.   Was not necessary, just a defensive move.
124
125 2007-10-10  Juraj Skripsky <js@hotfeet.ch>
126
127         * Dictionary.cs (Enumerator.MoveNext): Handle the case where we
128         had already reached the end. Fixes bug #332534.
129
130 2007-08-20  Jb Evain  <jbevain@novell.com>
131
132         * List.cs (AddCollection): return early if the collection
133         to be added is empty.
134
135 2007-08-08  Atsushi Enomoto  <atsushi@ximian.com>
136
137         * Dictionary.cs : [Comvisible(true)]->[ComVisible(false)].
138
139 2007-06-23  Marek Safar <marek.safar@gmail.com>
140
141         * List.cs: Make CheckMatch static.
142         
143 2007-06-20  Juraj Skripsky <js@hotfeet.ch>
144
145         * Dictionary.cs: Optimize and add implementation notes. Use a "mini-heap"
146         to store the linked lists instead of the regular heap. Split arrays of
147         structs into separate arrays to make the GC's life simpler (see bug 81879
148         for details). Make class serialization compatible with MS.NET.
149
150         * EqualityComparer.cs: Rename IEquatableOfTEqualityComparer<T> to
151         GenericEqualityComparer<T> to fix binary serialization compatibility
152         with MS.
153
154 2006-04-16  Jonathan Chambers  <joncham@gmail.com>
155
156         * List.cs: Clear entry in RemoveAt after removing item. 
157         Fixes bug #81387.
158         
159 2007-03-27  Alan McGovern <alan.mcgovern@gmail.com>
160
161         * List.cs: Optimized several methods to increase performance
162
163 2007-03-21  Juraj Skripsky <js@hotfeet.ch>
164
165         * List.cs (FindAllStackBits): Small optimization to the new code.
166         Built resulting List<T> directly as an array, wrap it in a List<T>
167         afterwards. Stop the filling of the result array as soon as all
168         matching items have been processed.
169
170 2007-03-20  Juan Cristóbal Olivares <juancri@gmail.com>
171
172         * List.cs (FindAll): Optimize FindAll using a bitmask to determine
173         the number of positive matches, this increases the performance in
174         all cases below 10,000,000 elements extensively:
175
176         100 elements:
177         old method:             00:00:00.0126610 (26x)
178         stackalloc bit method:  00:00:00.0004750 (1x)
179         array bit method:       00:00:00.0010700 (2x)
180         heap bit method:        00:00:00.0038830 (8x)
181
182         1,000 elements:
183         old method:             00:00:00.0139250 (24x)
184         stackalloc bit method:  00:00:00.0005670 (1x)
185         array bit method:       00:00:00.0010890 (2x)
186         heap bit method:        00:00:00.0034920 (6x)
187
188         10,000 elements:
189         old method:             00:00:00.0136110 (12x)
190         stackalloc bit method:  00:00:00.0011240 (1x)
191         array bit method:       00:00:00.0016450 (1.4x)
192         heap bit method:        00:00:00.0043110 (3x)
193
194         50,000 elements:
195         old method:             00:00:00.0175970 (3x)
196         stackalloc bit method:  00:00:00.0085630 (1.5x)
197         array bit method:       00:00:00.0055010 (1x)
198         heap bit method:        00:00:00.0099590 (1.8x)
199
200         100,000 elements:
201         old method:             00:00:00.0210330 (2x)
202         array bit method:       00:00:00.0100430 (1x)
203         heap bit method:        00:00:00.0154150 (1.5x)
204
205         1,000,000 elements:
206         old method:             00:00:00.1243730 (1.2x)
207         array bit method:       00:00:00.0973110 (1x)
208         heap bit method:        00:00:00.1285650 (1.3x)
209
210         10,000,000 elements:
211         old method:             00:00:00.9252570 (1x)
212         array bit method:       00:00:00.9632300 ( 1.05x)
213         heap bit method:        00:00:01.1098490 (1.20x)
214
215 2007-03-08  David Mitchell <dmitchell@logos.com>
216
217         * List.cs: Fix the case where List.set_Item(int index) throws
218         inappropriate exception when index is equal to List.Count
219
220         List.IndexOf(object item) and IList.Contains(object item) throw
221         exceptions when given invalid types.
222
223         IList.Add(object item) throws InvalidCastException when item is
224         not of the correct type.
225
226 2007-03-08  Gert Driesen  <drieseng@users.sourceforge.net>
227
228         * Comparer.cs: Renamed IComparableOfTComparer<T> to GenericComparer<T>
229         to fix binary serialization compatibility with MS.
230
231 2007-03-05  David Mitchell <dmitchell@logos.com>
232
233         * Dictionary.cs: An instance of Dictionary<TKey,TValue> is
234         supposed to throw a KeyNotFoundException when 
235         the user attempts to retrieve the value associated with a key that
236         is not in the dictionary.
237
238         On the other hand, an instance of IDictionary is supposed to
239         return null in similar circumstances.
240
241 2007-03-05  David Mitchell <dmitchell@logos.com>
242
243         * List.cs: Fix InsertRange bug (80930).
244
245 2006-09-15  Gert Driesen  <drieseng@users.sourceforge.net>
246
247         * List.cs: Fixed binary serialization compatibility with MS.NET.
248         Increment version whenever _items is modified; this fixes version
249         checks in Enumerator.
250
251 2006-09-06  Zoltan Varga  <vargaz@gmail.com>
252
253         * Dictionary.cs: Speed up get_Item/set_Item/GetPrev () a bit. Increase capacity
254         specified by the user so 'capacity' elements can really be added without resizing.
255
256 2006-07-12  Zoltan Varga  <vargaz@gmail.com>
257
258         * Dictionary.cs: Swap order of parameters to cmp.Equals () to improve 
259         compatibility with MS.NET and strange Equals () implementations.        
260
261 2006-05-17  Kazuki Oikawa  <kazuki@panicode.com>
262
263         * List.cs : implemented Sort(Comparison <T>).
264
265 2006-05-08  Atsushi Enomoto  <atsushi@ximian.com>
266
267         * List.cs : use proper comparer in Contains(), IndexOf() and
268           LastIndexOf(). Patch by Kazuki Oikawa. Fixed bug #77277.
269
270 2006-03-16  Ankit Jain  <jankit@novell.com>
271
272         * List.cs (CheckIndex): Check for -ve indices and allow index == size.
273         (Insert): Use CheckIndex.
274
275 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
276
277         * List.cs: Applied patch from <kazuki@panicode.com>. Fixes #77504.
278
279 2006-02-10  Martin Baulig  <martin@ximian.com>
280
281         * Comparer.cs
282         (IComparableOfTComparer): `T' must implement `IComparable<T>' and
283         not `IComparable'.
284
285 Tue Jan 24 18:22:54 CET 2006 Paolo Molaro <lupus@ximian.com>
286
287         * Dictionary.cs: avoid long reminder operations.
288
289 2006-01-23  Raja R Harinath  <rharinath@novell.com>
290
291         Speed up remove.  Use 'dict[k]=v' as a self-tuning hint.
292         * Dictionary.cs (GetSlot): Move data-structure traversal to ...
293         (GetPrev): ... this.  Returns the slot prior to the place we're
294         looking for, or null if that place is the head of the chain.
295         (Remove): Use it.
296         (this.set): Use it.  Implement move-to-front on set.
297
298         * Dictionary.cs (ToTKey, ToTValue): New helpers to convert from
299         type 'object'.
300         (IDictionary.this, IDictionary.Add): Use them.
301         (IDictionary.Contains, IDictionary.Remove): If the types don't
302         match, do nothing.
303
304 2006-01-19  Raja R Harinath  <rharinath@novell.com>
305
306         Fix to pass new nunit tests.
307         * Dictionary.cs (ShimEnumerator): New class.  Implement the
308         requirement that ((IDictionary) foo).GetEnumerator ().Current has
309         type DictionaryEntry.
310         (IDictionary.GetEnumerator): Use ShimEnumerator.
311         (Enumerator.Current): Now has type KeyValuePair<TKey, TValue>.
312         (Enumerator.MoveNext): Use VerifyState.
313         (Enumerator.VerifyState): Move validation of 'current' field to ...
314         (Enumerator.CurrentSlot): ... this.
315         (Enumerator.Current, Enumerator.IDictionaryEnumerator.Entry):
316         Use CurrentSlot.
317         (CopyTo, ICollection.CopyTo): Use subtle reasoning to replace a
318         '>=' with a '>'.  Don't throw an ArgumentException when
319         index==array.Length && Count==0.
320         (KeyCollection.CopyTo, ValueCollection.CopyTo): Likewise, and thus
321         obviate the need to check (dictionary.Count == 0).
322
323 2005-12-20  Sebastien Pouliot  <sebastien@ximian.com>
324
325         * List.cs: Applied Atsushi's patch for Sort (bug 76361) now that the
326         generic versions of Array.Sort are implemented.
327
328 2005-12-19  Sebastien Pouliot  <sebastien@ximian.com>
329
330         * Dictionary.cs: Added [Serializable] attribute to both inner 
331         Enumerator struct in Key and Value inner collection classes.
332         * EqualityComparer.cs: Added missing IEqualityComparer interface.
333         * List.cs: Added [Serializable] attribute to both inner Enumerator
334         struct.
335
336 2005-12-19  Sebastien Pouliot  <sebastien@ximian.com> 
337  
338         * Dictionary.cs: Fixed ICollection.CopyTo to use DictionaryEntry. Fixed
339         Key and Value CopyTo not to throw exception if the dictionary is empty
340         (fix bug #77019).
341         * List.cs: Fix exception reporting to match MS behaviour (2.0 final).
342
343 2005-11-19  Zoltan Varga  <vargaz@gmail.com>
344
345         * KeyNotFoundException.cs: Add default message.
346
347 2005-09-18  Miguel de Icaza  <miguel@novell.com>
348
349         * Dictionary.cs: Change style for internal fields.
350
351         If the capacity is zero, set the capacity to our default size as 0
352         is an allowed parameter in .NET
353
354 2005-08-10  Kamil Skalski  <nazgul@nemerle.org>
355
356         * KeyValuePair.cs, Dictionary.cs: Change Key and Value to properties to match
357         .NET 2.0 July CTP. Update its use in Dictionary, since now we
358         cannot write to them.
359         
360 2005-07-10  Kamil Skalski <nazgul@nemerle.org>
361
362         * Comparer.cs, EqualityComparer.cs: Use MakeGenericType instead of BindGenericParameters.
363
364
365 2005-06-27  Raja R Harinath  <rharinath@novell.com>
366
367         Introduce some thread-safety by removing the modify-on-read
368         move-to-front heuristic.
369         * Dictionary.cs (_enumeratorGeneration, _enumerators): Remove.
370         (Count): Add internal property set.  Invalidate enumerators when
371         Count is changed.  Change all references of _usedSlots to Count.
372         (this): Invalidate enumerators when the value of some slot is
373         changed, even if the layout of the data-structure isn't modified.
374         (DoHash): Remove null-key check.  All codepaths leading to this
375         function already have the check.
376         (GetSlot): Remove move-to-front heuristic.
377         (Remove): Update.
378
379 2005-06-24  Martin Baulig  <martin@ximian.com>
380
381         * IDictionary.cs: Use the same type parameter names than on MS.
382
383         * IDictionary.cs, Dictionary.cs: We don't need the `CLSCompliant'
384         attribute here.
385
386 2005-06-23  Martin Baulig  <martin@ximian.com>
387
388         * *.cs: Removed the `[ComVisible(false)]' attributes everywhere.
389
390 2005-06-22  Raja R Harinath  <rharinath@novell.com>
391
392         * Dictionary.cs (_generation, _enumeratorGeneration, _enumerators):
393         New fields to implement fail-fast semantics.  All code that
394         modifies the table increment _generation.
395         (GetSlot): Use _hcp to compare keys.  Return the slot containing
396         the key, rather than the index.  Avoid move-to-front heuristic
397         when there's an enumerator coursing through the table.
398         (this, Add, TryGetValue, ContainsKey, Remove): Update to change.
399         (Enumerator.Enumerator): Save the generation of the dictionary.
400         (Enumerator.Dispose): Inform dictionary that the enumerator is no more.
401         (Enumerator.MoveNext, Enumerator.VerifyState): Fail if the
402         dictionary has been modified.
403
404 2005-06-20  David waite  <mass@akuma.org>
405
406         * List.cs : substantial changes and optimizations
407         (AddCollection, AddEnumerable): new internal specializations of AddRange
408         (AsReadOnly): returns specific IList<T> to match ms.net 2.0b2 api.
409         (Clear): reset size to zero on clear
410         (ConvertAll): catch null converter, use Add to prevent OutOfBounds
411         exception
412         (FindAll, FindIndex, FindLast, FindLastIndex, RemoveAll, TrueForAll): 
413         check for null match
414         (FindLastIndex): correct index parameters based on ms.net 2005b2 behavior
415         (ForEach): catch null action
416         (CheckIndex): new internal function similar to CheckRange for functions
417         which only provide a starting index
418         (InsertCollection, InsertEnumerable): new internal specializations of
419         InsertRange
420         (ReadOnlyList): removed, ReadOnlyCollection in 
421         System.Collections.ObjectModel is used instead now 
422     
423 2005-06-16  David Waite  <mass@akuma.org>
424
425         * Dictionary.cs (EnumerationMode): Remove.
426         (Enumerator): Remove return type flag - legacy return is expected to
427         always return a DictionaryEntry
428         (Enumerator): Make constructor internal, it is not public on ms.net 
429         beta 2
430         (VerifyState): Added method to check state preconditions and throw
431         appropriate exceptions.
432         (KeyCollection,ValueCollection): Mark sealed to match ms.net beta 2
433         (KeyCollection.Enumerator._hostEnumerator): make exact struct type,
434         rather than boxing and using by interface
435         (KeyCollection.Enumerator.Dispose): Call _hostEnumerator.Dispose.
436         (ValueCollection.Enumerator._hostEnumerator): make exact struct type,
437         rather than boxing and using by interface
438         (ValueCollection.Enumerator.Dispose): Call _hostEnumerator.Dispose.
439         * EqualityComparer.cs (DefaultComparer, IEquatableOfTEqualityComparer):
440         Mark as serializable.
441
442 2005-06-16  Raja R Harinath  <rharinath@novell.com>
443
444         * Dictionary.cs (GetKeys, GetValues): Remove.
445         (SetThreshold): New function to calculate the resize threshold.
446         (CopyTo): Don't use foreach syntax.
447         (ContainsValue): Likewise.  Use default equality comparer of the
448         value type.
449         (GetObjectData): Use CopyTo to copy into temporary array.  Don't
450         save redundant _usedSlots and _threshold.
451         (OnDeserialization): Rewrite.
452         (ICollection<>.CopyTo): Forward to CopyTo.
453         (Enumerator._nextIndex): Rename to from _index.
454         (Enumerator._next, Enumerator.FixNext): Remove.
455         (Enumerator.Current): Rewrite to avoid need for _next.
456         (Enumerator.IEnumerator.Reset): Update.
457         (KeyCollection): Is also IEnumerable<TKey> and IEnumerable.
458         Update methods to conform to standard.
459         (KeyCollection.GetEnumerator): Restore.  Return the correct type.
460         (KeyCollection.Enumerator): Rename from KeyEnumerator.  Simple
461         wrapper that forwards to Dictionary<,>.Enumerator.
462         (ValueCollection): Likewise.
463
464 2005-06-12  David Waite  <dwaite@gmail.com>
465
466         * IKeyComparer.cs: removed
467         * KeyValuePair.cs: add same-style ToString as ms.net Beta2 impl,
468         make Serializable, use correct field names.
469         * Dictionary.cs: Miscelaneus clean-ups, added serialization
470         support, use Hashtable prime functions
471
472 2005-06-12  Ben Maurer  <bmaurer@ximian.com>
473
474         * Comparer.cs, EqualityComparer.cs: Important performance hack:
475         make sure that we don't box stuff and do reflection on every
476         comparison. We use reflection at cctor time rather than on every
477         request.
478
479 2005-06-09  Raja R Harinath  <rharinath@novell.com>
480
481         Simplify Enumerator.MoveNext to make it "obviously correct", rather
482         than require subtle reasoning about the state of various variables.
483         * Dictionary.cs (Enumerator._isValid): Remove.  Replace all uses
484         with "_current == null".
485         (Enumerator._validNodeVisited): Remove.
486         (Enumerator._next): New.  Holds the the next position.
487         (Enumerator.FixNest): New helper function that ensures that _next
488         has the right value.
489         (Enumerator.MoveNext): Simplify.  Now, copies _next to _current
490         and advances _next if possible.
491
492 2005-06-08  Martin Baulig  <martin@ximian.com>
493
494         * Dictionary.cs (Dictionary.KeyEnumerator): Removed the public
495         GetEnumerator() function since it's returning the wrong type.
496         (Dictionary.ValueEnumerator): Likewise.  Fix #75073.
497
498 2005-06-08  Ankit Jain <ankit@corewars.org>
499
500         * Dictionary.cs (Dictionary<TKey, TValue>.MoveNext): Allow traversal of chain in last slot
501         of the table. Fixes #75168.
502
503 2005-06-04  Ben Maurer  <bmaurer@ximian.com>
504
505         * *.cs: 2.0 api fixups
506
507 2005-05-26  Miguel de Icaza  <miguel@novell.com>
508
509         * Dictionary.cs: Remove the `Hash' name from the Dictionary
510         internal classes, make them public.
511
512 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
513
514         * Dictionary.cs: Fix a warning.
515
516         * IDictionary.cs: Add missing TryGetValue method.
517
518 2005-05-19  Geoff Norton  <gnorton@customerdna.com>
519
520         * List.cs (Insert): Resize the array before the shift if needed
521
522 2005-05-18  Miguel de Icaza  <miguel@novell.com>
523
524         * List.cs (GetRange): Implement.
525
526         Do not do lazy loading of data.  Not worth adding an
527         extra check, and not worth the bugs. 
528
529         This decision wont be discussed until: a) a full List regression
530         test suite exists and  b) performance benchmarks are created.  (b)
531         depends on (a) or the argument wont even be heard. 
532
533 2005-05-13  Atsushi Enomoto  <atsushi@ximian.com>
534
535         * Queue.cs, Stack.cs: moved to System.dll
536
537 2005-05-06  Martin Baulig  <martin@ximian.com>
538
539         * *.cs: Add CLSCompliant(true) where missing.
540
541 2005-05-06  Zoltan Varga  <vargaz@freemail.hu>
542
543         * *.cs: Remove CLSCompliant(false) attributes.
544
545 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
546
547         * List.cs: Applied patch from Mart Roosmaa (roosmaa@gmail.com). 
548         Fix Insert method. Fixes #74824.
549
550 2005-04-29  Martin Baulig  <martin@ximian.com>
551
552         Reflect latest spec changes.
553
554         * IEnumerable.cs (IEnumerable<T>): Implement IEnumerable.
555         * IEnumerator.cs (IEnumerator<T>): Implement IEnumerator.
556
557 2005-04-29  Raja R Harinath  <rharinath@novell.com>
558
559         Remove FIXME.
560         * Dictionary.cs (Slot<K,V>): Move to ...
561         (Dictionary<K,V>.Slot): ... here.
562
563 2005-04-28  Martin Baulig  <martin@ximian.com>
564
565         * Dictionary.cs, Queue.cs, Stack.cs, List.cs, Comparer.cs: Don't
566         duplicate type parameters in the nested classes.
567
568 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
569
570         * List.cs: Fix ToArray () method. Fixes #74675.
571
572 2005-04-04  Raja R Harinath  <rharinath@novell.com>
573
574         * Dictionary.cs: Update to draft of Feb 27.  Add some argument checks.
575         (GetSlot): Don't throw KeyNotFoundException.  Unify all list
576         traversals in here.  Move found key to head of chain, and return
577         the index of the chain suitable for/containing the key.
578         (Item, Add, Remove): Simplify, and remove FIXMEs.
579         (Resize): Reuse linked list nodes from old table.
580         (Dictionary.CopyTo, HashKeyCollection.CopyTo, HashValueCollection.CopyTo):
581         Add some argument checks.
582
583 2005-04-02  Ben Maurer  <bmaurer@ximian.com>
584
585         * Dictionary.cs: Real impl.
586
587 2005-02-21  Martin Baulig  <martin@ximian.com>
588
589         * IComparer.cs: Reverted the last change here, Equals() and
590         GetHashCode() have been removed a long time ago.
591
592 2005-02-21  Kazuki Oikawa  <kazuki@panicode.com>
593
594         * IComparer.cs, IDictionary.cs: Corrected the wrong declaration.
595
596 2005-02-11  Carlos Alberto Cortez <calberto.cortez@gmail.com>
597
598         * List.cs: Added internal ReadOnlyCollection class,
599         which is a wrapper for a read only IList<T> version of the List<T>.
600         Used in AsReadOnly () method.
601         
602 2005-02-07  Ben Maurer  <bmaurer@ximian.com>
603
604         * List.cs (CheckRange): Comparison error. Duh!
605         (Shift): really deal with neg. delta. Also, adjust the `size'.
606
607         Based on a patch from Marc Denty (marc.denty@libertysurf.fr).
608
609         Fixes #72258.
610
611 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
612
613         * Queue.cs: `duh' bugs.
614
615 2004-12-27  Ben Maurer  <bmaurer@ximian.com>
616
617         * Stack.cs: Stupid bug fixes.
618
619         * List.cs: My new (mostly untested ;-) impl of List
620         <T>. Implements most of the API.
621
622 2004-12-26  Ben Maurer  <bmaurer@ximian.com>
623
624         * Queue.cs: New, non-linked-list based impl.
625
626 2004-11-29  Ben Maurer  <bmaurer@ximian.com>
627
628         * Comparer.cs: Update this class.
629
630 2004-11-25  Carlos Alberto Cortez <calberto.cortez@gmail.com>
631
632         * List.cs: Enumerator changed to behave like the MS impl.
633         
634 2004-11-25  Ben Maurer  <bmaurer@ximian.com>
635
636         * Stack.cs: New, list based impl. Waiting for some gmcs fixes.
637
638 2004-11-10  Martin Baulig  <martin@ximian.com>
639
640         * IDictionary.cs (IDictionary): `IsReadOnly' and `Clear' are
641         inherited from ICollection.
642
643 2004-09-20  Gert Driesen <drieseng@users.sourceforge.net>
644
645         * ReadOnlyCollection.cs: Moved to System assembly
646         * Collection.cs: Moved to System assembly
647
648 2004-09-07  Carlos Alberto Cortez <carlos@unixmexico.org>
649
650         * ReadOnlyCollection.cs: New file and changes to 
651         Collection.cs tu support it.
652
653 2004-09-05  Marek Safar <marek.safar@seznam.cz>
654
655         * Dictionary.cs: Added new file (no implementation).
656
657 2004-09-03  Carlos Alberto Cortez <carlos@unixmexico.org>
658
659         * Collection.cs: Small improvements related to
660         style, resizing, and type checking.
661
662 2004-09-01  Carlos Alberto Cortez <carlos@unixmexico.org>
663
664         * Collection.cs: New file.
665
666 2004-08-04  Martin Baulig  <martin@ximian.com>
667
668         * List.cs (List<T>.Enumerator): Made this a struct.
669         (List<T>.GetEnumerator): The public method now returns the
670         `Enumerator' struct.
671
672 2004-08-02  Martin Baulig  <martin@ximian.com>
673
674         Started to do some API review.
675
676         * ICollection.cs (ICollection<T>): Added IsReadOnly, Add, Clear,
677         Contains and Remove.
678
679         * IList.cs (IList<T>): Removed Add, Clear, Constains, Remove,
680         IsReadOnly and IsFixedSize.
681
682 2004-08-02  Martin Baulig  <martin@ximian.com>
683
684         * IList.cs (IList.Add): Changed return type to void.
685
686         * List.cs (List.Add): Likewise.
687
688 2004-07-16  Martin Baulig  <martin@ximian.com>
689
690         * IComparable.cs: Removed, it's in System.
691
692 2004-07-12  Duncan Mak  <duncan@ximian.com>
693
694         * KeyNotFoundException.cs: Added.
695
696 2004-06-18  Ben Maurer  <bmaurer@ximian.com>
697
698         * Comparer.cs: v2 impl. Some workarounds for gmcs are enabled.
699
700 2004-05-26  Sebastien Pouliot  <sebastien@ximian.com>
701
702         * Queue.cs: Fixed possible integer overflow in CopyTo methods.
703         * Stack.cs: Fixed possible integer overflow in CopyTo methods.
704
705 2004-03-13  Martin Baulig  <martin@ximian.com>
706
707         * Stack.cs, Queue.cs, List.cs: Implement the non-generic interfaces.
708
709 2004-03-11  Martin Baulig  <martin@ximian.com>
710
711         * List.cs: New file.
712
713 2004-03-11  Martin Baulig  <martin@ximian.com>
714
715         * Stack.cs, Queue.cs: Just use `Node' for the nested class, not
716         `Node<T>' (which would create another type parameter `T'
717         overriding `T' from the outer class).   
718
719 2004-02-23  Martin Baulig  <martin@ximian.com>
720
721         * Stack.cs, Queue.cs: New files.  Hmm, looks like I forgot to add
722         them to CVS; they're already on my hard disk since December or so.
723
724 2003-12-08  Martin Baulig  <martin@ximian.com>
725
726         * *.cs: require GENERICS.
727
728 2003-11-08 Ben Maurer  <bmaurer@users.sourceforge.net>
729
730         * *.cs: require NET_2_0 and GENERICS
731
732 2003-11-07 Ben Maurer  <bmaurer@users.sourceforge.net>
733
734         * IComparable.cs, IComparer.cs, IDictionary.cs, IKeyComparer.cs, KeyValuePair.cs
735         Added.
736
737 2003-11-06  Martin Baulig  <martin@ximian.com>
738
739         * ICollection.cs, IList.cs, IEnumerator.cs, IEnumerable.cs:
740         Started to implement the System.Collections.Generic classes.
741