2010-06-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* StringBuilder.cs: Moonlight needs Clear too.

2010-03-16  Jb Evain  <jbevain@novell.com>

	* StringBuilder.cs, Encoding.cs: use MOONLIGHT symbol to
	disambiguate MonoTouch and Moonlight code.

2010-02-02  Jb Evain  <jbevain@novell.com>

	* ASCIIEncoding.cs, Latin1Encoding.cs: remove duplicated code.

2009-12-09  Chris Toshok  <toshok@ximian.com>

	* Encoding.cs (get_Default): moonlight defaults to UTF8, not
	UTF8Unmarked.
	
2009-11-24  Marek Safar  <marek.safar@gmail.com>

	* UTF8Encoding.cs (GetPreamble): Let compiler optimize it.

2009-11-02  Miguel de Icaza  <miguel@novell.com>

	* Jumbo patch to drop support for pre-NET_2_0 code:

	Remove NET_2_0 defines assuming the value is true.

2009-10-22  Miguel de Icaza  <miguel@novell.com>

	* StringBuilder.cs (Text): Add new 4.0 method.

2009-10-06  Sebastien Pouliot  <sebastien@ximian.com>

	* Encoding.cs: Remove normalization methods for Moonlight

2009-09-23  Sebastien Pouliot  <sebastien@ximian.com>

	* Encoding.cs: Add back UTF32 since it's useful for smcs

2009-09-22  Sebastien Pouliot  <sebastien@ximian.com>

	* Encoding.cs: Remove UTF32, Latin1 and custom (loaded code)
	encodings for NET_2_1

2009-07-28  Miguel de Icaza  <miguel@novell.com>

	* UTF8Encoding.cs: Small optimization, reuse the static
	EncoderFallback and DecoderFallback instead of creating new ones. 

	* UTF8Encoding.cs: Use Equals to compare the objects as the
	fallback objects do not overload operator ==.    The comparison
	was previously failing.

2009-07-26 Gonzalo Paniagua Javier <gonzalo@novell.com>

	* StringBuilder.cs: don't throw on null values in ctor(string, int).
	Unify another ctor into the main one to account for MaxCapacity.

2009-07-26 Gonzalo Paniagua Javier <gonzalo@novell.com>

	* StringBuilder.cs: small fixes dealing with _maxCapacity.

2009-02-05  Gert Driesen  <drieseng@users.sourceforge.net>

	* UTF32Encoding.cs: Added missing argument check in GetByteCount 
	(char*, int) overload.

2009-02-04  Atsushi Enomoto  <atsushi@ximian.com>

	* UTF32Encoding.cs : fixed wrong range in GetByteCount(). Patch by
	  David Michell.

2009-01-30  Atsushi Enomoto  <atsushi@ximian.com>

	* UTF8Encoding.cs : surrogate characters are handled in 
	  InternalGetChars() but not in InternalGetCharCount().
	  Fixed bug #415628.

2009-01-13  Jb Evain  <jbevain@novell.com>

	* Encoding.cs: when creating a ForwardingEncoder or a
	ForwardingDecoder, don't crash if the Encoding doesn't
	provide an EncoderFallback or a DecoderFallback.

Mon Oct 6 09:46:09 CEST 2008 Paolo Molaro <lupus@ximian.com>

	* UTF8Encoding.cs: rewritten InternalGetByteCount () and
	InternalGetBytes (): among other things this versions are
	10% to 60% faster, depending on input type and size.

2008-09-28  Juraj Skripsky  <js@hotfeet.ch>

	* StringBuilder.cs (Replace): Return early when no oldValue was 
	found. Avoid extra string allocations.

2008-07-03  Andreas Nahr  <ClassDevelopment@A-SoftTech.com>

	* UTF8Encoding.cs: Fix parameter names, Remove unfounded TODO

2008-07-03  Andreas Nahr  <ClassDevelopment@A-SoftTech.com>

	* UTF8Encoding.cs:
	* UTF7Encoding.cs:
	* UTF32Encoding.cs:
	* EncodingInfo.cs:
	* Encoding.cs:
	* Encoder.cs:
	* ASCIIEncoding.cs: Fix parameter names

2008-06-01  Juraj Skripsky  <js@hotfeet.ch>

	* StringBuilder.cs (ToString): Use String.SubstringUnchecked instead
	of String.Substring, as the former is guaranteed to create a new
	string object. Fixes bug #395904.

2008-05-15  Andreas Nahr <ClassDevelopment@A-SoftTech.com>

	* StringBuilder.cs: Resubmit uncritical parts of String cleanup patch

2008-04-09  Atsushi Enomoto  <atsushi@ximian.com>

	* UTF7Encoding.cs :
	  Fixed misplaced leftOverSize reset in InternalGetCharCount().
	  Fixed base64 value for '+' (the value is actually unused though).

2008-03-27  Kornél Pál  <kornelpal@gmail.com>

	* Encoding.cs: Fix possible integer overflow in argument validation.

2008-02-10  Sebastien Pouliot  <sebastien@ximian.com>

	* DecoderExceptionFallback.cs: Use 'is' instead of 'as' and a null
	check. Found using Gendarme new UseIsOperator rule.
	* EncoderExceptionFallback.cs: Use 'is' instead of 'as' and a null
	check. Found using Gendarme new UseIsOperator rule.

