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