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