2006-09-06  Zoltan Varga  <vargaz@gmail.com>

	* Dictionary.cs: Speed up get_Item/set_Item/GetPrev () a bit. Increase capacity
	specified by the user so 'capacity' elements can really be added without resizing.

2006-07-12  Zoltan Varga  <vargaz@gmail.com>

	* Dictionary.cs: Swap order of parameters to cmp.Equals () to improve 
	compatibility with MS.NET and strange Equals () implementations.	

2006-05-17  Kazuki Oikawa  <kazuki@panicode.com>

	* List.cs : implemented Sort(Comparison <T>).

2006-05-08  Atsushi Enomoto  <atsushi@ximian.com>

	* List.cs : use proper comparer in Contains(), IndexOf() and
	  LastIndexOf(). Patch by Kazuki Oikawa. Fixed bug #77277.

2006-03-16  Ankit Jain  <jankit@novell.com>

	* List.cs (CheckIndex): Check for -ve indices and allow index == size.
	(Insert): Use CheckIndex.

2006-03-12  Zoltan Varga  <vargaz@gmail.com>

	* List.cs: Applied patch from <kazuki@panicode.com>. Fixes #77504.

2006-02-10  Martin Baulig  <martin@ximian.com>

	* Comparer.cs
	(IComparableOfTComparer): `T' must implement `IComparable<T>' and
	not `IComparable'.

Tue Jan 24 18:22:54 CET 2006 Paolo Molaro <lupus@ximian.com>

	* Dictionary.cs: avoid long reminder operations.

2006-01-23  Raja R Harinath  <rharinath@novell.com>

	Speed up remove.  Use 'dict[k]=v' as a self-tuning hint.
	* Dictionary.cs (GetSlot): Move data-structure traversal to ...
	(GetPrev): ... this.  Returns the slot prior to the place we're
	looking for, or null if that place is the head of the chain.
	(Remove): Use it.
	(this.set): Use it.  Implement move-to-front on set.

	* Dictionary.cs (ToTKey, ToTValue): New helpers to convert from
	type 'object'.
	(IDictionary.this, IDictionary.Add): Use them.
	(IDictionary.Contains, IDictionary.Remove): If the types don't
	match, do nothing.

2006-01-19  Raja R Harinath  <rharinath@novell.com>

	Fix to pass new nunit tests.
	* Dictionary.cs (ShimEnumerator): New class.  Implement the
	requirement that ((IDictionary) foo).GetEnumerator ().Current has
	type DictionaryEntry.
	(IDictionary.GetEnumerator): Use ShimEnumerator.
	(Enumerator.Current): Now has type KeyValuePair<TKey, TValue>.
	(Enumerator.MoveNext): Use VerifyState.
	(Enumerator.VerifyState): Move validation of 'current' field to ...
	(Enumerator.CurrentSlot): ... this.
	(Enumerator.Current, Enumerator.IDictionaryEnumerator.Entry):
	Use CurrentSlot.
	(CopyTo, ICollection.CopyTo): Use subtle reasoning to replace a
	'>=' with a '>'.  Don't throw an ArgumentException when
	index==array.Length && Count==0.
	(KeyCollection.CopyTo, ValueCollection.CopyTo): Likewise, and thus
	obviate the need to check (dictionary.Count == 0).

2005-12-20  Sebastien Pouliot  <sebastien@ximian.com>

	* List.cs: Applied Atsushi's patch for Sort (bug 76361) now that the
	generic versions of Array.Sort are implemented.

2005-12-19  Sebastien Pouliot  <sebastien@ximian.com>

	* Dictionary.cs: Added [Serializable] attribute to both inner 
	Enumerator struct in Key and Value inner collection classes.
	* EqualityComparer.cs: Added missing IEqualityComparer interface.
	* List.cs: Added [Serializable] attribute to both inner Enumerator
	struct.

2005-12-19  Sebastien Pouliot  <sebastien@ximian.com> 
 
	* Dictionary.cs: Fixed ICollection.CopyTo to use DictionaryEntry. Fixed
	Key and Value CopyTo not to throw exception if the dictionary is empty
	(fix bug #77019).
	* List.cs: Fix exception reporting to match MS behaviour (2.0 final).

2005-11-19  Zoltan Varga  <vargaz@gmail.com>

	* KeyNotFoundException.cs: Add default message.

2005-09-18  Miguel de Icaza  <miguel@novell.com>

	* Dictionary.cs: Change style for internal fields.

	If the capacity is zero, set the capacity to our default size as 0
	is an allowed parameter in .NET

2005-08-10  Kamil Skalski  <nazgul@nemerle.org>

	* KeyValuePair.cs, Dictionary.cs: Change Key and Value to properties to match
	.NET 2.0 July CTP. Update its use in Dictionary, since now we
	cannot write to them.
	
2005-07-10  Kamil Skalski <nazgul@nemerle.org>

	* Comparer.cs, EqualityComparer.cs: Use MakeGenericType instead of BindGenericParameters.


2005-06-27  Raja R Harinath  <rharinath@novell.com>

	Introduce some thread-safety by removing the modify-on-read
	move-to-front heuristic.
	* Dictionary.cs (_enumeratorGeneration, _enumerators): Remove.
	(Count): Add internal property set.  Invalidate enumerators when
	Count is changed.  Change all references of _usedSlots to Count.
	(this): Invalidate enumerators when the value of some slot is
	changed, even if the layout of the data-structure isn't modified.
	(DoHash): Remove null-key check.  All codepaths leading to this
	function already have the check.
	(GetSlot): Remove move-to-front heuristic.
	(Remove): Update.

2005-06-24  Martin Baulig  <martin@ximian.com>

	* IDictionary.cs: Use the same type parameter names than on MS.

	* IDictionary.cs, Dictionary.cs: We don't need the `CLSCompliant'
	attribute here.

