2001-07-14 Jeffrey Stedfast <fejj@ximian.com>
authorJeffrey Stedfast <fejj@novell.com>
Sun, 15 Jul 2001 04:11:49 +0000 (04:11 -0000)
committerJeffrey Stedfast <fejj@novell.com>
Sun, 15 Jul 2001 04:11:49 +0000 (04:11 -0000)
* String.cs: A tom of compile fixes, although we still don't compile.

* IConvertible.cs: The To*Int64() methods return *Int64's, not
*Int32's. Also, it's ToDateTime() not ToDateType().

svn path=/trunk/mcs/; revision=142

mcs/class/corlib/System.Text/Encoding.cs
mcs/class/corlib/System.Text/StringBuilder.cs
mcs/class/corlib/System.Text/UnicodeEncoding.cs
mcs/class/corlib/System/ChangeLog
mcs/class/corlib/System/IConvertible.cs
mcs/class/corlib/System/String.cs

index 49c43afec3e78527e8ee0b5da2f51f05a2e0fcc1..178975441f3df8e47d520a688392076a6d8da000 100755 (executable)
@@ -1,3 +1,4 @@
+// -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
 //
 // System.Text.Encoding.cs
 //
index 36780051691f27f5546447548a9b23d4801aeaf9..ba6bebcf24b23e1d7c4f95ca45d68dbb3c391e3c 100644 (file)
@@ -1,3 +1,4 @@
+// -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-\r
 //\r
 // System.Text.StringBuilder\r
 //\r
 //\r
 \r
 namespace System.Text {\r
-        public sealed class StringBuilder {\r
-\r
-                const int defaultCapacity = 16;\r
-\r
-                private int sCapacity;\r
-                private int sLength;\r
-                private char[] sString;\r
-\r
-                public StringBuilder() {\r
-\r
-                        // The MS Implementation uses the default\r
-                        // capacity for a StringBuilder.  The spec\r
-                        // says it's up to the implementer, but \r
-                        // we'll do it the MS way just in case.\r
-                                \r
-                        sString = new char[ defaultCapacity ];\r
-                        sCapacity = defaultCapacity;\r
-                        sLength = 0;\r
-                }\r
-\r
-                public StringBuilder( int capacity ) {\r
-                        if( capacity < defaultCapacity ) {\r
-                                        // The spec says that the capacity\r
-                                        // has to be at least the default capacity\r
-                                capacity = defaultCapacity;\r
-                        }\r
-\r
-                        sString = new char[capacity];\r
-                        sCapacity = capacity;\r
-                        sLength = 0;\r
-                }\r
-\r
-                public StringBuilder( string str ) {\r
-                \r
-                        if( str.Length < defaultCapacity ) {    \r
-                                char[] tString = str.ToCharArray();\r
-                                sString = new char[ defaultCapacity ];\r
-                                Array.Copy( tString, sString, str.Length );\r
-                                sLength = str.Length;\r
-                                sCapacity = defaultCapacity;\r
-                        } else {\r
-                                sString = str.ToCharArray();\r
-                                sCapacity = sString.Length;\r
-                                sLength = sString.Length;\r
-                        }\r
-                }\r
-        \r
-                public int Capacity {\r
-                        get {\r
-                                return sCapacity;\r
-                        }\r
-\r
-                        set {\r
-                                if( value < sLength ) {\r
-                                        throw new ArgumentException( "Capacity must be > length" );\r
-                                } else {\r
-                                        char[] tString = new char[value];               \r
-                                        Array.Copy( sString, tString, sLength );\r
-                                        sString = tString;\r
-                                        sCapacity = sString.Length;\r
-                                }\r
-                        }\r
-                }\r
-\r
-\r
-                public int Length {\r
-                        get {\r
-                                return sLength;\r
-                        }\r
-\r
-                        set {\r
-                                if( value < 0 || value > Int32.MaxValue) {\r
-                                        throw new ArgumentOutOfRangeException();\r
-                                } else {\r
-                                        if( value < sLength ) {\r
-                                                // Truncate current string at value\r
-\r
-                                                // LAMESPEC:  The spec is unclear as to what to do\r
-                                                // with the capacity when truncating the string.\r
-                                                //\r
-                                                // Don't change the capacity, as this is what\r
-                                                // the MS implementation does.\r
-\r
-                                                sLength = value;\r
-                                        } else {\r
-                                                // Expand the capacity to the new length and\r
-                                                // pad the string with spaces.\r
-                                                \r
-                                                // LAMESPEC: The spec says to put the spaces on the\r
-                                                // left of the string however the MS implementation\r
-                                                // puts them on the right.  We'll do that for \r
-                                                // compatibility (!)\r
-\r
-                                                char[] tString = new char[ value ];\r
-                                                int padLength = value - sLength;\r
-                                                \r
-                                                string padding = new String( ' ', padLength );\r
-                                                Array.Copy( sString, tString, sLength );\r
-                                                Array.Copy( padding.ToCharArray(), 0, tString, sLength, padLength );\r
-                                                sString = tString;\r
-                                                sLength = sString.Length;\r
-                                                sCapacity = value;\r
-                                        }\r
-                                }\r
-                        }\r
-                }\r
-\r
-                public char this[ int index ] {\r
-                        get {\r
-\r
-                                if( index >= sLength || index < 0 ) {\r
-                                        throw new IndexOutOfRangeException();\r
-                                }\r
-                                return sString[ index ];\r
-                        \r
-\r
-                        set {\r
-                                if( index >= sLength || index < 0 ) {\r
-                                        throw new IndexOutOfRangeException();\r
-                                }\r
-                                sString[ index ] = value;\r
-                        }\r
-                }\r
-\r
-                public override string ToString() {\r
-                        return ToString(0, sLength);\r
-                }\r
-\r
-                public string ToString( int startIndex, int length ) {\r
-                        if( startIndex < 0 || length < 0 || startIndex + length > sLength ) {\r
-                                throw new ArgumentOutOfRangeException();\r
-                        }\r
-        \r
-                        return new String( sString, startIndex, length );\r
-                }\r
-\r
-                public int EnsureCapacity( int capacity ) {\r
-                        if( capacity < 0 ) {\r
-                                throw new ArgumentOutOfRangeException( \r
+       public sealed class StringBuilder {\r
+\r
+               const int defaultCapacity = 16;\r
+\r
+               private int sCapacity;\r
+               private int sLength;\r
+               private char[] sString;\r
+\r
+               public StringBuilder() {\r
+\r
+                       // The MS Implementation uses the default\r
+                       // capacity for a StringBuilder.  The spec\r
+                       // says it's up to the implementer, but \r
+                       // we'll do it the MS way just in case.\r
+                               \r
+                       sString = new char[ defaultCapacity ];\r
+                       sCapacity = defaultCapacity;\r
+                       sLength = 0;\r
+               }\r
+\r
+               public StringBuilder( int capacity ) {\r
+                       if( capacity < defaultCapacity ) {\r
+                                       // The spec says that the capacity\r
+                                       // has to be at least the default capacity\r
+                               capacity = defaultCapacity;\r
+                       }\r
+\r
+                       sString = new char[capacity];\r
+                       sCapacity = capacity;\r
+                       sLength = 0;\r
+               }\r
+\r
+               public StringBuilder( string str ) {\r
+               \r
+                       if( str.Length < defaultCapacity ) {    \r
+                               char[] tString = str.ToCharArray();\r
+                               sString = new char[ defaultCapacity ];\r
+                               Array.Copy( tString, sString, str.Length );\r
+                               sLength = str.Length;\r
+                               sCapacity = defaultCapacity;\r
+                       } else {\r
+                               sString = str.ToCharArray();\r
+                               sCapacity = sString.Length;\r
+                               sLength = sString.Length;\r
+                       }\r
+               }\r
+       \r
+               public int Capacity {\r
+                       get {\r
+                               return sCapacity;\r
+                       }\r
+\r
+                       set {\r
+                               if( value < sLength ) {\r
+                                       throw new ArgumentException( "Capacity must be > length" );\r
+                               } else {\r
+                                       char[] tString = new char[value];              \r
+                                       Array.Copy( sString, tString, sLength );\r
+                                       sString = tString;\r
+                                       sCapacity = sString.Length;\r
+                               }\r
+                       }\r
+               }\r
+\r
+\r
+               public int Length {\r
+                       get {\r
+                               return sLength;\r
+                       }\r
+\r
+                       set {\r
+                               if( value < 0 || value > Int32.MaxValue) {\r
+                                       throw new ArgumentOutOfRangeException();\r
+                               } else {\r
+                                       if( value < sLength ) {\r
+                                               // Truncate current string at value\r
+\r
+                                               // LAMESPEC:  The spec is unclear as to what to do\r
+                                               // with the capacity when truncating the string.\r
+                                               //\r
+                                               // Don't change the capacity, as this is what\r
+                                               // the MS implementation does.\r
+\r
+                                               sLength = value;\r
+                                       } else {\r
+                                               // Expand the capacity to the new length and\r
+                                               // pad the string with spaces.\r
+                                               \r
+                                               // LAMESPEC: The spec says to put the spaces on the\r
+                                               // left of the string however the MS implementation\r
+                                               // puts them on the right.  We'll do that for \r
+                                               // compatibility (!)\r
+\r
+                                               char[] tString = new char[ value ];\r
+                                               int padLength = value - sLength;\r
+                                               \r
+                                               string padding = new String( ' ', padLength );\r
+                                               Array.Copy( sString, tString, sLength );\r
+                                               Array.Copy( padding.ToCharArray(), 0, tString, sLength, padLength );\r
+                                               sString = tString;\r
+                                               sLength = sString.Length;\r
+                                               sCapacity = value;\r
+                                       }\r
+                               }\r
+                       }\r
+               }\r
+\r
+               public char this[ int index ] {\r
+                       get {\r
+\r
+                               if( index >= sLength || index < 0 ) {\r
+                                       throw new IndexOutOfRangeException();\r
+                               }\r
+                               return sString[ index ];\r
+                       } \r
+\r
+                       set {\r
+                               if( index >= sLength || index < 0 ) {\r
+                                       throw new IndexOutOfRangeException();\r
+                               }\r
+                               sString[ index ] = value;\r
+                       }\r
+               }\r
+\r
+               public override string ToString() {\r
+                       return ToString(0, sLength);\r
+               }\r
+\r
+               public string ToString( int startIndex, int length ) {\r
+                       if( startIndex < 0 || length < 0 || startIndex + length > sLength ) {\r
+                               throw new ArgumentOutOfRangeException();\r
+                       }\r
+       \r
+                       return new String( sString, startIndex, length );\r
+               }\r
+\r
+               public int EnsureCapacity( int capacity ) {\r
+                       if( capacity < 0 ) {\r
+                               throw new ArgumentOutOfRangeException( \r
                                                                        "Capacity must be greater than 0." );\r
-                        }\r
-\r
-                        if( capacity <= sCapacity ) {\r
-                                return sCapacity;\r
-                        } else {\r
-                                Capacity = capacity;\r
-                                return sCapacity;\r
-                        }\r
-                }\r
-\r
-                public bool Equals( StringBuilder sb ) {\r
-                        if( this.ToString() == sb.ToString() ) {\r
-                                return true;\r
-                        } else {\r
-                                return false;\r
-                        }\r
-                }\r
-\r
-                public StringBuilder Remove( int startIndex, int length ) {\r
-                        if( startIndex < 0 || length < 0 || startIndex + length > sLength ) {\r
-                                throw new ArgumentOutOfRangeException();\r
-                        }\r
-\r
-                        // Copy everything after the 'removed' part to the start \r
+                       }\r
+\r
+                       if( capacity <= sCapacity ) {\r
+                               return sCapacity;\r
+                       } else {\r
+                               Capacity = capacity;\r
+                               return sCapacity;\r
+                       }\r
+               }\r
+\r
+               public bool Equals( StringBuilder sb ) {\r
+                       if( this.ToString() == sb.ToString() ) {\r
+                               return true;\r
+                       } else {\r
+                               return false;\r
+                       }\r
+               }\r
+\r
+               public StringBuilder Remove( int startIndex, int length ) {\r
+                       if( startIndex < 0 || length < 0 || startIndex + length > sLength ) {\r
+                               throw new ArgumentOutOfRangeException();\r
+                       }\r
+\r
+                       // Copy everything after the 'removed' part to the start \r
                                                // of the removed part and truncate the sLength\r
 \r
-                        Array.Copy( sString, startIndex + length, sString, \r
+                       Array.Copy( sString, startIndex + length, sString, \r
                                                        startIndex, length );\r
 \r
-                        sLength -= length;\r
-                        return this;\r
-                }                               \r
+                       sLength -= length;\r
+                       return this;\r
+               }                              \r
 \r
-                public StringBuilder Replace( char oldChar, char newChar ) {\r
-                \r
-                                return Replace( oldChar, newChar, 0, sLength);\r
-                }\r
+               public StringBuilder Replace( char oldChar, char newChar ) {\r
+               \r
+                               return Replace( oldChar, newChar, 0, sLength);\r
+               }\r
 \r
-                public StringBuilder Replace( char oldChar, char newChar, int startIndex, int count ) {\r
-                        if( startIndex + count > sLength || startIndex < 0 || count < 0 ) {\r
-                                throw new ArgumentOutOfRangeException();\r
-                        }\r
+               public StringBuilder Replace( char oldChar, char newChar, int startIndex, int count ) {\r
+                       if( startIndex + count > sLength || startIndex < 0 || count < 0 ) {\r
+                               throw new ArgumentOutOfRangeException();\r
+                       }\r
 \r
-                        for( int replaceIterate = startIndex; replaceIterate < startIndex + count; replaceIterate++ ) {\r
-                                if( this[replaceIterate] == oldChar ) {\r
-                                        this[replaceIterate] = newChar;\r
-                                }\r
-                        }\r
+                       for( int replaceIterate = startIndex; replaceIterate < startIndex + count; replaceIterate++ ) {\r
+                               if( this[replaceIterate] == oldChar ) {\r
+                                       this[replaceIterate] = newChar;\r
+                               }\r
+                       }\r
 \r
-                        return this;\r
-                }\r
+                       return this;\r
+               }\r
 \r
-                public StringBuilder Replace( string oldValue, string newValue ) {\r
-                        return Replace( oldValue, newValue, 0, sLength );\r
-                }\r
+               public StringBuilder Replace( string oldValue, string newValue ) {\r
+                       return Replace( oldValue, newValue, 0, sLength );\r
+               }\r
 \r
-                public StringBuilder Replace( string oldValue, string newValue, int startIndex, int count ) {\r
-                        string startString = this.ToString();\r
-                        StringBuilder newStringB = new StringBuilder();\r
-                        string newString;\r
+               public StringBuilder Replace( string oldValue, string newValue, int startIndex, int count ) {\r
+                       string startString = this.ToString();\r
+                       StringBuilder newStringB = new StringBuilder();\r
+                       string newString;\r
 \r
-                        if( oldValue == null ) { \r
-                                throw new ArgumentNullException(\r
+                       if( oldValue == null ) { \r
+                               throw new ArgumentNullException(\r
                                                                        "The old value cannot be null.");\r
-                        }\r
+                       }\r
 \r
-                        if( startIndex < 0 || count < 0 || startIndex + count > sLength ) {\r
-                                throw new ArgumentOutOfRangeException();\r
-                        }\r
+                       if( startIndex < 0 || count < 0 || startIndex + count > sLength ) {\r
+                               throw new ArgumentOutOfRangeException();\r
+                       }\r
 \r
-                        if( oldValue.Length == 0 ) {\r
-                                throw new ArgumentException(\r
+                       if( oldValue.Length == 0 ) {\r
+                               throw new ArgumentException(\r
                                                                        "The old value cannot be zero length.");\r
-                        }\r
+                       }\r
 \r
-                        int nextIndex = startIndex; // Where to start the next search\r
-                        int lastIndex = nextIndex;  // Where the last search finished\r
+                       int nextIndex = startIndex; // Where to start the next search\r
+                       int lastIndex = nextIndex;  // Where the last search finished\r
 \r
-                        while( nextIndex != -1 ) {\r
-                                nextIndex = startString.IndexOf( oldValue, lastIndex);                                  \r
-                                if( nextIndex != -1 ) {\r
-                                        // The MS implementation won't replace a substring \r
+                       while( nextIndex != -1 ) {\r
+                               nextIndex = startString.IndexOf( oldValue, lastIndex);                            \r
+                               if( nextIndex != -1 ) {\r
+                                       // The MS implementation won't replace a substring \r
                                                                                // if that substring goes over the "count"\r
                                                                                // boundary, so we'll make sure the behaviour \r
                                                                                // here is the same.\r
 \r
-                                        if( nextIndex + oldValue.Length < startIndex + count ) {\r
+                                       if( nextIndex + oldValue.Length < startIndex + count ) {\r
 \r
-                                                // Add everything to the left of the old \r
+                                               // Add everything to the left of the old \r
                                                                                                // string\r
-                                                newStringB.Append( startString.Substring( lastIndex, nextIndex - lastIndex ) );\r
-        \r
-                                                // Add the replacement string\r
-                                                newStringB.Append( newValue );\r
-                                                \r
-                                                // Set the next start point to the \r
+                                               newStringB.Append( startString.Substring( lastIndex, nextIndex - lastIndex ) );\r
+       \r
+                                               // Add the replacement string\r
+                                               newStringB.Append( newValue );\r
+                                               \r
+                                               // Set the next start point to the \r
                                                                                                // end of the last match\r
-                                                lastIndex = nextIndex + oldValue.Length;\r
-                                        } else {\r
-                                                // We're past the "count" we're supposed to replace within\r
-                                                nextIndex = -1;\r
-                                                newStringB.Append( \r
+                                               lastIndex = nextIndex + oldValue.Length;\r
+                                       } else {\r
+                                               // We're past the "count" we're supposed to replace within\r
+                                               nextIndex = -1;\r
+                                               newStringB.Append( \r
                                                                                                        startString.Substring( lastIndex ) );\r
-                                        }\r
-\r
-                                } else {\r
-                                        // Append everything left over\r
-                                        newStringB.Append( startString.Substring( lastIndex ) );\r
-                                }\r
-                        \r
-\r
-                        newString = newStringB.ToString();\r
-\r
-                        EnsureCapacity( newString.Length );\r
-                        sString = newString.ToCharArray();\r
-                        sLength = newString.Length;\r
-                        return this;\r
-                }\r
-\r
-                      \r
-                   /* The Append Methods */\r
-\r
-                // TODO: Currently most of these methods convert the \r
-                // parameter to a CharArray (via a String) and then pass\r
-                // it to Append( char[] ).  There might be a faster way\r
-                // of doing this, but it's probably adequate and anything else\r
-                // would make it too messy.\r
-                //\r
-                // As an example, a sample test run of appending a 100 character\r
-                // string to the StringBuilder, and loooping this 50,000 times\r
-                // results in an elapsed time of 2.4s using the MS StringBuilder\r
-                // and 2.7s using this StringBuilder.  Note that this results\r
-                // in a 5 million character string.  I believe MS uses a lot\r
-                               // of "native" DLLs for the "meat" of the base classes.\r
-\r
-\r
-                public StringBuilder Append( char[] value ) {\r
-                        if( sLength + value.Length > sCapacity ) {\r
-                                // Need more capacity, double the capacity StringBuilder \r
-                                                               // and make sure we have at least enough for the value \r
-                                                               // if that's going to go over double. \r
-                                         \r
-                                Capacity = value.Length + ( sCapacity + sCapacity);\r
-                        }\r
-\r
-                        Array.Copy( value, 0, sString, sLength, value.Length );\r
-                        sLength += value.Length;\r
-\r
-                        return this;\r
-                \r
-                \r
-                public StringBuilder Append( string value ) {\r
-                        if( value != null ) {\r
-                                return Append( value.ToCharArray() );\r
-                        } else {\r
-                                return null;\r
-                        }\r
-                }\r
-\r
-                public StringBuilder Append( bool value ) {\r
-                        return Append( value.ToString().ToCharArray() );\r
-                }\r
-                \r
-                public StringBuilder Append( byte value ) {\r
-                        return Append( value.ToString().ToCharArray() );\r
-                }\r
-\r
-                public StringBuilder Append( int index, char value) {\r
-                        char[] appendChar = new char[1];\r
-                        \r
-                        appendChar[0] = value;\r
-                        return Append( appendChar );\r
-                }\r
-\r
-\r
-                public StringBuilder Append( decimal value ) {\r
-                        return Append( value.ToString().ToCharArray() );\r
-                }\r
-\r
-                public StringBuilder Append( double value ) {\r
-                        return Append( value.ToString().ToCharArray() );\r
-                }\r
-\r
-                public StringBuilder Append( short value ) {\r
-                        return Append( value.ToString().ToCharArray() );\r
-                }\r
-\r
-                public StringBuilder Append( int value ) {\r
-                        return Append( value.ToString().ToCharArray() );\r
-                }\r
-\r
-                public StringBuilder Append( long value ) {\r
-                        return Append( value.ToString().ToCharArray() );\r
-                }\r
-\r
-                public StringBuilder Append( object value ) {\r
-                        return Append( value.ToString().ToCharArray() );\r
-                }\r
-\r
-                public StringBuilder Append( sbyte value ) {\r
-                        return Append( value.ToString().ToCharArray() );\r
-                }\r
-\r
-                public StringBuilder Append( float value ) {\r
-                        return Append( value.ToString().ToCharArray() );\r
-                }\r
-\r
-                public StringBuilder Append( ushort value ) {\r
-                        return Append( value.ToString().ToCharArray() );\r
-                }        \r
-                \r
-                public StringBuilder Append( uint value ) {\r
-                        return Append( value.ToString().ToCharArray() );\r
-                }\r
-\r
-                public StringBuilder Append( ulong value ) {\r
-                        return Append( value.ToString().ToCharArray() );\r
-                }\r
-\r
-                public StringBuilder Append( char value, int repeatCount ) {\r
-                        if( repeatCount < 0 ) {\r
-                                throw new ArgumentOutOfRangeException();\r
-                        }\r
-\r
-                        return Append( new String( value, repeatCount) );\r
-                }\r
-\r
-                public StringBuilder Append( char[] value, int startIndex, int charCount ) {\r
-\r
-                        if( (charCount < 0 || startIndex < 0) || \r
-                                        ( charCount + startIndex > value.Length ) ) {\r
-                                throw new ArgumentOutOfRangeException();\r
-                        }\r
-                        \r
-                        if( value == null ) {\r
-                                if( !(startIndex == 0 && charCount == 0) ) {\r
-                                        throw new ArgumentNullException();\r
-                                } else {\r
-                                        return this;\r
-                                }\r
-                        } else {\r
-                                char[] appendChars = new char[ charCount ];\r
-                        \r
-                                Array.Copy( value, startIndex, appendChars, 0, charCount );\r
-                                return Append( appendChars );\r
-                        }\r
-                }\r
-\r
-                public StringBuilder Append( string value, int startIndex, int count ) {\r
-                        if( (count < 0 || startIndex < 0) || \r
+                                       }\r
+\r
+                               } else {\r
+                                       // Append everything left over\r
+                                       newStringB.Append( startString.Substring( lastIndex ) );\r
+                               }\r
+                       } \r
+\r
+                       newString = newStringB.ToString();\r
+\r
+                       EnsureCapacity( newString.Length );\r
+                       sString = newString.ToCharArray();\r
+                       sLength = newString.Length;\r
+                       return this;\r
+               }\r
+\r
+                     \r
+                   /* The Append Methods */\r
+\r
+               // TODO: Currently most of these methods convert the \r
+               // parameter to a CharArray (via a String) and then pass\r
+               // it to Append( char[] ).  There might be a faster way\r
+               // of doing this, but it's probably adequate and anything else\r
+               // would make it too messy.\r
+               //\r
+               // As an example, a sample test run of appending a 100 character\r
+               // string to the StringBuilder, and loooping this 50,000 times\r
+               // results in an elapsed time of 2.4s using the MS StringBuilder\r
+               // and 2.7s using this StringBuilder.  Note that this results\r
+               // in a 5 million character string.  I believe MS uses a lot\r
+               // of "native" DLLs for the "meat" of the base classes.\r
+\r
+\r
+               public StringBuilder Append( char[] value ) {\r
+                       if( sLength + value.Length > sCapacity ) {\r
+                               // Need more capacity, double the capacity StringBuilder \r
+                               // and make sure we have at least enough for the value \r
+                               // if that's going to go over double. \r
+                                        \r
+                               Capacity = value.Length + ( sCapacity + sCapacity);\r
+                       }\r
+\r
+                       Array.Copy( value, 0, sString, sLength, value.Length );\r
+                       sLength += value.Length;\r
+\r
+                       return this;\r
+               } \r
+               \r
+               public StringBuilder Append( string value ) {\r
+                       if( value != null ) {\r
+                               return Append( value.ToCharArray() );\r
+                       } else {\r
+                               return null;\r
+                       }\r
+               }\r
+\r
+               public StringBuilder Append( bool value ) {\r
+                       return Append( value.ToString().ToCharArray() );\r
+               }\r
+               \r
+               public StringBuilder Append( byte value ) {\r
+                       return Append( value.ToString().ToCharArray() );\r
+               }\r
+\r
+               public StringBuilder Append( int index, char value) {\r
+                       char[] appendChar = new char[1];\r
+                       \r
+                       appendChar[0] = value;\r
+                       return Append( appendChar );\r
+               }\r
+\r
+\r
+               public StringBuilder Append( decimal value ) {\r
+                       return Append( value.ToString().ToCharArray() );\r
+               }\r
+\r
+               public StringBuilder Append( double value ) {\r
+                       return Append( value.ToString().ToCharArray() );\r
+               }\r
+\r
+               public StringBuilder Append( short value ) {\r
+                       return Append( value.ToString().ToCharArray() );\r
+               }\r
+\r
+               public StringBuilder Append( int value ) {\r
+                       return Append( value.ToString().ToCharArray() );\r
+               }\r
+\r
+               public StringBuilder Append( long value ) {\r
+                       return Append( value.ToString().ToCharArray() );\r
+               }\r
+\r
+               public StringBuilder Append( object value ) {\r
+                       return Append( value.ToString().ToCharArray() );\r
+               }\r
+\r
+               public StringBuilder Append( sbyte value ) {\r
+                       return Append( value.ToString().ToCharArray() );\r
+               }\r
+\r
+               public StringBuilder Append( float value ) {\r
+                       return Append( value.ToString().ToCharArray() );\r
+               }\r
+\r
+               public StringBuilder Append( ushort value ) {\r
+                       return Append( value.ToString().ToCharArray() );\r
+               }       \r
+               \r
+               public StringBuilder Append( uint value ) {\r
+                       return Append( value.ToString().ToCharArray() );\r
+               }\r
+\r
+               public StringBuilder Append( ulong value ) {\r
+                       return Append( value.ToString().ToCharArray() );\r
+               }\r
+\r
+               public StringBuilder Append( char value, int repeatCount ) {\r
+                       if( repeatCount < 0 ) {\r
+                               throw new ArgumentOutOfRangeException();\r
+                       }\r
+\r
+                       return Append( new String( value, repeatCount) );\r
+               }\r
+\r
+               public StringBuilder Append( char[] value, int startIndex, int charCount ) {\r
+\r
+                       if( (charCount < 0 || startIndex < 0) || \r
+                                       ( charCount + startIndex > value.Length ) ) {\r
+                               throw new ArgumentOutOfRangeException();\r
+                       }\r
+                       \r
+                       if( value == null ) {\r
+                               if( !(startIndex == 0 && charCount == 0) ) {\r
+                                       throw new ArgumentNullException();\r
+                               } else {\r
+                                       return this;\r
+                               }\r
+                       } else {\r
+                               char[] appendChars = new char[ charCount ];\r
+                       \r
+                               Array.Copy( value, startIndex, appendChars, 0, charCount );\r
+                               return Append( appendChars );\r
+                       }\r
+               }\r
+\r
+               public StringBuilder Append( string value, int startIndex, int count ) {\r
+                       if( (count < 0 || startIndex < 0) || \r
                                                        ( startIndex + count > value.Length ) ) { \r
-                                throw new ArgumentOutOfRangeException();\r
-                        }\r
-\r
-                        return Append( value.Substring( startIndex, count ).ToCharArray() );\r
-                }\r
-\r
-                public StringBuilder AppendFormat( string format, object arg0 ) {\r
-                        // TODO: Implement\r
-                        return this;\r
-                }\r
-\r
-                public StringBuilder AppendFormat( string format, params object[] args ) {\r
-                        // TODO: Implement\r
-                        return this;\r
-                }\r
-\r
-                public StringBuilder AppendFormat( IFormatProvider provider, string format,\r
-                                                                params object[] args ) {\r
-                        // TODO: Implement\r
-                        return this;\r
-                }\r
-\r
-                public StringBuilder AppendFormat( string format, object arg0, object arg1 ) {\r
-                        // TODO: Implement;\r
-                        return this;\r
-                }\r
-\r
-                public StringBuilder AppendFormat( string format, object arg0, object arg1, object arg2 ) {\r
-                        // TODO Implement\r
-                        return this;\r
-                }\r
-\r
-                /*  The Insert Functions */\r
-                \r
-                // Similarly to the Append functions, get everything down to a CharArray \r
-                               // and insert that.\r
-                \r
-                public StringBuilder Insert( int index, char[] value ) {\r
-                        if( index > sLength || index < 0) {\r
-                                throw new ArgumentOutOfRangeException();\r
-                        }\r
-\r
-                        if( value == null || value.Length == 0 ) {\r
-                                return this;\r
-                        } else {\r
-                                // Check we have the capacity to insert this array\r
-                                if( sCapacity < sLength + value.Length ) {\r
-                                        Capacity = value.Length + ( sCapacity + sCapacity );\r
-                                }\r
-\r
-                                // Move everything to the right of the insert point across\r
-                                Array.Copy( sString, index, sString, index + value.Length, sLength - index);\r
-                                \r
-                                // Copy in stuff from the insert buffer\r
-                                Array.Copy( value, 0, sString, index, value.Length );\r
-                                \r
-                                sLength += value.Length;\r
-                                return this;\r
-                        }\r
-                }\r
-                                \r
-                public StringBuilder Insert( int index, string value ) {\r
-                        return Insert( index, value.ToCharArray() );\r
-                }\r
-\r
-                public StringBuilder Insert( int index, bool value ) {\r
-                        return Insert( index, value.ToString().ToCharArray() );\r
-                }\r
-                \r
-                public StringBuilder Insert( int index, byte value ) {\r
-                        return Insert( index, value.ToString().ToCharArray() );\r
-                }\r
-\r
-                public StringBuilder Insert( int index, char value) {\r
-                        char[] insertChar = new char[1];\r
-                        \r
-                        insertChar[0] = value;\r
-                        return Insert( index, insertChar );\r
-                }\r
-\r
-                public StringBuilder Insert( int index, decimal value ) {\r
-                        return Insert( index, value.ToString().ToCharArray() );\r
-                }\r
-\r
-                public StringBuilder Insert( int index, double value ) {\r
-                        return Insert( index, value.ToString().ToCharArray() );\r
-                }\r
-                \r
-                public StringBuilder Insert( int index, short value ) {\r
-                        return Insert( index, value.ToString().ToCharArray() );\r
-                }\r
-\r
-                public StringBuilder Insert( int index, int value ) {\r
-                        return Insert( index, value.ToString().ToCharArray() );\r
-                }\r
-\r
-                public StringBuilder Insert( int index, long value ) {\r
-                        return Insert( index, value.ToString().ToCharArray() );\r
-                }\r
-        \r
-                public StringBuilder Insert( int index, object value ) {\r
-                        return Insert( index, value.ToString().ToCharArray() );\r
-                }\r
-\r
-                public StringBuilder Insert( int index, sbyte value ) {\r
-                        return Insert( index, value.ToString().ToCharArray() );\r
-                }\r
-\r
-                public StringBuilder Insert( int index, float value ) {\r
-                return Insert( index, value.ToString().ToCharArray() );\r
-                }\r
-\r
-                public StringBuilder Insert( int index, ushort value ) {\r
-                        return Insert( index, value.ToString().ToCharArray() );\r
-                }\r
-\r
-                public StringBuilder Insert( int index, uint value ) {\r
-                        return Insert( index, value.ToString().ToCharArray() );\r
-                }\r
-\r
-                public StringBuilder Insert( int index, ulong value ) {\r
-                        return Insert( index, value.ToString().ToCharArray() );\r
-                }\r
-\r
-                public StringBuilder Insert( int index, string value, int count ) {\r
-                        if ( count < 0 ) {\r
-                                throw new ArgumentOutOfRangeException();\r
-                        }\r
-\r
-                        if( value != null ) {\r
-                                if( value != "" ) {\r
-                                        for( int insertCount = 0; insertCount < count; \r
+                               throw new ArgumentOutOfRangeException();\r
+                       }\r
+\r
+                       return Append( value.Substring( startIndex, count ).ToCharArray() );\r
+               }\r
+\r
+               public StringBuilder AppendFormat( string format, object arg0 ) {\r
+                       // TODO: Implement\r
+                       return this;\r
+               }\r
+\r
+               public StringBuilder AppendFormat( string format, params object[] args ) {\r
+                       // TODO: Implement\r
+                       return this;\r
+               }\r
+\r
+               public StringBuilder AppendFormat( IFormatProvider provider, string format,\r
+                                                               params object[] args ) {\r
+                       // TODO: Implement\r
+                       return this;\r
+               }\r
+\r
+               public StringBuilder AppendFormat( string format, object arg0, object arg1 ) {\r
+                       // TODO: Implement;\r
+                       return this;\r
+               }\r
+\r
+               public StringBuilder AppendFormat( string format, object arg0, object arg1, object arg2 ) {\r
+                       // TODO Implement\r
+                       return this;\r
+               }\r
+\r
+               /*  The Insert Functions */\r
+               \r
+               // Similarly to the Append functions, get everything down to a CharArray \r
+               // and insert that.\r
+               \r
+               public StringBuilder Insert( int index, char[] value ) {\r
+                       if( index > sLength || index < 0) {\r
+                               throw new ArgumentOutOfRangeException();\r
+                       }\r
+\r
+                       if( value == null || value.Length == 0 ) {\r
+                               return this;\r
+                       } else {\r
+                               // Check we have the capacity to insert this array\r
+                               if( sCapacity < sLength + value.Length ) {\r
+                                       Capacity = value.Length + ( sCapacity + sCapacity );\r
+                               }\r
+\r
+                               // Move everything to the right of the insert point across\r
+                               Array.Copy( sString, index, sString, index + value.Length, sLength - index);\r
+                               \r
+                               // Copy in stuff from the insert buffer\r
+                               Array.Copy( value, 0, sString, index, value.Length );\r
+                               \r
+                               sLength += value.Length;\r
+                               return this;\r
+                       }\r
+               }\r
+                               \r
+               public StringBuilder Insert( int index, string value ) {\r
+                       return Insert( index, value.ToCharArray() );\r
+               }\r
+\r
+               public StringBuilder Insert( int index, bool value ) {\r
+                       return Insert( index, value.ToString().ToCharArray() );\r
+               }\r
+               \r
+               public StringBuilder Insert( int index, byte value ) {\r
+                       return Insert( index, value.ToString().ToCharArray() );\r
+               }\r
+\r
+               public StringBuilder Insert( int index, char value) {\r
+                       char[] insertChar = new char[1];\r
+                       \r
+                       insertChar[0] = value;\r
+                       return Insert( index, insertChar );\r
+               }\r
+\r
+               public StringBuilder Insert( int index, decimal value ) {\r
+                       return Insert( index, value.ToString().ToCharArray() );\r
+               }\r
+\r
+               public StringBuilder Insert( int index, double value ) {\r
+                       return Insert( index, value.ToString().ToCharArray() );\r
+               }\r
+               \r
+               public StringBuilder Insert( int index, short value ) {\r
+                       return Insert( index, value.ToString().ToCharArray() );\r
+               }\r
+\r
+               public StringBuilder Insert( int index, int value ) {\r
+                       return Insert( index, value.ToString().ToCharArray() );\r
+               }\r
+\r
+               public StringBuilder Insert( int index, long value ) {\r
+                       return Insert( index, value.ToString().ToCharArray() );\r
+               }\r
+       \r
+               public StringBuilder Insert( int index, object value ) {\r
+                       return Insert( index, value.ToString().ToCharArray() );\r
+               }\r
+\r
+               public StringBuilder Insert( int index, sbyte value ) {\r
+                       return Insert( index, value.ToString().ToCharArray() );\r
+               }\r
+\r
+               public StringBuilder Insert( int index, float value ) {\r
+               return Insert( index, value.ToString().ToCharArray() );\r
+               }\r
+\r
+               public StringBuilder Insert( int index, ushort value ) {\r
+                       return Insert( index, value.ToString().ToCharArray() );\r
+               }\r
+\r
+               public StringBuilder Insert( int index, uint value ) {\r
+                       return Insert( index, value.ToString().ToCharArray() );\r
+               }\r
+\r
+               public StringBuilder Insert( int index, ulong value ) {\r
+                       return Insert( index, value.ToString().ToCharArray() );\r
+               }\r
+\r
+               public StringBuilder Insert( int index, string value, int count ) {\r
+                       if ( count < 0 ) {\r
+                               throw new ArgumentOutOfRangeException();\r
+                       }\r
+\r
+                       if( value != null ) {\r
+                               if( value != "" ) {\r
+                                       for( int insertCount = 0; insertCount < count; \r
                                                                                        insertCount++ ) {\r
-                                                Insert( index, value.ToCharArray() );           \r
-                                        }\r
-                                }\r
-                        }\r
-                        return this;\r
-                }\r
-\r
-                public StringBuilder Insert( int index, char[] value, int startIndex, \r
+                                               Insert( index, value.ToCharArray() );      \r
+                                       }\r
+                               }\r
+                       }\r
+                       return this;\r
+               }\r
+\r
+               public StringBuilder Insert( int index, char[] value, int startIndex, \r
                                        int charCount ) {\r
 \r
-                        if( value != null ) {\r
-                                if( charCount < 0 || startIndex < 0 || startIndex + charCount > value.Length ) {\r
-                                        throw new ArgumentOutOfRangeException();\r
-                                }\r
-                                        \r
-                                char[] insertChars = new char[ charCount  ];\r
-                                Array.Copy( value, startIndex, insertChars, 0, charCount );\r
-                                return Insert( index, insertChars );\r
-                        } else {\r
-                                return this;\r
-                        }\r
-                }\r
-        }\r
+                       if( value != null ) {\r
+                               if( charCount < 0 || startIndex < 0 || startIndex + charCount > value.Length ) {\r
+                                       throw new ArgumentOutOfRangeException();\r
+                               }\r
+                                       \r
+                               char[] insertChars = new char[ charCount  ];\r
+                               Array.Copy( value, startIndex, insertChars, 0, charCount );\r
+                               return Insert( index, insertChars );\r
+                       } else {\r
+                               return this;\r
+                       }\r
+               }\r
+       }\r
 }       \r
index 057f5dfd7662953a6f47a06d5e7b3ee22de17b13..374c6e1963c321324e60d6659503a17f6123399d 100755 (executable)
@@ -1,3 +1,4 @@
+// -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
 //
 // System.Text.UnicodeEncoding.cs
 //
@@ -43,4 +44,3 @@ namespace System.Text {
                 }
         }
 }
-
index 57ac6545bfb2a2a803e2485576d7edb04bff94a7..e183b9b7cdc892ea2155d2e9a75b6ebccfbcf4f7 100644 (file)
@@ -1,3 +1,10 @@
+2001-07-14  Jeffrey Stedfast  <fejj@ximian.com>
+
+       * String.cs: A tom of compile fixes, although we still don't compile.
+
+       * IConvertible.cs: The To*Int64() methods return *Int64's, not
+       *Int32's. Also, it's ToDateTime() not ToDateType().
+
 2001-07-14  Jeffrey Stedfast  <fejj@ximian.com>
 
        * String.cs: Apparently I needed to at least write stubs for the
index 73d1c65192d95578d4da9edaefacd558200e22b3..bfff8808b28f5b57bc56ae4a3657582274b9e963 100644 (file)
@@ -16,18 +16,18 @@ namespace System {
                bool     ToBoolean  (IFormatProvider provider);
                byte     ToByte     (IFormatProvider provider);
                char     ToChar     (IFormatProvider provider);
-               DateTime ToDateType (IFormatProvider provider);
+               DateTime ToDateTime (IFormatProvider provider);
                Decimal  ToDecimal  (IFormatProvider provider);
                Double   ToDouble   (IFormatProvider provider);
                Int16    ToInt16    (IFormatProvider provider);
                Int32    ToInt32    (IFormatProvider provider);
-               Int32    ToInt64    (IFormatProvider provider);
+               Int64    ToInt64    (IFormatProvider provider);
                SByte    ToSByte    (IFormatProvider provider);
                float    ToSingle   (IFormatProvider provider);
                string   ToString   (IFormatProvider provider);
                object   ToType     (Type conversionType, IFormatProvider provider);
                UInt16   ToUInt16   (IFormatProvider provider);
                UInt32   ToUInt32   (IFormatProvider provider);
-               UInt32   ToUInt64   (IFormatProvider provider);
+               UInt64   ToUInt64   (IFormatProvider provider);
        }
 }
index 568fa52a05693c78ad9b55cb205f62e98d62bc02..0bfe0caf6afcf934726f2dde04a834ab317efe9e 100644 (file)
@@ -57,7 +57,7 @@ namespace System {
                        int i;
 
                        // FIXME: value.Length includes the terminating null char?
-                       this.length = value ? strlen (value): 0;
+                       this.length = value != null ? strlen (value): 0;
                        this.c_str = new char [this.length + 1];
                        for (i = 0; i < this.length; i++)
                                this.c_str[i] = value[i];
@@ -79,7 +79,7 @@ namespace System {
 
                        this.c_str = new char [this.length + 1];
                        for (i = 0; i < this.length; i++)
-                               this.c_str[i] = *(value + i);
+                               this.c_str[i] = (char) *(value + i);
                        this.c_str[i] = '\0';
                }
 
@@ -142,7 +142,7 @@ namespace System {
                        this.length = length;
                        this.c_str = new char [length + 1];
                        for (i = 0; i < length; i++)
-                               this.c_str[i] = *(value + startIndex + i);
+                               this.c_str[i] = (char) *(value + startIndex + i);
                        this.c_str[i] = '\0';
                }
 
@@ -154,7 +154,7 @@ namespace System {
                ~String ()
                {
                        // FIXME: is there anything we need to do here?
-                       base.Finalize ();
+                       /*base.Finalize ();*/
                }
 
                protected override string MemberwiseClone ()
@@ -171,7 +171,7 @@ namespace System {
                }
 
                // FIXME: is this correct syntax??
-               public char Chars (int index) {
+               public char Chars [int index] {
                        get {
                                if (index > this.length)
                                        throw new ArgumentOutOfRangeException ();
@@ -181,31 +181,31 @@ namespace System {
                }
 
                // Private helper methods
-               private int strlen (char[] str)
+               private static int strlen (char[] str)
                {
                        // FIXME: if str.Length includes terminating null char, then return (str.Length - 1)
                        return str.Length;
                }
 
-               private char tolower (char c)
+               private static char tolower (char c)
                {
                        // FIXME: make me unicode aware
-                       return c >= 'A' && c <= 'Z' ? c + 33 : c;
+                       return c >= 'A' && c <= 'Z' ? c + (char) 33 : c;
                }
 
-               private char toupper (char c)
+               private static char toupper (char c)
                {
                        // FIXME: make me unicode aware
-                       return c >= 'a' && c <= 'z' ? c - 33 : c;
+                       return c >= 'a' && c <= 'z' ? c - (char) 33 : c;
                }
 
-               private char tolowerordinal (char c)
+               private static char tolowerordinal (char c)
                {
                        // FIXME: implement me
                        return c;
                }
 
-               private bool is_lwsp (char c)
+               private static bool is_lwsp (char c)
                {
                        /* this comes from the msdn docs for String.Trim() */
                        if ((c >= '\x9' && c <= '\xD') || c == '\x20' || c == '\xA0' ||
@@ -215,7 +215,7 @@ namespace System {
                                return false;
                }
 
-               private int BoyerMoore (char[] haystack, char[] needle, int startIndex, int count)
+               private static int BoyerMoore (char[] haystack, char[] needle, int startIndex, int count)
                {
                        /* (hopefully) Unicode-safe Boyer-Moore implementation */
                        char skiptable[65536];  /* our unicode-safe skip-table */
@@ -478,7 +478,7 @@ namespace System {
 
                public int CompareTo (object obj)
                {
-                       return Compare (this, obj == null ? null : obj.ToString);
+                       return Compare (this, obj == null ? null : obj.ToString ());
                }
 
                public int CompareTo (string str)
@@ -488,12 +488,13 @@ namespace System {
 
                public static string Concat (object arg)
                {
-                       return Concat (this, arg ? arg.ToString () : this.Empty);
+                       return Concat (this, arg ? arg.ToString () : String.Empty);
                }
 
                public static string Concat (params object[] args)
                {
-                       string strings[], str;
+                       string[] strings;
+                       string str;
                        int len, i;
 
                        if (args == null)
@@ -504,14 +505,14 @@ namespace System {
                        foreach (object arg in args) {
                                /* use Empty for each null argument */
                                if (arg == null)
-                                       strings[i] = this.Empty;
+                                       strings[i] = String.Empty;
                                else
                                        strings[i] = arg.ToString ();
                                len += strings[i].Length;
                        }
 
                        if (len == 0)
-                               return this.Empty;
+                               return String.Empty;
 
                        str = new string [len + 1];
                        i = 0;
@@ -536,7 +537,7 @@ namespace System {
                                len += value ? value.Length : 0;
 
                        if (len == 0)
-                               return this.Empty;
+                               return String.Empty;
 
                        str = new string [len + 1];
                        i = 0;
@@ -554,8 +555,8 @@ namespace System {
 
                public static string Concat (object arg0, object arg1)
                {
-                       string str0 = arg0 ? arg0.ToString () : this.Empty;
-                       string str1 = arg1 ? arg1.ToString () : this.Empty;
+                       string str0 = arg0 ? arg0.ToString () : String.Empty;
+                       string str1 = arg1 ? arg1.ToString () : String.Empty;
 
                        return Concat (str0, str1);
                }
@@ -566,13 +567,13 @@ namespace System {
                        int i, j, len;
 
                        if (str0 == null)
-                               str0 = this.Empty;
+                               str0 = String.Empty;
                        if (str1 == null)
-                               str1 == this.Empty;
+                               str1 == String.Empty;
 
                        len = str0.Length + str1.Length;
                        if (len == 0)
-                               return this.Empty;
+                               return String.Empty;
 
                        concat = new string [len + 1];
                        for (i = 0; i < str0.Length; i++)
@@ -586,9 +587,9 @@ namespace System {
 
                public static string Concat (object arg0, object arg1, object arg2)
                {
-                       string str0 = arg0 ? arg0.ToString () : this.Empty;
-                       string str1 = arg1 ? arg1.ToString () : this.Empty;
-                       string str2 = arg2 ? arg2.ToString () : this.Empty;
+                       string str0 = arg0 ? arg0.ToString () : String.Empty;
+                       string str1 = arg1 ? arg1.ToString () : String.Empty;
+                       string str2 = arg2 ? arg2.ToString () : String.Empty;
 
                        return Concat (str0, str1, str2);
                }
@@ -599,15 +600,15 @@ namespace System {
                        int i, j, k, len;
 
                        if (str0 == null)
-                               str0 = this.Empty;
+                               str0 = String.Empty;
                        if (str1 == null)
-                               str1 = this.Empty;
+                               str1 = String.Empty;
                        if (str2 == null)
-                               str2 = this.Empty;
+                               str2 = String.Empty;
 
                        len = str0.Length + str1.Length + str2.Length;
                        if (len == 0)
-                               return this.Empty;
+                               return String.Empty;
 
                        concat = new string [len + 1];
                        for (i = 0; i < str0.Length; i++)
@@ -627,17 +628,17 @@ namespace System {
                        int i, j, k, l, len;
 
                        if (str0 == null)
-                               str0 = this.Empty;
+                               str0 = String.Empty;
                        if (str1 == null)
-                               str1 = this.Empty;
+                               str1 = String.Empty;
                        if (str2 == null)
-                               str2 = this.Empty;
+                               str2 = String.Empty;
                        if (str3 == null)
-                               str3 = this.Empty;
+                               str3 = String.Empty;
 
                        len = str0.Length + str1.Length + str2.Length + str3.Length;
                        if (len == 0)
-                               return this.Empty;
+                               return String.Empty;
 
                        concat = new string [len + 1];
                        for (i = 0; i < str0.Length; i++)
@@ -664,7 +665,7 @@ namespace System {
                public void CopyTo (int sourceIndex, char[] destination, int destinationIndex, int count)
                {
                        // LAMESPEC: should I null-terminate?
-                       int i, len;
+                       int i;
 
                        if (destination == null)
                                throw new ArgumentNullException ();
@@ -708,12 +709,12 @@ namespace System {
                        return this == (String) obj;
                }
 
-               public new bool Equals (string value)
+               public bool Equals (string value)
                {
                        return this == value;
                }
 
-               public static new bool Equals (string a, string b)
+               public static bool Equals (string a, string b)
                {
                        return a == b;
                }
@@ -760,7 +761,7 @@ namespace System {
                        return 0;
                }
 
-               public Type GetType ()
+               public new Type GetType ()
                {
                        // FIXME: implement me
                        return null;
@@ -852,7 +853,7 @@ namespace System {
                        if (startIndex < 0 || count < 0 || startIndex + count > this.length)
                                throw new ArgumentOutOfRangeException ();
 
-                       for (int i = startIndex; i < startIndex + count, i++) {
+                       for (int i = startIndex; i < startIndex + count; i++) {
                                for (int j = 0; j < strlen (values); j++) {
                                        if (this.c_str[i] == values[j])
                                                return i;
@@ -928,7 +929,7 @@ namespace System {
 
                        // We have no elements to join?
                        if (i == startIndex)
-                               return this.Empty;
+                               return String.Empty;
 
                        str = new string [len + 1];
                        for (i = 0; i < value[startIndex].Length; i++)
@@ -1013,7 +1014,7 @@ namespace System {
                        if (count < 0 || startIndex - count < 0)
                                throw new ArgumentOutOfRangeException ();
 
-                       if (value == this.Empty)
+                       if (value == String.Empty)
                                return startIndex;
 
                        if (startIndex + value.Length > this.length) {
@@ -1133,7 +1134,7 @@ namespace System {
 
                        len = this.length - count;
                        if (len == 0)
-                               return this.Empty;
+                               return String.Empty;
 
                        str = new string [len + 1];
                        for (i = 0; i < startIndex; i++)
@@ -1180,7 +1181,7 @@ namespace System {
 
                        len = this.length - oldValue.Length + newValue.Length;
                        if (len == 0)
-                               return this.Empty;
+                               return String.Empty;
 
                        str = new string [len + 1];
                        for (i = 0; i < index; i++)
@@ -1197,7 +1198,7 @@ namespace System {
                private int splitme (char[] separators, int startIndex)
                {
                        /* this is basically a customized IndexOfAny() for the Split() methods */
-                       for (int i = startIndex; i < this.length, i++) {
+                       for (int i = startIndex; i < this.length; i++) {
                                if (separators != null) {
                                        foreach (char sep in separators) {
                                                if (this.c_str[i] == sep)
@@ -1228,7 +1229,7 @@ namespace System {
                         * adjacent.
                         **/
                        // FIXME: would using a Queue be better?
-                       string strings[];
+                       string[] strings;
                        ArrayList list;
                        int index, len;
 
@@ -1237,7 +1238,7 @@ namespace System {
                                len = splitme (separator, index);
                                len = len > -1 ? len : this.length - index;
                                if (len == 0) {
-                                       list.Add (this.Empty);
+                                       list.Add (String.Empty);
                                } else {
                                        string str;
                                        int i;
@@ -1257,7 +1258,7 @@ namespace System {
                                strings[0] = this;
                        } else {
                                for (index = 0; index < list.Count; index++)
-                                       strings[index] = list[index];
+                                       strings[index] = (string) list[index];
                        }
 
                        return strings;
@@ -1267,7 +1268,7 @@ namespace System {
                {
                        // FIXME: what to do if maxCount <= 0?
                        // FIXME: would using Queue be better than ArrayList?
-                       string strings[];
+                       string[] strings;
                        ArrayList list;
                        int index, len, used;
 
@@ -1277,7 +1278,7 @@ namespace System {
                                len = splitme (separator, index);
                                len = len > -1 ? len : this.length - index;
                                if (len == 0) {
-                                       list.Add (this.Empty);
+                                       list.Add (String.Empty);
                                } else {
                                        string str;
                                        int i;
@@ -1311,7 +1312,7 @@ namespace System {
                                strings[0] = this;
                        } else {
                                for (index = 0; index < list.Count; index++)
-                                       strings[index] = list[index];
+                                       strings[index] = (string) list[index];
                        }
 
                        return strings;
@@ -1344,7 +1345,7 @@ namespace System {
 
                        len = this.length - startIndex;
                        if (len == 0)
-                               return this.Empty;
+                               return String.Empty;
 
                        str = new string [len + 1];
                        for (i = startIndex; i < this.length; i++)
@@ -1363,7 +1364,7 @@ namespace System {
                                throw new ArgumentOutOfRangeException ();
 
                        if (length == 0)
-                               return this.Empty;
+                               return String.Empty;
 
                        str = new string [length + 1];
                        for (i = startIndex; i < startIndex + length; i++)
@@ -1373,19 +1374,19 @@ namespace System {
                        return str;
                }
 
-               public override bool ToBoolean (IFormatProvider provider)
+               public bool ToBoolean (IFormatProvider provider)
                {
                        // FIXME: implement me
                        return false;
                }
 
-               public override byte ToByte (IFormatProvider provider)
+               public byte ToByte (IFormatProvider provider)
                {
                        // FIXME: implement me
                        return '\0';
                }
 
-               public override char ToChar (IFormatProvider provider)
+               public char ToChar (IFormatProvider provider)
                {
                        // FIXME: implement me
                        return '\0';
@@ -1413,37 +1414,37 @@ namespace System {
                        return chars;
                }
 
-               public override DateTime ToDateTime (IFormatProvider provider)
+               public DateTime ToDateTime (IFormatProvider provider)
                {
                        // FIXME: implement me
                        return null;
                }
 
-               public override decimal ToDecimal (IFormatProvider provider)
+               public decimal ToDecimal (IFormatProvider provider)
                {
                        // FIXME: implement me
-                       return 0.0;
+                       return 0.0D;
                }
 
-               public override double ToDouble (IFormatProvider provider)
+               public double ToDouble (IFormatProvider provider)
                {
                        // FIXME: implement me
                        return 0.0;
                }
 
-               public override short ToInt16 (IFormatProvider)
+               public short ToInt16 (IFormatProvider provider)
                {
                        // FIXME: implement me
                        return 0;
                }
 
-               public override int ToInt32 (IFormatProvider)
+               public int ToInt32 (IFormatProvider provider)
                {
                        // FIXME: implement me
                        return 0;
                }
 
-               public override long ToInt64 (IFormatProvider)
+               public long ToInt64 (IFormatProvider provider)
                {
                        // FIXME: implement me
                        return 0;
@@ -1468,16 +1469,16 @@ namespace System {
                        return null;
                }
 
-               public override sbyte ToSByte (IFormatProvider)
+               public sbyte ToSByte (IFormatProvider provider)
                {
                        // FIXME: implement me
                        return 0;
                }
 
-               public override float ToSingle (IFormatProvider)
+               public float ToSingle (IFormatProvider provider)
                {
                        // FIXME: implement me
-                       return 0.0;
+                       return 0.0F;
                }
 
                public override string ToString ()
@@ -1491,25 +1492,25 @@ namespace System {
                        return null;
                }
 
-               public override object ToType (Type conversionType, IFormatProvider provider)
+               public object ToType (Type conversionType, IFormatProvider provider)
                {
                        // FIXME: implement me
                        return null;
                }
 
-               public override ushort ToUInt16 (IFormatProvider provider)
+               public ushort ToUInt16 (IFormatProvider provider)
                {
                        // FIXME: implement me
                        return 0;
                }
 
-               public override uint ToUInt32 (IFormatProvider provider)
+               public uint ToUInt32 (IFormatProvider provider)
                {
                        // FIXME: implement me
                        return 0;
                }
 
-               public override ulong ToUInt64 (IFormatProvider provider)
+               public ulong ToUInt64 (IFormatProvider provider)
                {
                        // FIXME: implement me
                        return 0;
@@ -1567,7 +1568,7 @@ namespace System {
                        }
 
                        if (begin == end)
-                               return this.Empty;
+                               return String.Empty;
 
                        return Substring (begin, end - begin);
                }
@@ -1588,7 +1589,7 @@ namespace System {
                        }
 
                        if (end == 0)
-                               return this.Empty;
+                               return String.Empty;
 
                        return Substring (0, end);
                }
@@ -1609,7 +1610,7 @@ namespace System {
                        }
 
                        if (begin == this.length)
-                               return this.Empty;
+                               return String.Empty;
 
                        return Substring (begin, this.length - begin);
                }