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