2005-06-23  Martin Baulig  <martin@ximian.com>

	* *.cs: Removed the `[ComVisible(false)]' attributes everywhere.

2005-06-22  Raja R Harinath  <rharinath@novell.com>

	* Dictionary.cs (_generation, _enumeratorGeneration, _enumerators):
	New fields to implement fail-fast semantics.  All code that
	modifies the table increment _generation.
	(GetSlot): Use _hcp to compare keys.  Return the slot containing
	the key, rather than the index.  Avoid move-to-front heuristic
	when there's an enumerator coursing through the table.
	(this, Add, TryGetValue, ContainsKey, Remove): Update to change.
	(Enumerator.Enumerator): Save the generation of the dictionary.
	(Enumerator.Dispose): Inform dictionary that the enumerator is no more.
	(Enumerator.MoveNext, Enumerator.VerifyState): Fail if the
	dictionary has been modified.

2005-06-20  David waite  <mass@akuma.org>

	* List.cs : substantial changes and optimizations
	(AddCollection, AddEnumerable): new internal specializations of AddRange
	(AsReadOnly): returns specific IList<T> to match ms.net 2.0b2 api.
	(Clear): reset size to zero on clear
	(ConvertAll): catch null converter, use Add to prevent OutOfBounds
	exception
	(FindAll, FindIndex, FindLast, FindLastIndex, RemoveAll, TrueForAll): 
	check for null match
	(FindLastIndex): correct index parameters based on ms.net 2005b2 behavior
	(ForEach): catch null action
	(CheckIndex): new internal function similar to CheckRange for functions
	which only provide a starting index
	(InsertCollection, InsertEnumerable): new internal specializations of
	InsertRange
	(ReadOnlyList): removed, ReadOnlyCollection in 
	System.Collections.ObjectModel is used instead now 
    
2005-06-16  David Waite  <mass@akuma.org>

	* Dictionary.cs (EnumerationMode): Remove.
	(Enumerator): Remove return type flag - legacy return is expected to
	always return a DictionaryEntry
	(Enumerator): Make constructor internal, it is not public on ms.net 
	beta 2
	(VerifyState): Added method to check state preconditions and throw
	appropriate exceptions.
	(KeyCollection,ValueCollection): Mark sealed to match ms.net beta 2
	(KeyCollection.Enumerator._hostEnumerator): make exact struct type,
	rather than boxing and using by interface
	(KeyCollection.Enumerator.Dispose): Call _hostEnumerator.Dispose.
	(ValueCollection.Enumerator._hostEnumerator): make exact struct type,
	rather than boxing and using by interface
	(ValueCollection.Enumerator.Dispose): Call _hostEnumerator.Dispose.
	* EqualityComparer.cs (DefaultComparer, IEquatableOfTEqualityComparer):
	Mark as serializable.

2005-06-16  Raja R Harinath  <rharinath@novell.com>

	* Dictionary.cs (GetKeys, GetValues): Remove.
	(SetThreshold): New function to calculate the resize threshold.
	(CopyTo): Don't use foreach syntax.
	(ContainsValue): Likewise.  Use default equality comparer of the
	value type.
	(GetObjectData): Use CopyTo to copy into temporary array.  Don't
	save redundant _usedSlots and _threshold.
	(OnDeserialization): Rewrite.
	(ICollection<>.CopyTo): Forward to CopyTo.
	(Enumerator._nextIndex): Rename to from _index.
	(Enumerator._next, Enumerator.FixNext): Remove.
	(Enumerator.Current): Rewrite to avoid need for _next.
	(Enumerator.IEnumerator.Reset): Update.
	(KeyCollection): Is also IEnumerable<TKey> and IEnumerable.
	Update methods to conform to standard.
	(KeyCollection.GetEnumerator): Restore.  Return the correct type.
	(KeyCollection.Enumerator): Rename from KeyEnumerator.  Simple
	wrapper that forwards to Dictionary<,>.Enumerator.
	(ValueCollection): Likewise.

2005-06-12  David Waite  <dwaite@gmail.com>

	* IKeyComparer.cs: removed
	* KeyValuePair.cs: add same-style ToString as ms.net Beta2 impl,
	make Serializable, use correct field names.
	* Dictionary.cs: Miscelaneus clean-ups, added serialization
	support, use Hashtable prime functions

2005-06-12  Ben Maurer  <bmaurer@ximian.com>

	* Comparer.cs, EqualityComparer.cs: Important performance hack:
	make sure that we don't box stuff and do reflection on every
	comparison. We use reflection at cctor time rather than on every
	request.

2005-06-09  Raja R Harinath  <rharinath@novell.com>

	Simplify Enumerator.MoveNext to make it "obviously correct", rather
	than require subtle reasoning about the state of various variables.
	* Dictionary.cs (Enumerator._isValid): Remove.  Replace all uses
	with "_current == null".
	(Enumerator._validNodeVisited): Remove.
	(Enumerator._next): New.  Holds the the next position.
	(Enumerator.FixNest): New helper function that ensures that _next
	has the right value.
	(Enumerator.MoveNext): Simplify.  Now, copies _next to _current
	and advances _next if possible.

2005-06-08  Martin Baulig  <martin@ximian.com>

	* Dictionary.cs (Dictionary.KeyEnumerator): Removed the public
	GetEnumerator() function since it's returning the wrong type.
	(Dictionary.ValueEnumerator): Likewise.  Fix #75073.

2005-06-08  Ankit Jain <ankit@corewars.org>

	* Dictionary.cs (Dictionary<TKey, TValue>.MoveNext): Allow traversal of chain in last slot
	of the table. Fixes #75168.

2005-06-04  Ben Maurer  <bmaurer@ximian.com>

	* *.cs: 2.0 api fixups

2005-05-26  Miguel de Icaza  <miguel@novell.com>

	* Dictionary.cs: Remove the `Hash' name from the Dictionary
	internal classes, make them public.

