1 2009-10-01 Marek Habersack <mhabersack@novell.com>
3 * Dictionary.cs: cast target array to TRet[] instead of object[] -
4 may fail, but otherwise it doesn't compile with 2.4 (e.g. when
7 2009-09-22 Raja R Harinath <harinath@hurrynot.org>
9 Ensure that invalid arrays to CopyTo result in ArgumentExceptions.
10 * Dictionary.cs (CopyToCheck, Do_CopyTo): Carve out of ...
12 (Do_ICollectionCopyTo): Carve out of ICollection.CopyTo. Convert
13 type-cast exceptions to ArgumentExceptions.
14 (KeyCollection.CopyTo): Use them.
15 (ValueCollection.CopyTo): Use them.
17 2009-07-31 Raja R Harinath <harinath@hurrynot.org>
19 * List.cs (IList.this.set): Convert NullReference and InvalidCast
20 exceptions into ArgumentExceptions.
21 (IList.Add, IList.Contains, IList.IndexOf, IList.Insert, IList.Remove):
22 Convert NullReferenceException to ArgumentException.
24 2009-07-31 Raja R Harinath <harinath@hurrynot.org>
26 * List.cs (Enumerator.next): Rename from Enumerator.idx and change
27 meaning to be the index of the next item to be enumerated.
28 (Enumerator.MoveNext): Simplify.
30 2009-07-31 Raja R Harinath <harinath@hurrynot.org>
32 * Dictionary.cs (Enumerator.next): Rename from Enumerator.cur and
33 change meaning to be the index of the slot to start searching on
35 (Enumerator.MoveNext): Avoid an out-of-bounds access.
37 2009-07-30 Raja R Harinath <harinath@hurrynot.org>
39 * List.cs (Enumerator.current): New.
40 (Enumerator.MoveNext): Update it.
41 (Enumerator.Current): Don't verify any invariants.
42 (Enumerator.Dispose): Set 'l' to null.
44 2009-07-29 Raja R Harinath <harinath@hurrynot.org>
46 * Dictionary.cs (Enumerator.current): New.
47 (Enumerator.MoveNext): Update it.
48 (Enumerator.Current): Don't verify any invariants.
50 2009-06-10 Marek Safar <marek.safar@gmail.com>
52 * IEqualityComparer.cs, IComparer.cs, IEnumerable.cs,
53 IEnumerator.cs: Add type variance.
55 2009-04-02 Jb Evain <jbevain@novell.com>
57 * Dictionary.cs (ValueCollection.CopyTo): fix for copying to
58 an object array. Based on a patch by Tobias Grimm <mono@e-tobi.net>.
61 2009-02-04 Zoltan Varga <vargaz@gmail.com>
63 * Dictionary.cs: Declare the Link struct outside the main class to avoid
64 creating a separate inflated instances for each instantiation of Dictionary.
66 2008-11-14 Jb Evain <jbevain@novell.com>
68 * Dictionary.cs (ICollection.CopyTo): fix the different possible
69 copying cases depending on the actual type of destination array,
70 be it an array of KeyValuePair, DictionaryEntry, or object.
73 2008-11-14 Jb Evain <jbevain@novell.com>
75 * Dictionary.cs: fix ICollection<KeyValuePair<T>>.Remove and .Contains
76 to not only check if the key exists but if the associated value is the
77 good one as well. Fixes #444768.
79 2008-10-06 Zoltan Varga <vargaz@gmail.com>
81 * Dictionary.cs (Clear): Clear the linkSlots array as well, as
82 Enumerator.MoveNext () depends on it. Fixes #432441.
84 Fri Oct 3 23:08:06 CEST 2008 Paolo Molaro <lupus@ximian.com>
86 * Dictionary.cs: by popular demand, return keys/values in insertion
89 2008-09-29 Jb Evain <jbevain@novell.com>
91 * Dictionary.cs: check for null argument in ContainsKey.
92 Patch by Jonathan Anderson <jonathan.l.anderson@gmail.com>
94 2008-09-24 Jb Evain <jbevain@novell.com>
96 * Dictionary.cs: properly reset all compounds enumerators.
99 2008-09-12 Jb Evain <jbevain@novell.com>
101 * Dictionary.cs: (ToTValue) allow null values to be added for non
102 value types TValues to the dictionary when using the
103 non generic IDictionary. Fixes #425693.
105 2008-06-16 Andreas Nahr <ClassDevelopment@A-SoftTech.com>
107 * String.cs: Dictionary: Do not change the index data when using the indexer for
108 an already existing index. This is somewhat illogical and breakes obscure code situations
110 2008-05-29 Juraj Skripsky <js@hotfeet.ch>
112 * List.cs (RemoveAll, Shift): Fix leak by clearing empty array
115 2008-04-29 Juraj Skripsky <js@hotfeet.ch>
117 * Dictionary.cs (Clear, Remove): Clear empty slots in keySlots
118 and valueSlots. Otherwise the garbage collector cannot reclaim
119 the referenced key/value. Fixes bug #384723.
121 2008-04-02 Andreas Nahr <ClassDevelopment@A-SoftTech.com>
123 * KeyNotFoundException.cs
124 * KeyValuePair.cs: Fix parameter names
126 2008-03-21 Sebastien Pouliot <sebastien@ximian.com>
128 * EqualityComparer.cs: Add null checks in GetHashCode. Fix bug
131 2007-11-05 Sebastien Pouliot <sebastien@ximian.com>
133 * Dictionary.cs: Ensure that the non-generic CopyTo works on Array.
136 2007-10-31 Miguel de Icaza <miguel@novell.com>
138 * Dictionary.cs: Do not increment curTableItem when we return
139 false. Was not necessary, just a defensive move.
141 2007-10-10 Juraj Skripsky <js@hotfeet.ch>
143 * Dictionary.cs (Enumerator.MoveNext): Handle the case where we
144 had already reached the end. Fixes bug #332534.
146 2007-08-20 Jb Evain <jbevain@novell.com>
148 * List.cs (AddCollection): return early if the collection
149 to be added is empty.
151 2007-08-08 Atsushi Enomoto <atsushi@ximian.com>
153 * Dictionary.cs : [Comvisible(true)]->[ComVisible(false)].
155 2007-06-23 Marek Safar <marek.safar@gmail.com>
157 * List.cs: Make CheckMatch static.
159 2007-06-20 Juraj Skripsky <js@hotfeet.ch>
161 * Dictionary.cs: Optimize and add implementation notes. Use a "mini-heap"
162 to store the linked lists instead of the regular heap. Split arrays of
163 structs into separate arrays to make the GC's life simpler (see bug 81879
164 for details). Make class serialization compatible with MS.NET.
166 * EqualityComparer.cs: Rename IEquatableOfTEqualityComparer<T> to
167 GenericEqualityComparer<T> to fix binary serialization compatibility
170 2006-04-16 Jonathan Chambers <joncham@gmail.com>
172 * List.cs: Clear entry in RemoveAt after removing item.
175 2007-03-27 Alan McGovern <alan.mcgovern@gmail.com>
177 * List.cs: Optimized several methods to increase performance
179 2007-03-21 Juraj Skripsky <js@hotfeet.ch>
181 * List.cs (FindAllStackBits): Small optimization to the new code.
182 Built resulting List<T> directly as an array, wrap it in a List<T>
183 afterwards. Stop the filling of the result array as soon as all
184 matching items have been processed.
186 2007-03-20 Juan Cristóbal Olivares <juancri@gmail.com>
188 * List.cs (FindAll): Optimize FindAll using a bitmask to determine
189 the number of positive matches, this increases the performance in
190 all cases below 10,000,000 elements extensively:
193 old method: 00:00:00.0126610 (26x)
194 stackalloc bit method: 00:00:00.0004750 (1x)
195 array bit method: 00:00:00.0010700 (2x)
196 heap bit method: 00:00:00.0038830 (8x)
199 old method: 00:00:00.0139250 (24x)
200 stackalloc bit method: 00:00:00.0005670 (1x)
201 array bit method: 00:00:00.0010890 (2x)
202 heap bit method: 00:00:00.0034920 (6x)
205 old method: 00:00:00.0136110 (12x)
206 stackalloc bit method: 00:00:00.0011240 (1x)
207 array bit method: 00:00:00.0016450 (1.4x)
208 heap bit method: 00:00:00.0043110 (3x)
211 old method: 00:00:00.0175970 (3x)
212 stackalloc bit method: 00:00:00.0085630 (1.5x)
213 array bit method: 00:00:00.0055010 (1x)
214 heap bit method: 00:00:00.0099590 (1.8x)
217 old method: 00:00:00.0210330 (2x)
218 array bit method: 00:00:00.0100430 (1x)
219 heap bit method: 00:00:00.0154150 (1.5x)
222 old method: 00:00:00.1243730 (1.2x)
223 array bit method: 00:00:00.0973110 (1x)
224 heap bit method: 00:00:00.1285650 (1.3x)
227 old method: 00:00:00.9252570 (1x)
228 array bit method: 00:00:00.9632300 ( 1.05x)
229 heap bit method: 00:00:01.1098490 (1.20x)
231 2007-03-08 David Mitchell <dmitchell@logos.com>
233 * List.cs: Fix the case where List.set_Item(int index) throws
234 inappropriate exception when index is equal to List.Count
236 List.IndexOf(object item) and IList.Contains(object item) throw
237 exceptions when given invalid types.
239 IList.Add(object item) throws InvalidCastException when item is
240 not of the correct type.
242 2007-03-08 Gert Driesen <drieseng@users.sourceforge.net>
244 * Comparer.cs: Renamed IComparableOfTComparer<T> to GenericComparer<T>
245 to fix binary serialization compatibility with MS.
247 2007-03-05 David Mitchell <dmitchell@logos.com>
249 * Dictionary.cs: An instance of Dictionary<TKey,TValue> is
250 supposed to throw a KeyNotFoundException when
251 the user attempts to retrieve the value associated with a key that
252 is not in the dictionary.
254 On the other hand, an instance of IDictionary is supposed to
255 return null in similar circumstances.
257 2007-03-05 David Mitchell <dmitchell@logos.com>
259 * List.cs: Fix InsertRange bug (80930).
261 2006-09-15 Gert Driesen <drieseng@users.sourceforge.net>
263 * List.cs: Fixed binary serialization compatibility with MS.NET.
264 Increment version whenever _items is modified; this fixes version
265 checks in Enumerator.
267 2006-09-06 Zoltan Varga <vargaz@gmail.com>
269 * Dictionary.cs: Speed up get_Item/set_Item/GetPrev () a bit. Increase capacity
270 specified by the user so 'capacity' elements can really be added without resizing.
272 2006-07-12 Zoltan Varga <vargaz@gmail.com>
274 * Dictionary.cs: Swap order of parameters to cmp.Equals () to improve
275 compatibility with MS.NET and strange Equals () implementations.
277 2006-05-17 Kazuki Oikawa <kazuki@panicode.com>
279 * List.cs : implemented Sort(Comparison <T>).
281 2006-05-08 Atsushi Enomoto <atsushi@ximian.com>
283 * List.cs : use proper comparer in Contains(), IndexOf() and
284 LastIndexOf(). Patch by Kazuki Oikawa. Fixed bug #77277.
286 2006-03-16 Ankit Jain <jankit@novell.com>
288 * List.cs (CheckIndex): Check for -ve indices and allow index == size.
289 (Insert): Use CheckIndex.
291 2006-03-12 Zoltan Varga <vargaz@gmail.com>
293 * List.cs: Applied patch from <kazuki@panicode.com>. Fixes #77504.
295 2006-02-10 Martin Baulig <martin@ximian.com>
298 (IComparableOfTComparer): `T' must implement `IComparable<T>' and
301 Tue Jan 24 18:22:54 CET 2006 Paolo Molaro <lupus@ximian.com>
303 * Dictionary.cs: avoid long reminder operations.
305 2006-01-23 Raja R Harinath <rharinath@novell.com>
307 Speed up remove. Use 'dict[k]=v' as a self-tuning hint.
308 * Dictionary.cs (GetSlot): Move data-structure traversal to ...
309 (GetPrev): ... this. Returns the slot prior to the place we're
310 looking for, or null if that place is the head of the chain.
312 (this.set): Use it. Implement move-to-front on set.
314 * Dictionary.cs (ToTKey, ToTValue): New helpers to convert from
316 (IDictionary.this, IDictionary.Add): Use them.
317 (IDictionary.Contains, IDictionary.Remove): If the types don't
320 2006-01-19 Raja R Harinath <rharinath@novell.com>
322 Fix to pass new nunit tests.
323 * Dictionary.cs (ShimEnumerator): New class. Implement the
324 requirement that ((IDictionary) foo).GetEnumerator ().Current has
325 type DictionaryEntry.
326 (IDictionary.GetEnumerator): Use ShimEnumerator.
327 (Enumerator.Current): Now has type KeyValuePair<TKey, TValue>.
328 (Enumerator.MoveNext): Use VerifyState.
329 (Enumerator.VerifyState): Move validation of 'current' field to ...
330 (Enumerator.CurrentSlot): ... this.
331 (Enumerator.Current, Enumerator.IDictionaryEnumerator.Entry):
333 (CopyTo, ICollection.CopyTo): Use subtle reasoning to replace a
334 '>=' with a '>'. Don't throw an ArgumentException when
335 index==array.Length && Count==0.
336 (KeyCollection.CopyTo, ValueCollection.CopyTo): Likewise, and thus
337 obviate the need to check (dictionary.Count == 0).
339 2005-12-20 Sebastien Pouliot <sebastien@ximian.com>
341 * List.cs: Applied Atsushi's patch for Sort (bug 76361) now that the
342 generic versions of Array.Sort are implemented.
344 2005-12-19 Sebastien Pouliot <sebastien@ximian.com>
346 * Dictionary.cs: Added [Serializable] attribute to both inner
347 Enumerator struct in Key and Value inner collection classes.
348 * EqualityComparer.cs: Added missing IEqualityComparer interface.
349 * List.cs: Added [Serializable] attribute to both inner Enumerator
352 2005-12-19 Sebastien Pouliot <sebastien@ximian.com>
354 * Dictionary.cs: Fixed ICollection.CopyTo to use DictionaryEntry. Fixed
355 Key and Value CopyTo not to throw exception if the dictionary is empty
357 * List.cs: Fix exception reporting to match MS behaviour (2.0 final).
359 2005-11-19 Zoltan Varga <vargaz@gmail.com>
361 * KeyNotFoundException.cs: Add default message.
363 2005-09-18 Miguel de Icaza <miguel@novell.com>
365 * Dictionary.cs: Change style for internal fields.
367 If the capacity is zero, set the capacity to our default size as 0
368 is an allowed parameter in .NET
370 2005-08-10 Kamil Skalski <nazgul@nemerle.org>
372 * KeyValuePair.cs, Dictionary.cs: Change Key and Value to properties to match
373 .NET 2.0 July CTP. Update its use in Dictionary, since now we
374 cannot write to them.
376 2005-07-10 Kamil Skalski <nazgul@nemerle.org>
378 * Comparer.cs, EqualityComparer.cs: Use MakeGenericType instead of BindGenericParameters.
381 2005-06-27 Raja R Harinath <rharinath@novell.com>
383 Introduce some thread-safety by removing the modify-on-read
384 move-to-front heuristic.
385 * Dictionary.cs (_enumeratorGeneration, _enumerators): Remove.
386 (Count): Add internal property set. Invalidate enumerators when
387 Count is changed. Change all references of _usedSlots to Count.
388 (this): Invalidate enumerators when the value of some slot is
389 changed, even if the layout of the data-structure isn't modified.
390 (DoHash): Remove null-key check. All codepaths leading to this
391 function already have the check.
392 (GetSlot): Remove move-to-front heuristic.
395 2005-06-24 Martin Baulig <martin@ximian.com>
397 * IDictionary.cs: Use the same type parameter names than on MS.
399 * IDictionary.cs, Dictionary.cs: We don't need the `CLSCompliant'
402 2005-06-23 Martin Baulig <martin@ximian.com>
404 * *.cs: Removed the `[ComVisible(false)]' attributes everywhere.
406 2005-06-22 Raja R Harinath <rharinath@novell.com>
408 * Dictionary.cs (_generation, _enumeratorGeneration, _enumerators):
409 New fields to implement fail-fast semantics. All code that
410 modifies the table increment _generation.
411 (GetSlot): Use _hcp to compare keys. Return the slot containing
412 the key, rather than the index. Avoid move-to-front heuristic
413 when there's an enumerator coursing through the table.
414 (this, Add, TryGetValue, ContainsKey, Remove): Update to change.
415 (Enumerator.Enumerator): Save the generation of the dictionary.
416 (Enumerator.Dispose): Inform dictionary that the enumerator is no more.
417 (Enumerator.MoveNext, Enumerator.VerifyState): Fail if the
418 dictionary has been modified.
420 2005-06-20 David waite <mass@akuma.org>
422 * List.cs : substantial changes and optimizations
423 (AddCollection, AddEnumerable): new internal specializations of AddRange
424 (AsReadOnly): returns specific IList<T> to match ms.net 2.0b2 api.
425 (Clear): reset size to zero on clear
426 (ConvertAll): catch null converter, use Add to prevent OutOfBounds
428 (FindAll, FindIndex, FindLast, FindLastIndex, RemoveAll, TrueForAll):
430 (FindLastIndex): correct index parameters based on ms.net 2005b2 behavior
431 (ForEach): catch null action
432 (CheckIndex): new internal function similar to CheckRange for functions
433 which only provide a starting index
434 (InsertCollection, InsertEnumerable): new internal specializations of
436 (ReadOnlyList): removed, ReadOnlyCollection in
437 System.Collections.ObjectModel is used instead now
439 2005-06-16 David Waite <mass@akuma.org>
441 * Dictionary.cs (EnumerationMode): Remove.
442 (Enumerator): Remove return type flag - legacy return is expected to
443 always return a DictionaryEntry
444 (Enumerator): Make constructor internal, it is not public on ms.net
446 (VerifyState): Added method to check state preconditions and throw
447 appropriate exceptions.
448 (KeyCollection,ValueCollection): Mark sealed to match ms.net beta 2
449 (KeyCollection.Enumerator._hostEnumerator): make exact struct type,
450 rather than boxing and using by interface
451 (KeyCollection.Enumerator.Dispose): Call _hostEnumerator.Dispose.
452 (ValueCollection.Enumerator._hostEnumerator): make exact struct type,
453 rather than boxing and using by interface
454 (ValueCollection.Enumerator.Dispose): Call _hostEnumerator.Dispose.
455 * EqualityComparer.cs (DefaultComparer, IEquatableOfTEqualityComparer):
456 Mark as serializable.
458 2005-06-16 Raja R Harinath <rharinath@novell.com>
460 * Dictionary.cs (GetKeys, GetValues): Remove.
461 (SetThreshold): New function to calculate the resize threshold.
462 (CopyTo): Don't use foreach syntax.
463 (ContainsValue): Likewise. Use default equality comparer of the
465 (GetObjectData): Use CopyTo to copy into temporary array. Don't
466 save redundant _usedSlots and _threshold.
467 (OnDeserialization): Rewrite.
468 (ICollection<>.CopyTo): Forward to CopyTo.
469 (Enumerator._nextIndex): Rename to from _index.
470 (Enumerator._next, Enumerator.FixNext): Remove.
471 (Enumerator.Current): Rewrite to avoid need for _next.
472 (Enumerator.IEnumerator.Reset): Update.
473 (KeyCollection): Is also IEnumerable<TKey> and IEnumerable.
474 Update methods to conform to standard.
475 (KeyCollection.GetEnumerator): Restore. Return the correct type.
476 (KeyCollection.Enumerator): Rename from KeyEnumerator. Simple
477 wrapper that forwards to Dictionary<,>.Enumerator.
478 (ValueCollection): Likewise.
480 2005-06-12 David Waite <dwaite@gmail.com>
482 * IKeyComparer.cs: removed
483 * KeyValuePair.cs: add same-style ToString as ms.net Beta2 impl,
484 make Serializable, use correct field names.
485 * Dictionary.cs: Miscelaneus clean-ups, added serialization
486 support, use Hashtable prime functions
488 2005-06-12 Ben Maurer <bmaurer@ximian.com>
490 * Comparer.cs, EqualityComparer.cs: Important performance hack:
491 make sure that we don't box stuff and do reflection on every
492 comparison. We use reflection at cctor time rather than on every
495 2005-06-09 Raja R Harinath <rharinath@novell.com>
497 Simplify Enumerator.MoveNext to make it "obviously correct", rather
498 than require subtle reasoning about the state of various variables.
499 * Dictionary.cs (Enumerator._isValid): Remove. Replace all uses
500 with "_current == null".
501 (Enumerator._validNodeVisited): Remove.
502 (Enumerator._next): New. Holds the the next position.
503 (Enumerator.FixNest): New helper function that ensures that _next
505 (Enumerator.MoveNext): Simplify. Now, copies _next to _current
506 and advances _next if possible.
508 2005-06-08 Martin Baulig <martin@ximian.com>
510 * Dictionary.cs (Dictionary.KeyEnumerator): Removed the public
511 GetEnumerator() function since it's returning the wrong type.
512 (Dictionary.ValueEnumerator): Likewise. Fix #75073.
514 2005-06-08 Ankit Jain <ankit@corewars.org>
516 * Dictionary.cs (Dictionary<TKey, TValue>.MoveNext): Allow traversal of chain in last slot
517 of the table. Fixes #75168.
519 2005-06-04 Ben Maurer <bmaurer@ximian.com>
521 * *.cs: 2.0 api fixups
523 2005-05-26 Miguel de Icaza <miguel@novell.com>
525 * Dictionary.cs: Remove the `Hash' name from the Dictionary
526 internal classes, make them public.
528 2005-05-26 Zoltan Varga <vargaz@freemail.hu>
530 * Dictionary.cs: Fix a warning.
532 * IDictionary.cs: Add missing TryGetValue method.
534 2005-05-19 Geoff Norton <gnorton@customerdna.com>
536 * List.cs (Insert): Resize the array before the shift if needed
538 2005-05-18 Miguel de Icaza <miguel@novell.com>
540 * List.cs (GetRange): Implement.
542 Do not do lazy loading of data. Not worth adding an
543 extra check, and not worth the bugs.
545 This decision wont be discussed until: a) a full List regression
546 test suite exists and b) performance benchmarks are created. (b)
547 depends on (a) or the argument wont even be heard.
549 2005-05-13 Atsushi Enomoto <atsushi@ximian.com>
551 * Queue.cs, Stack.cs: moved to System.dll
553 2005-05-06 Martin Baulig <martin@ximian.com>
555 * *.cs: Add CLSCompliant(true) where missing.
557 2005-05-06 Zoltan Varga <vargaz@freemail.hu>
559 * *.cs: Remove CLSCompliant(false) attributes.
561 2005-05-05 Zoltan Varga <vargaz@freemail.hu>
563 * List.cs: Applied patch from Mart Roosmaa (roosmaa@gmail.com).
564 Fix Insert method. Fixes #74824.
566 2005-04-29 Martin Baulig <martin@ximian.com>
568 Reflect latest spec changes.
570 * IEnumerable.cs (IEnumerable<T>): Implement IEnumerable.
571 * IEnumerator.cs (IEnumerator<T>): Implement IEnumerator.
573 2005-04-29 Raja R Harinath <rharinath@novell.com>
576 * Dictionary.cs (Slot<K,V>): Move to ...
577 (Dictionary<K,V>.Slot): ... here.
579 2005-04-28 Martin Baulig <martin@ximian.com>
581 * Dictionary.cs, Queue.cs, Stack.cs, List.cs, Comparer.cs: Don't
582 duplicate type parameters in the nested classes.
584 2005-04-20 Zoltan Varga <vargaz@freemail.hu>
586 * List.cs: Fix ToArray () method. Fixes #74675.
588 2005-04-04 Raja R Harinath <rharinath@novell.com>
590 * Dictionary.cs: Update to draft of Feb 27. Add some argument checks.
591 (GetSlot): Don't throw KeyNotFoundException. Unify all list
592 traversals in here. Move found key to head of chain, and return
593 the index of the chain suitable for/containing the key.
594 (Item, Add, Remove): Simplify, and remove FIXMEs.
595 (Resize): Reuse linked list nodes from old table.
596 (Dictionary.CopyTo, HashKeyCollection.CopyTo, HashValueCollection.CopyTo):
597 Add some argument checks.
599 2005-04-02 Ben Maurer <bmaurer@ximian.com>
601 * Dictionary.cs: Real impl.
603 2005-02-21 Martin Baulig <martin@ximian.com>
605 * IComparer.cs: Reverted the last change here, Equals() and
606 GetHashCode() have been removed a long time ago.
608 2005-02-21 Kazuki Oikawa <kazuki@panicode.com>
610 * IComparer.cs, IDictionary.cs: Corrected the wrong declaration.
612 2005-02-11 Carlos Alberto Cortez <calberto.cortez@gmail.com>
614 * List.cs: Added internal ReadOnlyCollection class,
615 which is a wrapper for a read only IList<T> version of the List<T>.
616 Used in AsReadOnly () method.
618 2005-02-07 Ben Maurer <bmaurer@ximian.com>
620 * List.cs (CheckRange): Comparison error. Duh!
621 (Shift): really deal with neg. delta. Also, adjust the `size'.
623 Based on a patch from Marc Denty (marc.denty@libertysurf.fr).
627 2005-01-29 Ben Maurer <bmaurer@ximian.com>
629 * Queue.cs: `duh' bugs.
631 2004-12-27 Ben Maurer <bmaurer@ximian.com>
633 * Stack.cs: Stupid bug fixes.
635 * List.cs: My new (mostly untested ;-) impl of List
636 <T>. Implements most of the API.
638 2004-12-26 Ben Maurer <bmaurer@ximian.com>
640 * Queue.cs: New, non-linked-list based impl.
642 2004-11-29 Ben Maurer <bmaurer@ximian.com>
644 * Comparer.cs: Update this class.
646 2004-11-25 Carlos Alberto Cortez <calberto.cortez@gmail.com>
648 * List.cs: Enumerator changed to behave like the MS impl.
650 2004-11-25 Ben Maurer <bmaurer@ximian.com>
652 * Stack.cs: New, list based impl. Waiting for some gmcs fixes.
654 2004-11-10 Martin Baulig <martin@ximian.com>
656 * IDictionary.cs (IDictionary): `IsReadOnly' and `Clear' are
657 inherited from ICollection.
659 2004-09-20 Gert Driesen <drieseng@users.sourceforge.net>
661 * ReadOnlyCollection.cs: Moved to System assembly
662 * Collection.cs: Moved to System assembly
664 2004-09-07 Carlos Alberto Cortez <carlos@unixmexico.org>
666 * ReadOnlyCollection.cs: New file and changes to
667 Collection.cs tu support it.
669 2004-09-05 Marek Safar <marek.safar@seznam.cz>
671 * Dictionary.cs: Added new file (no implementation).
673 2004-09-03 Carlos Alberto Cortez <carlos@unixmexico.org>
675 * Collection.cs: Small improvements related to
676 style, resizing, and type checking.
678 2004-09-01 Carlos Alberto Cortez <carlos@unixmexico.org>
680 * Collection.cs: New file.
682 2004-08-04 Martin Baulig <martin@ximian.com>
684 * List.cs (List<T>.Enumerator): Made this a struct.
685 (List<T>.GetEnumerator): The public method now returns the
688 2004-08-02 Martin Baulig <martin@ximian.com>
690 Started to do some API review.
692 * ICollection.cs (ICollection<T>): Added IsReadOnly, Add, Clear,
695 * IList.cs (IList<T>): Removed Add, Clear, Constains, Remove,
696 IsReadOnly and IsFixedSize.
698 2004-08-02 Martin Baulig <martin@ximian.com>
700 * IList.cs (IList.Add): Changed return type to void.
702 * List.cs (List.Add): Likewise.
704 2004-07-16 Martin Baulig <martin@ximian.com>
706 * IComparable.cs: Removed, it's in System.
708 2004-07-12 Duncan Mak <duncan@ximian.com>
710 * KeyNotFoundException.cs: Added.
712 2004-06-18 Ben Maurer <bmaurer@ximian.com>
714 * Comparer.cs: v2 impl. Some workarounds for gmcs are enabled.
716 2004-05-26 Sebastien Pouliot <sebastien@ximian.com>
718 * Queue.cs: Fixed possible integer overflow in CopyTo methods.
719 * Stack.cs: Fixed possible integer overflow in CopyTo methods.
721 2004-03-13 Martin Baulig <martin@ximian.com>
723 * Stack.cs, Queue.cs, List.cs: Implement the non-generic interfaces.
725 2004-03-11 Martin Baulig <martin@ximian.com>
729 2004-03-11 Martin Baulig <martin@ximian.com>
731 * Stack.cs, Queue.cs: Just use `Node' for the nested class, not
732 `Node<T>' (which would create another type parameter `T'
733 overriding `T' from the outer class).
735 2004-02-23 Martin Baulig <martin@ximian.com>
737 * Stack.cs, Queue.cs: New files. Hmm, looks like I forgot to add
738 them to CVS; they're already on my hard disk since December or so.
740 2003-12-08 Martin Baulig <martin@ximian.com>
742 * *.cs: require GENERICS.
744 2003-11-08 Ben Maurer <bmaurer@users.sourceforge.net>
746 * *.cs: require NET_2_0 and GENERICS
748 2003-11-07 Ben Maurer <bmaurer@users.sourceforge.net>
750 * IComparable.cs, IComparer.cs, IDictionary.cs, IKeyComparer.cs, KeyValuePair.cs
753 2003-11-06 Martin Baulig <martin@ximian.com>
755 * ICollection.cs, IList.cs, IEnumerator.cs, IEnumerable.cs:
756 Started to implement the System.Collections.Generic classes.