2007-12-27  Atsushi Enomoto  <atsushi@ximian.com>

	* DecoderFallback.cs, EncoderFallback.cs, Encoding.cs :
	  the same "\uFFFD" fix for encoder fallback.
	  Reduced extra instantiation of those fallbacks.

2007-10-27  Atsushi Enomoto  <atsushi@ximian.com>

	* Encoding.cs : fixed UTF8UnmarkedUnsafe for 1.1; should not be null.

2007-10-26  Atsushi Enomoto  <atsushi@ximian.com>

	* Encoding.cs : added UTF8UnmarkedUnsafe, for old empty replacement
	  UTF8.

2007-10-25  Atsushi Enomoto  <atsushi@ximian.com>

	* UnicodeEncoding.cs : fix build.

2007-10-25  Atsushi Enomoto  <atsushi@ximian.com>

	* DecoderReplacementFallbackBuffer.cs : Reset() should also reset the
	  input buffer. When fallback is not assigned, just return '\0'.
	* UnicodeEncoding.cs : handle throwOnInvalid .ctor argument.
	  Default replacement fallback buffer is now "\uFFFD".
	* UTF8Encoding.cs : couple of replacement buffer size fixes.
	  Default replacement fallback buffer is now "\uFFFD".
	* UTF32Encoding.cs : Default replacement is "\uFFFD" too here.
	  See http://support.microsoft.com/kb/940521/ for this change.

2007-08-15  Jb Evain  <jbveain@novell.com>

	* StringBuilder: hide non 2.1 AppendFormat on 2.1 so that
	the compile picks up the adequate method when AppendFormat
	is used in 2.1 platform code.

2007-07-28  Miguel de Icaza  <miguel@novell.com>

	* StringBuilder.cs (Text): Check for null, from Jesse Jones.

2007-05-03  Dick Porter  <dick@ximian.com>

	* Encoding.cs: 
	* UnicodeEncoding.cs: 
	* UTF7Encoding.cs: Update to 2.0 profile

2007-02-01  Gert Driesen  <drieseng@users.sourceforge.net>

	* Encoding.cs: Enabled ArgumentException in GetEncoding (string) again.
	In Encoding.Default, catch both ArgumentException and NotSupportException.

2007-02-01  Atsushi Enomoto  <atsushi@ximian.com>

	* Encoding.cs : the change broke the build, so reverted part of it.

2007-01-31  Gert Driesen  <drieseng@users.sourceforge.net>

	* Encoding.cs: Also set ParamName of the ArgumentException.

2007-01-31  Gert Driesen  <drieseng@users.sourceforge.net>

	* Encoding.cs: In GetEncoding (int) do not allow codepage value below zero
	and above 0xffff. Modified NotSupportedException to ArgumentException in
	GetEncoding (string).

2006-12-18  Atsushi Enomoto  <atsushi@ximian.com>

	* EncoderFallbackBuffer.cs : implement Reset().

2006-10-25  Ben Maurer  <bmaurer@andrew.cmu.edu>

	* Encoding.cs: Make the GetByteCcount method used fixed pointers
	removes quite a few allocations from Banshee.

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

	* StringBuilder.cs (.ctor): Add a comment.

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

	* Encoding.cs :
	  Consider DecoderFallback and EncoderFallback in 2.0 Equals()
	  and GetHashCode().
	* UTF32Encoding.cs, UTF7Encoding.cs :
	  Fixed GetHashCode() and Equals() as well.
	  Added several missing overrides in 2.0.

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

	* Encoding.cs : implemented IsAlwaysNormalized().
	* Latin1Encoding.cs : IsAlwaysNormalized() does not return false
	  for FormC.

2006-07-18  Kornél Pál  <kornelpal@gmail.com>

	* ASCIIEncoding.cs: Fixed GetString () methods to use ASCII rather
	  than new string (sbyte*, int, int) that uses Encoding.Default.
	* Latin1Encoding.cs: Fixed GetString () methods to use Latin 1 rather
	  than new string (sbyte*, int, int) that uses Encoding.Default.

2006-07-11  Kornél Pál  <kornelpal@gmail.com>

	* StringBuilder.cs: Pad the string with NULL characters when setting
	Length. This is now documented:
	http://msdn2.microsoft.com/en-us/library/system.text.stringbuilder.length.aspx

2006-07-06  Kornél Pál  <kornelpal@gmail.com>

	* CodePageEncoding.cs: Corrected comments.
	* MLangCodePageEncoding.cs: Corrected comments. Removed unnesessary
	  ArgumentExceptions in private constructors.
	* SurrogateEncoder.cs: Corrected comments.

2006-07-05  Kornél Pál  <kornelpal@gmail.com>

	* CodePageEncoding.cs: Return the same real object in subsequent
	  calls to GetRealObject ().
	* MLangCodePageEncoding.cs: Return the same real object in
	  subsequent calls to GetRealObject (). Rename Encoder and Decoder
	  MLangEncoder and MLangDecoder. These classes are not serializable
	  in 1.x although MS.NET 2.0 can deserialize them.
	* SurrogateEncoder.cs: Return the same real object in subsequent
	  calls to GetRealObject ().