2005-05-26  Zoltan Varga  <vargaz@freemail.hu>

	* Dictionary.cs: Fix a warning.

	* IDictionary.cs: Add missing TryGetValue method.

2005-05-19  Geoff Norton  <gnorton@customerdna.com>

	* List.cs (Insert): Resize the array before the shift if needed

2005-05-18  Miguel de Icaza  <miguel@novell.com>

	* List.cs (GetRange): Implement.

	Do not do lazy loading of data.  Not worth adding an
	extra check, and not worth the bugs. 

	This decision wont be discussed until: a) a full List regression
	test suite exists and  b) performance benchmarks are created.  (b)
	depends on (a) or the argument wont even be heard. 

2005-05-13  Atsushi Enomoto  <atsushi@ximian.com>

	* Queue.cs, Stack.cs: moved to System.dll

2005-05-06  Martin Baulig  <martin@ximian.com>

	* *.cs: Add CLSCompliant(true) where missing.

2005-05-06  Zoltan Varga  <vargaz@freemail.hu>

	* *.cs: Remove CLSCompliant(false) attributes.

2005-05-05  Zoltan Varga  <vargaz@freemail.hu>

	* List.cs: Applied patch from Mart Roosmaa (roosmaa@gmail.com). 
	Fix Insert method. Fixes #74824.

