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