2006-07-04  Kornél Pál  <kornelpal@gmail.com>

	* CodePageEncoding.cs: Added comment on usage.
	* MLangCodePageEncoding.cs: Added comment on usage.
	* SurrogateEncoder.cs: Added comment on usage.

2006-07-03  Kornél Pál  <kornelpal@gmail.com>

	* CodePageEncoding.cs: Added.
	* MLangCodePageEncoding.cs: Added.
	* SurrogateEncoder.cs: Added.

2006-06-27  Atsushi Enomoto  <atsushi@ximian.com>

	* EncodingInfo.cs : EncodingName is WebName, not EncodingName.

2006-06-24  Kornél Pál  <kornelpal@gmail.com>

	* UnicodeEncoding.cs: Don't detect byte order. Only readers like
	  StreamReader should detect byte order marks.

2006-06-21  Kornél Pál  <kornelpal@gmail.com>

	* Encoding.cs: Return big-endian UTF-32 in GetEncodings () and
	  GetEncoding (int)

2006-06-06  Kornél Pál  <kornelpal@gmail.com>

	* UnicodeEncoding.cs: Override GetString (byte [], int, int) in
	  profile 1.x as well because performance improvement is worth the
	  signature difference. (Fix regression of r61250.)

2006-05-30  Gert Driesen  <drieseng@users.sourceforge.net>

	* ASCIIEncoding.cs: Marked class ComVisible (true) on 2.0 profile.
	Marked 2.0-only members as ComVisible (false).
	* Decoder.cs: Marked class ComVisible (true) on 2.0 profile. Marked
	2.0-only members as ComVisible (false).
	* Encoder.cs: Marked class ComVisible (true) on 2.0 profile. Marked
	2.0-only members as ComVisible (false).
	* Encoding.cs: Marked class ComVisible (true) on 2.0 profile. Marked
	2.0-only members as ComVisible (false).
	* NormalizationForm.cs: Marked ComVisible (true).
	* StringBuilder.cs: Marked class ComVisible (true) on 2.0 profile. 
	Marked 2.0-only methods as ComVisible (false).
	* UnicodeEncoding.cs: GetString (byte[], int, int) is only available
	in 2.0 profile. Marked 2.0-only methods ComVisible (false). Added
	missing ctor in 2.0 profile, and marked in MonoTODO.
	* UTF7Encoding.cs: Marked class ComVisible (true) on 2.0 profile.
	* UTF8Encoding.cs: Marked 2.0-only methods as ComVisible (false).

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

	* EncodingInfo.cs, Encoding.cs :
	  Implemented Encoding.GetEncodings(). It's so hacky!

2006-04-13  Kornél Pál  <kornelpal@gmail.com>

	* Encoding.cs: GetString (byte []): Wrap GetString (byte [], int, int)
	  as MS.NET does. This is a more reasonable high level wrapper
	  implementation.
	* UnicodeEncoding.cs: GetBytes (string): Implement as a wrapper
	  instead of using GetBytesInternal to be MS.NET compatible.
	  Override GetString (byte [], int, int) to speed up string creation.

2006-04-13  Atsushi Enomoto  <atsushi@ximian.com>

	* ASCIIEncoding.cs : 2.0 decoder fallback support was missing.

2006-03-30  Atsushi Enomoto  <atsushi@ximian.com>

	* Encoder.cs, Decoder.cs : implemented Convert(). Also added argument
	  check in some methods.

2006-03-30  Atsushi Enomoto  <atsushi@ximian.com>

	* ASCIIEncoding.cs : added overriden methods in NET_2_0 (maybe
	  there are optimizations, but for now we need something just works).

2006-03-24  Atsushi Enomoto  <atsushi@ximian.com>

	* UTF8Encoding.cs : made internal implementation as pointer-based,
	  and added pointer-based converter method overloads.

2006-03-21  Kornél Pál  <kornelpal@gmail.com>

	* UnicodeEncoding.cs: Use unsafe code for copying characters to speed
	  up conversion.

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

	* Encoding.cs: Add stub for net 2.0 GetEncodings () method.

2006-02-14  Atsushi Enomoto  <atsushi@ximian.com>

	* UTF8Encoding.cs : Fallback was indicating incorrect index.
	  Fixed bug #77550.

2006-02-10  Atsushi Enomoto  <atsushi@ximian.com>

	* ASCIIEncoding.cs : (GetChars) reduced either one store or one jump
	  in IL. 10% performance improvement.

2006-02-03  Atsushi Enomoto  <atsushi@ximian.com>

	* UTF8Encoding.cs : avoid possible overflow.

2006-02-03  Atsushi Enomoto  <atsushi@ximian.com>

	* UTF8Encoding.cs : In zero-charbuffer case, byte buffer count should
	  be checked. Also it should not ignore leftOver characters even if
	  byte buffer length is 0.

2006-02-03  Atsushi Enomoto  <atsushi@ximian.com>

	* UTF8Encoding.cs : Fast path optimization for InternalGetByteCount()
	  and InternalGetBytes().

