1 2010-01-20 Miguel de Icaza <miguel@novell.com>
3 * Dictionary.cs: Always create the keys, fixes compatibility
4 between Mono and .NET. Patch from John Lenz <jlenz2@math.uiuc.edu>
6 2009-12-06 Chris Toshok <toshok@ximian.com>
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.
12 2009-11-26 Marek Safar <marek.safar@gmail.com>
14 * CollectionDebuggerView.cs: Removed limit restriction.
16 2009-11-23 Carlos Alberto Cortez <calberto.cortez@gmail.com>
18 * Comparer.cs: Our DefaultComparer class should be serializable just
19 as the generic one is.
22 2009-11-23 Juraj Skripsky <js@hotfeet.ch>
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.
29 2009-11-08 Juraj Skripsky <js@hotfeet.ch>
31 * List.cs (Sort): Sync to latest changes in Array.Sort.
33 2009-10-20 Marek Safar <marek.safar@gmail.com>
35 * List.cs, CollectionDebuggerView.cs, KeyValuePair.cs, Dictionary.cs
36 Improve debugging experience.
38 2009-10-19 Marek Safar <marek.safar@gmail.com>
40 * CollectionDebuggerView.cs: New file.
42 2009-10-17 Sebastien Pouliot <sebastien@ximian.com>
44 * EqualityComparer.cs: Seal internal classes
46 2009-10-02 Raja R Harinath <harinath@hurrynot.org>
48 * Dictionary.cs (Do_ICollectionCopyTo): Revert 2009-10-01 change.
49 Use BOOTSTRAP_BASIC to hide code from gmcs 2.4.x.
51 2009-10-01 Marek Habersack <mhabersack@novell.com>
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
57 2009-09-22 Raja R Harinath <harinath@hurrynot.org>
59 Ensure that invalid arrays to CopyTo result in ArgumentExceptions.
60 * Dictionary.cs (CopyToCheck, Do_CopyTo): Carve out of ...
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.
67 2009-07-31 Raja R Harinath <harinath@hurrynot.org>
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.
74 2009-07-31 Raja R Harinath <harinath@hurrynot.org>
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.
80 2009-07-31 Raja R Harinath <harinath@hurrynot.org>
82 * Dictionary.cs (Enumerator.next): Rename from Enumerator.cur and
83 change meaning to be the index of the slot to start searching on
85 (Enumerator.MoveNext): Avoid an out-of-bounds access.
87 2009-07-30 Raja R Harinath <harinath@hurrynot.org>
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.
94 2009-07-29 Raja R Harinath <harinath@hurrynot.org>
96 * Dictionary.cs (Enumerator.current): New.
97 (Enumerator.MoveNext): Update it.
98 (Enumerator.Current): Don't verify any invariants.
100 2009-06-10 Marek Safar <marek.safar@gmail.com>
102 * IEqualityComparer.cs, IComparer.cs, IEnumerable.cs,
103 IEnumerator.cs: Add type variance.
105 2009-04-02 Jb Evain <jbevain@novell.com>
107 * Dictionary.cs (ValueCollection.CopyTo): fix for copying to
108 an object array. Based on a patch by Tobias Grimm <mono@e-tobi.net>.
111 2009-02-04 Zoltan Varga <vargaz@gmail.com>
113 * Dictionary.cs: Declare the Link struct outside the main class to avoid
114 creating a separate inflated instances for each instantiation of Dictionary.
116 2008-11-14 Jb Evain <jbevain@novell.com>
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.
123 2008-11-14 Jb Evain <jbevain@novell.com>
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.
129 2008-10-06 Zoltan Varga <vargaz@gmail.com>
131 * Dictionary.cs (Clear): Clear the linkSlots array as well, as
132 Enumerator.MoveNext () depends on it. Fixes #432441.
134 Fri Oct 3 23:08:06 CEST 2008 Paolo Molaro <lupus@ximian.com>
136 * Dictionary.cs: by popular demand, return keys/values in insertion
139 2008-09-29 Jb Evain <jbevain@novell.com>
141 * Dictionary.cs: check for null argument in ContainsKey.
142 Patch by Jonathan Anderson <jonathan.l.anderson@gmail.com>
144 2008-09-24 Jb Evain <jbevain@novell.com>
146 * Dictionary.cs: properly reset all compounds enumerators.
149 2008-09-12 Jb Evain <jbevain@novell.com>
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.
155 2008-06-16 Andreas Nahr <ClassDevelopment@A-SoftTech.com>
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
160 2008-05-29 Juraj Skripsky <js@hotfeet.ch>
162 * List.cs (RemoveAll, Shift): Fix leak by clearing empty array
165 2008-04-29 Juraj Skripsky <js@hotfeet.ch>
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.
171 2008-04-02 Andreas Nahr <ClassDevelopment@A-SoftTech.com>
173 * KeyNotFoundException.cs
174 * KeyValuePair.cs: Fix parameter names
176 2008-03-21 Sebastien Pouliot <sebastien@ximian.com>
178 * EqualityComparer.cs: Add null checks in GetHashCode. Fix bug
181 2007-11-05 Sebastien Pouliot <sebastien@ximian.com>
183 * Dictionary.cs: Ensure that the non-generic CopyTo works on Array.
186 2007-10-31 Miguel de Icaza <miguel@novell.com>
188 * Dictionary.cs: Do not increment curTableItem when we return
189 false. Was not necessary, just a defensive move.
191 2007-10-10 Juraj Skripsky <js@hotfeet.ch>
193 * Dictionary.cs (Enumerator.MoveNext): Handle the case where we
194 had already reached the end. Fixes bug #332534.
196 2007-08-20 Jb Evain <jbevain@novell.com>
198 * List.cs (AddCollection): return early if the collection
199 to be added is empty.
201 2007-08-08 Atsushi Enomoto <atsushi@ximian.com>
203 * Dictionary.cs : [Comvisible(true)]->[ComVisible(false)].
205 2007-06-23 Marek Safar <marek.safar@gmail.com>
207 * List.cs: Make CheckMatch static.
209 2007-06-20 Juraj Skripsky <js@hotfeet.ch>
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.
216 * EqualityComparer.cs: Rename IEquatableOfTEqualityComparer<T> to
217 GenericEqualityComparer<T> to fix binary serialization compatibility
220 2006-04-16 Jonathan Chambers <joncham@gmail.com>
222 * List.cs: Clear entry in RemoveAt after removing item.
225 2007-03-27 Alan McGovern <alan.mcgovern@gmail.com>
227 * List.cs: Optimized several methods to increase performance
229 2007-03-21 Juraj Skripsky <js@hotfeet.ch>
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.
236 2007-03-20 Juan Cristóbal Olivares <juancri@gmail.com>
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:
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)
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)
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)
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)
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)
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)
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)
281 2007-03-08 David Mitchell <dmitchell@logos.com>
283 * List.cs: Fix the case where List.set_Item(int index) throws
284 inappropriate exception when index is equal to List.Count
286 List.IndexOf(object item) and IList.Contains(object item) throw
287 exceptions when given invalid types.
289 IList.Add(object item) throws InvalidCastException when item is
290 not of the correct type.
292 2007-03-08 Gert Driesen <drieseng@users.sourceforge.net>
294 * Comparer.cs: Renamed IComparableOfTComparer<T> to GenericComparer<T>
295 to fix binary serialization compatibility with MS.
297 2007-03-05 David Mitchell <dmitchell@logos.com>
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.
304 On the other hand, an instance of IDictionary is supposed to
305 return null in similar circumstances.
307 2007-03-05 David Mitchell <dmitchell@logos.com>
309 * List.cs: Fix InsertRange bug (80930).
311 2006-09-15 Gert Driesen <drieseng@users.sourceforge.net>
313 * List.cs: Fixed binary serialization compatibility with MS.NET.
314 Increment version whenever _items is modified; this fixes version
315 checks in Enumerator.
317 2006-09-06 Zoltan Varga <vargaz@gmail.com>
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.
322 2006-07-12 Zoltan Varga <vargaz@gmail.com>
324 * Dictionary.cs: Swap order of parameters to cmp.Equals () to improve
325 compatibility with MS.NET and strange Equals () implementations.
327 2006-05-17 Kazuki Oikawa <kazuki@panicode.com>
329 * List.cs : implemented Sort(Comparison <T>).
331 2006-05-08 Atsushi Enomoto <atsushi@ximian.com>
333 * List.cs : use proper comparer in Contains(), IndexOf() and
334 LastIndexOf(). Patch by Kazuki Oikawa. Fixed bug #77277.
336 2006-03-16 Ankit Jain <jankit@novell.com>
338 * List.cs (CheckIndex): Check for -ve indices and allow index == size.
339 (Insert): Use CheckIndex.
341 2006-03-12 Zoltan Varga <vargaz@gmail.com>
343 * List.cs: Applied patch from <kazuki@panicode.com>. Fixes #77504.
345 2006-02-10 Martin Baulig <martin@ximian.com>
348 (IComparableOfTComparer): `T' must implement `IComparable<T>' and
351 Tue Jan 24 18:22:54 CET 2006 Paolo Molaro <lupus@ximian.com>
353 * Dictionary.cs: avoid long reminder operations.
355 2006-01-23 Raja R Harinath <rharinath@novell.com>
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.
362 (this.set): Use it. Implement move-to-front on set.
364 * Dictionary.cs (ToTKey, ToTValue): New helpers to convert from
366 (IDictionary.this, IDictionary.Add): Use them.
367 (IDictionary.Contains, IDictionary.Remove): If the types don't
370 2006-01-19 Raja R Harinath <rharinath@novell.com>
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):
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).
389 2005-12-20 Sebastien Pouliot <sebastien@ximian.com>
391 * List.cs: Applied Atsushi's patch for Sort (bug 76361) now that the
392 generic versions of Array.Sort are implemented.
394 2005-12-19 Sebastien Pouliot <sebastien@ximian.com>
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
402 2005-12-19 Sebastien Pouliot <sebastien@ximian.com>
404 * Dictionary.cs: Fixed ICollection.CopyTo to use DictionaryEntry. Fixed
405 Key and Value CopyTo not to throw exception if the dictionary is empty
407 * List.cs: Fix exception reporting to match MS behaviour (2.0 final).
409 2005-11-19 Zoltan Varga <vargaz@gmail.com>
411 * KeyNotFoundException.cs: Add default message.
413 2005-09-18 Miguel de Icaza <miguel@novell.com>
415 * Dictionary.cs: Change style for internal fields.
417 If the capacity is zero, set the capacity to our default size as 0
418 is an allowed parameter in .NET
420 2005-08-10 Kamil Skalski <nazgul@nemerle.org>
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.
426 2005-07-10 Kamil Skalski <nazgul@nemerle.org>
428 * Comparer.cs, EqualityComparer.cs: Use MakeGenericType instead of BindGenericParameters.
431 2005-06-27 Raja R Harinath <rharinath@novell.com>
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.
445 2005-06-24 Martin Baulig <martin@ximian.com>
447 * IDictionary.cs: Use the same type parameter names than on MS.
449 * IDictionary.cs, Dictionary.cs: We don't need the `CLSCompliant'
452 2005-06-23 Martin Baulig <martin@ximian.com>
454 * *.cs: Removed the `[ComVisible(false)]' attributes everywhere.
456 2005-06-22 Raja R Harinath <rharinath@novell.com>
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.
470 2005-06-20 David waite <mass@akuma.org>
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
478 (FindAll, FindIndex, FindLast, FindLastIndex, RemoveAll, TrueForAll):
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
486 (ReadOnlyList): removed, ReadOnlyCollection in
487 System.Collections.ObjectModel is used instead now
489 2005-06-16 David Waite <mass@akuma.org>
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
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.
508 2005-06-16 Raja R Harinath <rharinath@novell.com>
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
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.
530 2005-06-12 David Waite <dwaite@gmail.com>
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
538 2005-06-12 Ben Maurer <bmaurer@ximian.com>
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
545 2005-06-09 Raja R Harinath <rharinath@novell.com>
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
555 (Enumerator.MoveNext): Simplify. Now, copies _next to _current
556 and advances _next if possible.
558 2005-06-08 Martin Baulig <martin@ximian.com>
560 * Dictionary.cs (Dictionary.KeyEnumerator): Removed the public
561 GetEnumerator() function since it's returning the wrong type.
562 (Dictionary.ValueEnumerator): Likewise. Fix #75073.
564 2005-06-08 Ankit Jain <ankit@corewars.org>
566 * Dictionary.cs (Dictionary<TKey, TValue>.MoveNext): Allow traversal of chain in last slot
567 of the table. Fixes #75168.
569 2005-06-04 Ben Maurer <bmaurer@ximian.com>
571 * *.cs: 2.0 api fixups
573 2005-05-26 Miguel de Icaza <miguel@novell.com>
575 * Dictionary.cs: Remove the `Hash' name from the Dictionary
576 internal classes, make them public.
578 2005-05-26 Zoltan Varga <vargaz@freemail.hu>
580 * Dictionary.cs: Fix a warning.
582 * IDictionary.cs: Add missing TryGetValue method.
584 2005-05-19 Geoff Norton <gnorton@customerdna.com>
586 * List.cs (Insert): Resize the array before the shift if needed
588 2005-05-18 Miguel de Icaza <miguel@novell.com>
590 * List.cs (GetRange): Implement.
592 Do not do lazy loading of data. Not worth adding an
593 extra check, and not worth the bugs.
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.
599 2005-05-13 Atsushi Enomoto <atsushi@ximian.com>
601 * Queue.cs, Stack.cs: moved to System.dll
603 2005-05-06 Martin Baulig <martin@ximian.com>
605 * *.cs: Add CLSCompliant(true) where missing.
607 2005-05-06 Zoltan Varga <vargaz@freemail.hu>
609 * *.cs: Remove CLSCompliant(false) attributes.
611 2005-05-05 Zoltan Varga <vargaz@freemail.hu>
613 * List.cs: Applied patch from Mart Roosmaa (roosmaa@gmail.com).
614 Fix Insert method. Fixes #74824.
616 2005-04-29 Martin Baulig <martin@ximian.com>
618 Reflect latest spec changes.
620 * IEnumerable.cs (IEnumerable<T>): Implement IEnumerable.
621 * IEnumerator.cs (IEnumerator<T>): Implement IEnumerator.
623 2005-04-29 Raja R Harinath <rharinath@novell.com>
626 * Dictionary.cs (Slot<K,V>): Move to ...
627 (Dictionary<K,V>.Slot): ... here.
629 2005-04-28 Martin Baulig <martin@ximian.com>
631 * Dictionary.cs, Queue.cs, Stack.cs, List.cs, Comparer.cs: Don't
632 duplicate type parameters in the nested classes.
634 2005-04-20 Zoltan Varga <vargaz@freemail.hu>
636 * List.cs: Fix ToArray () method. Fixes #74675.
638 2005-04-04 Raja R Harinath <rharinath@novell.com>
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.
649 2005-04-02 Ben Maurer <bmaurer@ximian.com>
651 * Dictionary.cs: Real impl.
653 2005-02-21 Martin Baulig <martin@ximian.com>
655 * IComparer.cs: Reverted the last change here, Equals() and
656 GetHashCode() have been removed a long time ago.
658 2005-02-21 Kazuki Oikawa <kazuki@panicode.com>
660 * IComparer.cs, IDictionary.cs: Corrected the wrong declaration.
662 2005-02-11 Carlos Alberto Cortez <calberto.cortez@gmail.com>
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.
668 2005-02-07 Ben Maurer <bmaurer@ximian.com>
670 * List.cs (CheckRange): Comparison error. Duh!
671 (Shift): really deal with neg. delta. Also, adjust the `size'.
673 Based on a patch from Marc Denty (marc.denty@libertysurf.fr).
677 2005-01-29 Ben Maurer <bmaurer@ximian.com>
679 * Queue.cs: `duh' bugs.
681 2004-12-27 Ben Maurer <bmaurer@ximian.com>
683 * Stack.cs: Stupid bug fixes.
685 * List.cs: My new (mostly untested ;-) impl of List
686 <T>. Implements most of the API.
688 2004-12-26 Ben Maurer <bmaurer@ximian.com>
690 * Queue.cs: New, non-linked-list based impl.
692 2004-11-29 Ben Maurer <bmaurer@ximian.com>
694 * Comparer.cs: Update this class.
696 2004-11-25 Carlos Alberto Cortez <calberto.cortez@gmail.com>
698 * List.cs: Enumerator changed to behave like the MS impl.
700 2004-11-25 Ben Maurer <bmaurer@ximian.com>
702 * Stack.cs: New, list based impl. Waiting for some gmcs fixes.
704 2004-11-10 Martin Baulig <martin@ximian.com>
706 * IDictionary.cs (IDictionary): `IsReadOnly' and `Clear' are
707 inherited from ICollection.
709 2004-09-20 Gert Driesen <drieseng@users.sourceforge.net>
711 * ReadOnlyCollection.cs: Moved to System assembly
712 * Collection.cs: Moved to System assembly
714 2004-09-07 Carlos Alberto Cortez <carlos@unixmexico.org>
716 * ReadOnlyCollection.cs: New file and changes to
717 Collection.cs tu support it.
719 2004-09-05 Marek Safar <marek.safar@seznam.cz>
721 * Dictionary.cs: Added new file (no implementation).
723 2004-09-03 Carlos Alberto Cortez <carlos@unixmexico.org>
725 * Collection.cs: Small improvements related to
726 style, resizing, and type checking.
728 2004-09-01 Carlos Alberto Cortez <carlos@unixmexico.org>
730 * Collection.cs: New file.
732 2004-08-04 Martin Baulig <martin@ximian.com>
734 * List.cs (List<T>.Enumerator): Made this a struct.
735 (List<T>.GetEnumerator): The public method now returns the
738 2004-08-02 Martin Baulig <martin@ximian.com>
740 Started to do some API review.
742 * ICollection.cs (ICollection<T>): Added IsReadOnly, Add, Clear,
745 * IList.cs (IList<T>): Removed Add, Clear, Constains, Remove,
746 IsReadOnly and IsFixedSize.
748 2004-08-02 Martin Baulig <martin@ximian.com>
750 * IList.cs (IList.Add): Changed return type to void.
752 * List.cs (List.Add): Likewise.
754 2004-07-16 Martin Baulig <martin@ximian.com>
756 * IComparable.cs: Removed, it's in System.
758 2004-07-12 Duncan Mak <duncan@ximian.com>
760 * KeyNotFoundException.cs: Added.
762 2004-06-18 Ben Maurer <bmaurer@ximian.com>
764 * Comparer.cs: v2 impl. Some workarounds for gmcs are enabled.
766 2004-05-26 Sebastien Pouliot <sebastien@ximian.com>
768 * Queue.cs: Fixed possible integer overflow in CopyTo methods.
769 * Stack.cs: Fixed possible integer overflow in CopyTo methods.
771 2004-03-13 Martin Baulig <martin@ximian.com>
773 * Stack.cs, Queue.cs, List.cs: Implement the non-generic interfaces.
775 2004-03-11 Martin Baulig <martin@ximian.com>
779 2004-03-11 Martin Baulig <martin@ximian.com>
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).
785 2004-02-23 Martin Baulig <martin@ximian.com>
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.
790 2003-12-08 Martin Baulig <martin@ximian.com>
792 * *.cs: require GENERICS.
794 2003-11-08 Ben Maurer <bmaurer@users.sourceforge.net>
796 * *.cs: require NET_2_0 and GENERICS
798 2003-11-07 Ben Maurer <bmaurer@users.sourceforge.net>
800 * IComparable.cs, IComparer.cs, IDictionary.cs, IKeyComparer.cs, KeyValuePair.cs
803 2003-11-06 Martin Baulig <martin@ximian.com>
805 * ICollection.cs, IList.cs, IEnumerator.cs, IEnumerable.cs:
806 Started to implement the System.Collections.Generic classes.