2007-11-05 Stephane Delcroix <sdelcroix@novell.com>
[mono.git] / mcs / class / corlib / System / IConvertible.cs
index bfff8808b28f5b57bc56ae4a3657582274b9e963..c9c00f490f66e774661aacb607f7674bb73177b3 100644 (file)
@@ -7,27 +7,76 @@
 // (C) Ximian, Inc.  http://www.ximian.com
 //
 
-namespace System {
+//
+// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
 
-       public interface IConvertible {
+//
+// Functions Implementing this interface should check out 
+// System.Convert. Most of these methods are implemented 
+// there for all these data types.
+//
+// System.Convert has ToType helper method for the object 
+// ToType (Type conversionType, IFormatProvider provider)
+// method. In most cases you can specify your ToType function
+// as calling 
+//
+// public Type value; // value of this data type
+// public object ToType(Type conversionType, IFormatProvider provider) {
+//    Convert.ToType (value, conversionType, provider);
+// } 
+// 
+// Which is just a wrapper for your ToType methods.
+//
+// See http://lists.ximian.com/archives/public/mono-list/2001-July/000525.html
+// for more discussion on the topic
+//
+using System.Runtime.InteropServices;
 
-               TypeCode GetTypeCode ();
+namespace System {
 
-               bool     ToBoolean  (IFormatProvider provider);
-               byte     ToByte     (IFormatProvider provider);
-               char     ToChar     (IFormatProvider provider);
-               DateTime ToDateTime (IFormatProvider provider);
-               Decimal  ToDecimal  (IFormatProvider provider);
-               Double   ToDouble   (IFormatProvider provider);
-               Int16    ToInt16    (IFormatProvider provider);
-               Int32    ToInt32    (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);
-               UInt64   ToUInt64   (IFormatProvider provider);
-       }
+#if NET_2_0
+    [ComVisible(true)]
+#endif
+    [CLSCompliant(false)]
+    public interface IConvertible {
+       
+       TypeCode GetTypeCode ();
+       
+       bool     ToBoolean  (IFormatProvider provider);
+       byte     ToByte     (IFormatProvider provider);
+       char     ToChar     (IFormatProvider provider);
+       DateTime ToDateTime (IFormatProvider provider);
+       decimal  ToDecimal  (IFormatProvider provider);
+       double   ToDouble   (IFormatProvider provider);
+       short    ToInt16    (IFormatProvider provider);
+       int      ToInt32    (IFormatProvider provider);
+       long     ToInt64    (IFormatProvider provider);
+       sbyte    ToSByte    (IFormatProvider provider);
+       float    ToSingle   (IFormatProvider provider);
+       string   ToString   (IFormatProvider provider);
+       object   ToType     (Type conversionType, IFormatProvider provider);
+       ushort   ToUInt16   (IFormatProvider provider);
+       uint     ToUInt32   (IFormatProvider provider);
+       ulong    ToUInt64   (IFormatProvider provider);
+    }
 }