2006-02-03  Atsushi Enomoto  <atsushi@ximian.com>

	* UTF8Encoding.cs :
	  actually leftover bits needs more careful handleding. So it's
	  better to be rather close to the original GetBytes().
	  Also changed leftOver handling so that it will be able to support
	  fallback.

2006-02-03  Atsushi Enomoto  <atsushi@ximian.com>

	* UTF8Encoding.cs :
	  GetBytes(string, ...) could reuse InternalGetBytes() using fixed
	  pointers. However, InternalGetBytes() was slower than
	  GetBytes(string, ...), so first replaced existing InternalGetBytes()
	  with GetBytes() internals, and GetBytes(string, ...) switched to 
	  InternalGetBytes(). Now GetBytes() implementation code is reduced
	  to one method.

2006-02-02  Atsushi Enomoto  <atsushi@ximian.com>

	* UTF8Encoding.cs : fast path optimization was pretty insufficient.
	  Now it handles the entire bytes, not just half of them.

2006-02-02  Atsushi Enomoto  <atsushi@ximian.com>

	* UTF8Encoding.cs : zero-length check was wrong. Check it by
	  "charIndex == chars.Length" instead of "charCount == 0".

2006-02-02  Atsushi Enomoto  <atsushi@ximian.com>

	* UTF8Encoding.cs : switched GetBytes() to pointer-based code.
	  Implemented 2.0 pointer-based GetBytes(). 10% perf. improvement.

2006-01-30  Atsushi Enomoto  <atsushi@ximian.com>

	* UTF8Encoding.cs : InternalGetCharCount() optimization again, and
	  this time InternalGetChars() as well.

2006-01-24  Mike Glenn <mglenn@zoominternet.net>

	* StringBuilder.cs: Avoid computing computation for the string
	length twice.

2006-01-24  Atsushi Enomoto  <atsushi@ximian.com>

	* UTF8Encoding.cs : reverted the previous change. Looks like it broke
	  the build.

2006-01-24  Atsushi Enomoto  <atsushi@ximian.com>

	* UTF8Encoding.cs : InternalGetCharCount() optimization: fast path
	  for ASCII range.

2006-01-24  Atsushi Enomoto  <atsushi@ximian.com>

	* UTF7Encoding.cs UTF8Encoding.cs :
	  Fixed bug #77315 (Patch by pawel.sakowski@mind-breeze.com).
	  Make strict check for invalid surrogate.

2006-01-23  Atsushi Enomoto  <atsushi@ximian.com>

	* EncoderFallbackException.cs EncoderExceptionFallback.cs
	  DecoderFallbackBuffer.cs EncoderReplacementFallback.cs
	  EncoderFallbackBuffer.cs DecoderExceptionFallbackBuffer.cs
	  EncoderFallback.cs DecoderReplacementFallbackBuffer.cs
	  DecoderFallbackException.cs DecoderExceptionFallback.cs
	  DecoderReplacementFallback.cs EncoderExceptionFallbackBuffer.cs
	  EncoderReplacementFallbackBuffer.cs :
	  include them in net_2_0bootstrap build.

2006-01-20  Atsushi Enomoto  <atsushi@ximian.com>

	* Decoder.cs : ditto.

2006-01-20  Atsushi Enomoto  <atsushi@ximian.com>

	* Encoder.cs : Fallback should be initialized to have an instance.

2006-01-20  Atsushi Enomoto  <atsushi@ximian.com>

	* Encoding.cs : Cloned instances should not be read-only.

2005-12-08  Atsushi Enomoto  <atsushi@ximian.com>

	* UTF8Encoding.cs : (GetChars) let ABCREM work effectively.

2005-12-08  Atsushi Enomoto  <atsushi@ximian.com>

	* Encoding.cs : now under 2.0 GetBytes(string,...) dispatches to
	  byte*-based GetBytes().
	* UTF8Encoding.cs : avoid extraneous DecoderFallbackBuffer creation
	  which came to happen after introducing fallback buffer.

2005-11-28  Atsushi Enomoto  <atsushi@ximian.com>

	* Encoding.cs, ASCIIEncoding.cs, Latin1Encoding.cs :
	  Added IsSingleByte.

2005-11-28  Atsushi Enomoto  <atsushi@ximian.com>

	* Encoder.cs : added new GetByteCount()/GetBytes() overloads.
	  Added FallbackBuffer.
	* Decoder.cs : added new GetCharCount()/GetChars() overloads.

2005-11-28  Atsushi Enomoto  <atsushi@ximian.com>

	* EncodingInfo.cs : new file.

2005-11-28  Atsushi Enomoto  <atsushi@ximian.com>

	* UTF32Encoding.cs : Sealed. Added the overload which has
	  throwOnInvalid parameter.
	* NormalizationForm.cs : removed [Serializable].

2005-11-28  Atsushi Enomoto  <atsushi@ximian.com>

	* Encoding.cs : added UTF32.

2005-11-28  Atsushi Enomoto  <atsushi@ximian.com>

	* UTF32Encoding.cs : surrogate pairs vanished in GetBytes() when the 
	  endianness is big.

2005-11-28  Atsushi Enomoto  <atsushi@ximian.com>

	* UTF32Encoding.cs : new file.