2005-04-29  Martin Baulig  <martin@ximian.com>

	Reflect latest spec changes.

	* IEnumerable.cs (IEnumerable<T>): Implement IEnumerable.
	* IEnumerator.cs (IEnumerator<T>): Implement IEnumerator.

2005-04-29  Raja R Harinath  <rharinath@novell.com>

	Remove FIXME.
	* Dictionary.cs (Slot<K,V>): Move to ...
	(Dictionary<K,V>.Slot): ... here.

2005-04-28  Martin Baulig  <martin@ximian.com>

	* Dictionary.cs, Queue.cs, Stack.cs, List.cs, Comparer.cs: Don't
	duplicate type parameters in the nested classes.

2005-04-20  Zoltan Varga  <vargaz@freemail.hu>

	* List.cs: Fix ToArray () method. Fixes #74675.

2005-04-04  Raja R Harinath  <rharinath@novell.com>

	* Dictionary.cs: Update to draft of Feb 27.  Add some argument checks.
	(GetSlot): Don't throw KeyNotFoundException.  Unify all list
	traversals in here.  Move found key to head of chain, and return
	the index of the chain suitable for/containing the key.
	(Item, Add, Remove): Simplify, and remove FIXMEs.
	(Resize): Reuse linked list nodes from old table.
	(Dictionary.CopyTo, HashKeyCollection.CopyTo, HashValueCollection.CopyTo):
	Add some argument checks.

2005-04-02  Ben Maurer  <bmaurer@ximian.com>

	* Dictionary.cs: Real impl.

2005-02-21  Martin Baulig  <martin@ximian.com>

	* IComparer.cs: Reverted the last change here, Equals() and
	GetHashCode() have been removed a long time ago.

2005-02-21  Kazuki Oikawa  <kazuki@panicode.com>

	* IComparer.cs, IDictionary.cs: Corrected the wrong declaration.

2005-02-11  Carlos Alberto Cortez <calberto.cortez@gmail.com>

	* List.cs: Added internal ReadOnlyCollection class,
	which is a wrapper for a read only IList<T> version of the List<T>.
	Used in AsReadOnly () method.
	
2005-02-07  Ben Maurer  <bmaurer@ximian.com>

	* List.cs (CheckRange): Comparison error. Duh!
	(Shift): really deal with neg. delta. Also, adjust the `size'.

	Based on a patch from Marc Denty (marc.denty@libertysurf.fr).

	Fixes #72258.

2005-01-29  Ben Maurer  <bmaurer@ximian.com>

	* Queue.cs: `duh' bugs.

2004-12-27  Ben Maurer  <bmaurer@ximian.com>

	* Stack.cs: Stupid bug fixes.

	* List.cs: My new (mostly untested ;-) impl of List
	<T>. Implements most of the API.

2004-12-26  Ben Maurer  <bmaurer@ximian.com>

	* Queue.cs: New, non-linked-list based impl.

