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