2005-11-22  Atsushi Enomoto  <atsushi@ximian.com>

	* ASCIIEncoding.cs, Latin1Encoding.cs : added EncoderFallback support.
	* Encoding.cs : changed default fallback selection. Seems like only
	  ASCII and GB18030 uses '?' for replacement.
	* UTF8Encoding.cs : now that Fallback is read only by default, we
	  need special setter.

2005-11-16  Atsushi Enomoto  <atsushi@ximian.com>

	* UTF8Encoding.cs : safer UTF8Decoder ctor.

2005-11-16  Atsushi Enomoto  <atsushi@ximian.com>

	* Decoder.cs : added FallbackBuffer property.
	* UTF8Encoding.cs : In NET_2_0, use DecoderFallbackBuffer instead of
	  "throwOnInvalid".

2005-11-15  Atsushi Enomoto  <atsushi@ximian.com>

	* DecoderReplacementFallbackBuffer.cs : it does not have to preserve
	  byte buffer.
	* EncoderReplacementFallbackBuffer.cs : implemented.
	* DecoderReplacementFallback.cs, EncoderReplacementFallback.cs :
	  Removed MonoTODO.

2005-11-15  Atsushi Enomoto  <atsushi@ximian.com>

	* DecoderFallbackBuffer.cs : Reset() does nothing here.
	* DecoderReplacementFallbackBuffer.cs : implemented, but no idea how
	  bytesUnknown is used.

2005-11-15  Atsushi Enomoto  <atsushi@ximian.com>

	* Encoding.cs : added ICloneable, Clone() and new GetEncoding().

2005-11-15  Atsushi Enomoto  <atsushi@ximian.com>

	* Encoding.cs : Added IsReadOnly, DecoderFallback and EncoderFallback.
	* Encoder.cs : Added Fallback property.
	* Decoder.cs : Added Fallback property.

2005-11-15  Atsushi Enomoto  <atsushi@ximian.com>

	* EncoderFallbackBuffer.cs, EncoderFallback.cs,
	  EncoderExceptionFallbackBuffer.cs,
	  EncoderReplacementFallbackBuffer.cs,
	  EncoderFallbackException.cs,
	  EncoderExceptionFallback.cs,
	  EncoderReplacementFallback.cs : new files (not actually used yet).
	* DecoderExceptionFallback.cs, DecoderFallbackException.cs,
	  DecoderReplacementFallback.cs : [Serializable] and sealed.
	* DecoderReplacementFallbackBuffer.cs : Reset() was missing.

2005-11-14  Atsushi Enomoto  <atsushi@ximian.com>

	* DecoderFallbackBuffer.cs, DecoderFallback.cs,
	  DecoderExceptionFallbackBuffer.cs,
	  DecoderReplacementFallbackBuffer.cs,
	  DecoderFallbackException.cs,
	  DecoderExceptionFallback.cs,
	  DecoderReplacementFallback.cs : new files (not actually used yet).

2005-11-14  Miguel de Icaza  <miguel@novell.com>

	* ASCIIEncoding.cs, Encoding: Another snack, just a few methods
	missing.  

	Also add some checks that were missing.

2005-11-11  Sebastien Pouliot  <sebastien@ximian.com>

	* StringBuilder.cs: Fix ISerializable.GetObjectData (remoting tests 
	were failing under 2.0) and two possible integer overflow in CopyTo.

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

	* Encoding.cs, UnicodeEncoding.cs: A few 2.x methods. 

	* StringBuilder.cs (Text): Added serialization support in 2.x. 

2005-10-22  Jonathan Pryor  <jonpryor@vt.edu>

	* UTF8Encoding.cs (InternalGetChars/InternalGetCharCount): Fix lead byte
	  check logic for 6 octet sequences.  ((ch & 0xFC) == 0xFC) is always true 
	  for 0xFF, even though 0xFF isn't a valid lead byte.  It should be 
	  ((ch & 0xFE) == 0xFC).

2005-08-25  Atsushi Enomoto  <atsushi@ximian.com>

	* UTF8Encoding.cs : (InternalGetChars/InternalGetCharCount):
	  Don't exclude FEFF in the resulting text.

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

	* StringBuilder.cs (Replace): Do the correct thing when we replace
	with a longer string. Thanks to Alexander Beznozdrev
	<abeznozdrev@croc.ru>

