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