2004-11-29  Ben Maurer  <bmaurer@ximian.com>

	* Comparer.cs: Update this class.

2004-11-25  Carlos Alberto Cortez <calberto.cortez@gmail.com>

	* List.cs: Enumerator changed to behave like the MS impl.
	
2004-11-25  Ben Maurer  <bmaurer@ximian.com>

	* Stack.cs: New, list based impl. Waiting for some gmcs fixes.

2004-11-10  Martin Baulig  <martin@ximian.com>

	* IDictionary.cs (IDictionary): `IsReadOnly' and `Clear' are
	inherited from ICollection.

2004-09-20  Gert Driesen <drieseng@users.sourceforge.net>

	* ReadOnlyCollection.cs: Moved to System assembly
	* Collection.cs: Moved to System assembly

2004-09-07  Carlos Alberto Cortez <carlos@unixmexico.org>

	* ReadOnlyCollection.cs: New file and changes to 
	Collection.cs tu support it.

2004-09-05  Marek Safar <marek.safar@seznam.cz>

	* Dictionary.cs: Added new file (no implementation).

2004-09-03  Carlos Alberto Cortez <carlos@unixmexico.org>

	* Collection.cs: Small improvements related to
	style, resizing, and type checking.

2004-09-01  Carlos Alberto Cortez <carlos@unixmexico.org>

	* Collection.cs: New file.

2004-08-04  Martin Baulig  <martin@ximian.com>

	* List.cs (List<T>.Enumerator): Made this a struct.
	(List<T>.GetEnumerator): The public method now returns the
	`Enumerator' struct.

2004-08-02  Martin Baulig  <martin@ximian.com>

	Started to do some API review.

	* ICollection.cs (ICollection<T>): Added IsReadOnly, Add, Clear,
	Contains and Remove.

	* IList.cs (IList<T>): Removed Add, Clear, Constains, Remove,
	IsReadOnly and IsFixedSize.

2004-08-02  Martin Baulig  <martin@ximian.com>

	* IList.cs (IList.Add): Changed return type to void.

	* List.cs (List.Add): Likewise.

2004-07-16  Martin Baulig  <martin@ximian.com>

	* IComparable.cs: Removed, it's in System.

2004-07-12  Duncan Mak  <duncan@ximian.com>

	* KeyNotFoundException.cs: Added.

2004-06-18  Ben Maurer  <bmaurer@ximian.com>

	* Comparer.cs: v2 impl. Some workarounds for gmcs are enabled.

2004-05-26  Sebastien Pouliot  <sebastien@ximian.com>

	* Queue.cs: Fixed possible integer overflow in CopyTo methods.
	* Stack.cs: Fixed possible integer overflow in CopyTo methods.

2004-03-13  Martin Baulig  <martin@ximian.com>

	* Stack.cs, Queue.cs, List.cs: Implement the non-generic interfaces.

2004-03-11  Martin Baulig  <martin@ximian.com>

	* List.cs: New file.

2004-03-11  Martin Baulig  <martin@ximian.com>

	* Stack.cs, Queue.cs: Just use `Node' for the nested class, not
	`Node<T>' (which would create another type parameter `T'
	overriding `T' from the outer class).	

2004-02-23  Martin Baulig  <martin@ximian.com>

	* Stack.cs, Queue.cs: New files.  Hmm, looks like I forgot to add
	them to CVS; they're already on my hard disk since December or so.

2003-12-08  Martin Baulig  <martin@ximian.com>

	* *.cs: require GENERICS.

2003-11-08 Ben Maurer  <bmaurer@users.sourceforge.net>

	* *.cs: require NET_2_0 and GENERICS

2003-11-07 Ben Maurer  <bmaurer@users.sourceforge.net>

	* IComparable.cs, IComparer.cs, IDictionary.cs, IKeyComparer.cs, KeyValuePair.cs
	Added.

2003-11-06  Martin Baulig  <martin@ximian.com>

	* ICollection.cs, IList.cs, IEnumerator.cs, IEnumerable.cs:
	Started to implement the System.Collections.Generic classes.