2005-05-26  Ben Maurer  <bmaurer@ximian.com>

	* Encoding.cs: Use static object for locking. `volatile' to
	prevent double checked locking error.

	* StringBuilder.cs: Remove = null inits on fields, saves a few
	instructions. When we compare _cached_str == _str, we are only
	interested in pointer based equality, so just do that.

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

	* StringBuilder.cs (InternalEnsureCapacity): It is possible that
	the size we attempt to grow to is more than the max capacity, but
	that a smaller size will do. In this case, don't throw an
	exception. Fixes #72244

2005-04-16  Atsushi Enomoto  <atsushi@ximian.com>

	* NormalizationForm.cs : new file.

2005-03-20  Ben Maurer  <bmaurer@ximian.com>

	* StringBuilder.cs (set_Length): If we set the length, we must
	clobber the cached string.

2005-03-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* UnicodeEncoding.cs: same fix (\uFEFF) but for Unicode. Patch by
	Svetlana Zholkovsky.

2005-03-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* UTF7Encoding.cs: fix for characters encoded as a shifted sequence
	whose length is greater than 3. Patch by Svetlana Zholkovsky.

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

	* StringBuilder.cs (Remove): We need to do the check that the
	string isnt being cached *before* we munge it.

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

	* StringBuilder.cs: Don't allocate memory on the .ctor, do it
	lazily. This saves us lots of memory if you only use the
	stringbuilder once. Also, we can allocate on the second Append,
	which might reduce the number of buffers allocated.

2005-01-14 Lluis Sanches Gual  <lluis@novell.com>

	* StringBuilder.cs: Improved parameter check.

2005-01-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* StringBuilder.cs: when creating the StringBuilder from a string, the
	maximum capacity remains Int32.MaxValue.

2005-01-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* StringBuilder.cs: throw if the new size is greater than the maximum
	capacity for the StringBuilder. Patch by luke@octerbar.net. Fixes
	bug #62422.

2004-12-15  Sebastien Pouliot  <sebastien@ximian.com>

	* UTF7Encoding.cs:  Fixed warning for unused variable.

2004-09-30  Juraj Skripsky <js@hotfeet.ch>

	* Encoding.cs: Add encoding name "latin1" for compatibility with
	MS.NET.

2004-09-25  Zoltan Varga  <vargaz@freemail.hu>

	* StringBuilder.cs (Append): Use InternalStrcpy to append char arrays.

2004-09-09  Tim Coleman <tim@timcoleman.com>

	* StringBuilder.cs: Added AppendLine methods for Fx 2.0

2004-06-23  Sebastien Pouliot  <sebastien@ximian.com>

	* UTF7Encoding.cs: Fixed decoding table. Fixed char count calculation.
	Follow the RFC1642 rules for "overbits".

2004-06-15  Gert Driesen <drieseng@users.sourceforge.net>

	* ASCIIEncoding.cs: added TODO for serialization
	* StringBuilder.cs: added TODO for serialization
	* UnicodeEncoding.cs: added TODO for serialization
	* UTF7Encoding.cs: added TODO for serialization
	* UTF8Encoding.cs: added TODO for serialization

2004-06-10  Gert Driesen <drieseng@users.sourceforge.net>

	* Encoding.cs: Marked protected internal field as internal to
	fix API signature

2004-06-07  Atsushi Enomoto  <atsushi@ximian.com>

	* UTF8Encoding.cs : Length check must be done only when the character
	  sequence is valid (i.e. should not check when it is overlongs).
	  See also TestThrowOnInvalid().

2004-06-07  Atsushi Enomoto  <atsushi@ximian.com>

	* UTF8Encoding.cs : Added Overlong check to InternalGetCharCount().

2004-06-07  Atsushi Enomoto  <atsushi@ximian.com>

	* UTF8Encoding.cs : Throw overlongs error only when throwOnInvalid is
	  true. Otherwise just ignore them.

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

	* StringBuilder.cs: Fixed potential integer overflows in several 
	methods.

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

	* UTF8Encoding.cs: Moved charCount-- after the check for surrogate 
	pair. This fix bug #57009 (and 2 failing unit tests). Added code
	to check for some (like MS) overlongs.

2004-05-03 Lluis Sanches Gual  <lluis@ximian.com>

	* Encoding.cs: Use name const to load I18N assembly.

2004-04-25  Andreas Nahr <ClassDevelopment@A-SoftTech.com>

	* Encoding.cs: Call shortcut String.ToLowerInvariant

2004-04-13  Miguel de Icaza  <miguel@ximian.com>

	* Encoding.cs: Use new internal codepage setup.

2004-04-10  Atsushi Enomoto  <atsushi@ximian.com>

	* UTF7Encoding.cs : GetMaxByteCount() was based on incorrect formula.

2004-03-19  Dick Porter  <dick@ximian.com>

	* UnicodeEncoding.cs: GetCharCount(), GetChars(): Check for the
	BOM at the beginning of the range of characters we're interested
	in, not at the beginning of the array.  Fixes bug 51531.

2004-03-10  Juraj Skripsky <juraj@hotfeet.ch>

	* StringBuilder.cs
	(Insert int, char[]): fix by using new string(char[]) instead of
	char[].ToString() and simplify.
	(Insert int, string, int): add LAMESPEC note.
	(Insert int char[], int, int): handle value==null according to spec. 
	Use a string instead of char array + Array.Copy (gonzalo)

2004-03-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* StringBuilder.cs:
	(Append (string)): remove redundant check.

2004-01-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* StringBuilder.cs:
	(Remove): fixed offsets when copying and set the new size. Fixes bug
	#53240.

2004-01-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* StringBuilder.cs: added checks for null in a few Append methods.

Tue Jan 13 22:23:25 CET 2004 Paolo Molaro <lupus@ximian.com>

	* StringBuilder.cs: fixed start offset in Append(char).

2004-01-12  Patrik Torstensson

	* StringBuilder.cs: new implementation that uses
	string as a buffer instead of a array of chars.

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

	* UTF8Encoding.cs (GetBytes string): Do not call base
	The version in Encoding will call string.ToCharArray (),
	allocating an extra array. By calling the better method
	in our own class we can save memory.

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

	* StringBuilder.cs (Insert int, char): It is really silly and
	wasteful to allocate an array here. We can just copy the value
	over.

2003-11-11  Miguel de Icaza  <miguel@ximian.com>

	* Encoding.cs: Use an internal variable to track the parameters of
	each encoder, since the .NET API does not expose virtual methods
	in the child classes, we should not depend on that.
	
	* ASCIIEncoding.cs, UTF7Encoding, UTF8Encoding, UnicodeEncoding:
	Initialize the parameters for base class encoding here.

2003-09-01  Miguel de Icaza  <miguel@ximian.com>

	* Encoding.cs (UTF8Unmarked): make it also not error out on
	invalid input, that is what the Microsoft default is for the
	StreamReader and BinaryReader expect (our main consumers).

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

	* StringBuilder.cs
	(AppendFormat) Use FormatHelper in System.String to avoid
	allocating an extra StringBuilder.
	(Append string, int, int), (Append char, int): Both were
	allocating extra strings.

2003-06-05  Nick Drochak  <ndrochak@gol.com>

	* UTF8Encoding.cs: Cleanups according to class status page

2003-05-10  Miguel de Icaza  <miguel@ximian.com>

	* Encoding.cs (GetEncoding): Add all the aliases documented in the
	framework.  We were missing a few.
	
	Reorganize the table.  Also, convert the input name into the
	lower-case - to _ before we compare against our table.
	
2003-05-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* StringBuilder.cs: fixed bug #41397.

2003-04-12  Miguel de Icaza  <miguel@ximian.com>

	* Encoding.cs: Enabled the code paths that we did have commented
	out, they seem to work now.

Fri Apr 11 08:29:50 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* StringBuilder.cs: cache the result from ToString().

2003-03-18  Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>

	* UnicodeEncoding.cs: changed WebName from unicodeFFFE to utf-16be.
	  (unicodeFFFE is MS compliant, but isn't valid IANA encoding name.)

2003-03-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* ASCIIEncoding.cs: fixed bug #38984.

2003-03-05  Aleksey Demakov <avd@openlinksw.com>

	* ASCIIEncoding.cs:
	* Latin1Encoding.cs: fix GetString (byte[]) and
	GetString (byte[], int, int) for zero-length case.

2003-02-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* Latin1Encoding.cs: added Serializable attribute.

2003-02-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* Encoding.cs: removed UnixConsoleEncoding.

2003-01-30  Zoltan Varga  <vargaz@freemail.hu>

	* StringBuilder.cs: fix the constructor: 'value' can be NULL,
	'capacity' must be >=0, use defaultCapacity only if capacity equals 0.
	This fixes the StringBuilder unit tests.

2003-01-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* StringBuilder.cs: fixed typo in set_Length.

2002-12-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* Encoding.cs: g_get_encoding () returns "ASCII". In Default, when the
	encoding is not found, default to UTF8Unmarked. Removed comment in
	UnixConsoleEncoding, because it's now Default, which gets the 
	encoding internally using g_get_encoding ().

2002-12-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* StringBuilder.cs: fixed constructor. Thanks to marcusU for reporting.

Tue Nov 19 13:03:27 CET 2002 Paolo Molaro <lupus@ximian.com>

	* UTF8Encoding.cs: fix GetByteCount (), too.

2002-11-19  Miguel de Icaza  <miguel@ximian.com>

	* UnicodeEncoding.cs: the bytemark should only be used to return
	information in GetPreamble, not to actually encode the information
	on the stream.  That is taken care of by the Stream classes.

	* UTF8Encoding.cs: ditto.

2002-11-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* StringBuilder.cs: only move the remaining chars in Remove.

2002-11-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* Encoding.cs: unixConsoleEncoding is now the same as Default. Avoid
	locking whenever possible.

2002-10-30  Miguel de Icaza  <miguel@ximian.com>

	* Encoding.cs (UTF8Unmarked): New static property, used to return
	a no-markers UTf8 encoder, used in a few places in the class library.

2002-09-06  Miguel de Icaza  <miguel@ximian.com>

	* Encoding.cs (UTF8, Unicode): Create with a preamble, that is
	what the Microsoft version does.

	(UnixConsoleEncoding): New internal method, used to get the
	encoding, in the future, this should pull the locale, map to
	charset and then code page. 

Wed Sep 4 14:01:25 CEST 2002 Paolo Molaro <lupus@ximian.com>

	* Encoding.cs: use icall to get default codepage.
	* DefaultEncoding.cs: remove useless class.

Mon Aug 26 16:44:54 CEST 2002 Paolo Molaro <lupus@ximian.com>

	* *.cs: change to conform to mono coding style.

2002-08-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* ASCIIEncoding.cs:
	* Decoder.cs:
	* Encoder.cs:
	* Encoding.cs:
	* UTF7Encoding.cs:
	* UTF8Encoding.cs:
	* UnicodeEncoding.cs: added Serializable attribute.

2002-08-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* StringBuilder.cs: improved performace by using String.InternalCopyTo
	instead of using ToCharArray all over the place (more that 50% of
	speed improvement when using Append).

Wed Aug 21 20:02:04 CEST 2002 Paolo Molaro <lupus@ximian.com>

	* *.cs: imported the code donated by Rhys Weatherley
	<rweather@southern-storm.com.au>.

2002-08-18  Dick Porter  <dick@ximian.com>

	* Encoding.cs: Make GetString() return a useful representation of
	the bytes, rather than "System.Char[]"

2002-08-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* StringBuilder.cs: added IndexerName to indexer.

2002-08-01  Jason Diamond <jason@injektilo.org>

	* Encoding.cs: Use GetByteCount instead of GetMaxByteCount when
	converting chars to bytes.

2002-07-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* StringBuilder.cs: updated comments. MaxCapacity always returns
	Int32.MaxValue.

2002-06-21  Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* StringBuilder.cs: implemented AppendFormat methods using
	String.Format. Thanks Paolo!

	This makes xsp generate correct C# output in linux :-). I still need
	to do more testing, though.

Mon Jun 3 12:58:40 CEST 2002 Paolo Molaro <lupus@ximian.com>

	* ASCIIEncoding.cs: fixed handling of 0 bytecount.

2002-05-19  Martin Baulig  <martin@gnome.org>

	* Encoder.cs (IConvEncoder.GetByteCount, IConvEncoder.GetBytes):
	Added exception handling.

	* Decoder.cs (IConvDecoder.GetCharCount, IConvDecoder.GetChars):
	Added exception handling.

2002/04/02  Nick Drochak <ndrochak@gol.com>

	* StringBuilder.cs (Append): Removed obsolete overload.

2002-03-21  Mike Kestner  <mkestner@speakeasy.net>

	* ASCIIEncoding.cs : Fix off by one error in Get(Char|Byte)Count.

Thu Mar 21 17:38:19 CET 2002 Paolo Molaro <lupus@ximian.com>

	* StringBuilder.cs: no need to intern the string returned by ToString().

2002-03-17  Mike Kestner  <mkestner@speakeasy.net>

	* ASCIIEncoding.cs: Implement all the overridden methods. No longer
	  dependent on iconv icalls.
	* Encoding.cs: Fix count bugs in GetBytes and GetChars. Add virtual
	  to GetBytes.

Wed Mar 13 00:26:29 CET 2002 Paolo Molaro <lupus@ximian.com>

	* StringBuilder.cs: make ToString() return a interned string, this
	seems to be required to make switch on string work.

Fri Mar 8 17:29:58 CET 2002 Paolo Molaro <lupus@ximian.com>

	* StringBuilder.cs: make Append(char) do the smart thing.

2002-01-05  Ravi Pratap  <ravi@ximian.com>

	* ASCIIEncoding.cs, Encoding.cs, UTF7Encoding.cs, 
	UnicodeEncoding.cs: MonoTODO attribute marking.

	* StringBuilder.cs : Ditto.
	
Wed Nov 14 17:05:22 CET 2001 Paolo Molaro <lupus@ximian.com>

	* Encoding.cs: renamed some fields.
	* StringBuilder.cs: CLSCompliant updates.

2001-10-29  Nick Drochak  <ndrochak@gol.com>

	* StringBuilder.cs: Throw exceptions when constructor paramter(s) are
		invalid. Just like MS does (as best as I can tell).

	Tests for these exceptions are now added to the unit tests as well.

2001-10-25  Nick Drochak  <ndrochak@gol.com>

	* StringBuilder.cs: Throw exception if they try to make a StringBuilder
		whose capacity is greater than the MaxCapacity.

	I added some tests for the constructors and the above exception. More
	coming soon.

2001-10-23  Nick Drochak  <ndrochak@gol.com>

	* StringBuilder.cs: Refactored constructor code into just one
	constructor. All the other construtors call it. Also supplied missing
	constructors so the class has all those in the spec.

	Added the MaxCapacity property as well, however this needs to be 
	completed to return a value is related to the available system memory.

2001-10-07  Miguel de Icaza  <miguel@ximian.com>

	* Encoding.cs, UTF8Encoding.cs, UTF7Encoding.cs, ASCIIEncoding.cs,
	UnicodeEncoding.cs: Corrected API.

	* UTF8Encoding.cs: Checked in changes from Rafael.

2001-08-28  Dietmar Maurer  <dietmar@ximian.com>

	* UTF8Encoding.cs: impl. clumsy GetBytes

2001-07-16  Marcin Szczepanski <marcins@zipworld.com.au>

	* StringBuilder.cs (Text): Fixed.

	* StringBuilderTest.cs: Implement Test suite.

2001-07-12  Marcin Szczepanski <marcins@zipworld.com.au>

	* StringBuilder.cs: Implemented.

	The only methods left unimplemented are the AppendFormat( ... )
	ones just because it's probably better to wait until some of the
	Format related classes are implemented.  I've put that as a TODO
	comment at the top and created the methods with a "nop" body.

2001-06-26  Sean MacIsaac  <macisaac@ximian.com>

	* UnicodeEncoding.cs: Members added so that a clean compile is
	possible.

	* ASCIIEncoding.cs: Members added so that a clean compile is
	possible.

	* UTF7Encoding.cs: Members added so that a clean compile is
	possible.

	* UTF8Encoding.cs: Members added so that a clean compile is
	possible.

	* Encoding.cs: All public members included.  Most members
	unimplemented.
