remove warning
[mono.git] / mcs / class / corlib / System / OperatingSystem.cs
index bc5b0c4cccad4c71be6b7756db7793528a3fc57a..1684631210e75dd000a3302b8b664c75d595f443 100644 (file)
-//------------------------------------------------------------------------------\r
-// \r
-// System.OperatingSystem.cs \r
-//\r
-// Copyright (C) 2001 Moonlight Enterprises, All Rights Reserved\r
-// \r
-// Author:         Jim Richardson, develop@wtfo-guru.com\r
-// Created:        Saturday, August 11, 2001 \r
-//\r
-//------------------------------------------------------------------------------\r
-\r
-using System;\r
-\r
-namespace System\r
-{\r
-       /// <summary>\r
-       /// Class representing a specific operating system version for a specific platform\r
-       /// </summary>\r
-       public sealed class OperatingSystem : ICloneable\r
-       {\r
-               private System.PlatformID itsPlatform;\r
-               private Version itsVersion;\r
-\r
-               public OperatingSystem(PlatformID platform, Version version)\r
-               {\r
-                       if(version == null)\r
-                       {\r
-                               throw new ArgumentNullException();\r
-                       }\r
-                       \r
-                       itsPlatform = platform;\r
-                       itsVersion = version;\r
-               }\r
-\r
-               /// <summary>\r
-               /// Get the PlatformID\r
-               /// </summary>\r
-               public PlatformID Platform\r
-               {\r
-                       get\r
-                       {\r
-                               return itsPlatform;\r
-                       }\r
-               }\r
-\r
-               /// <summary>\r
-               /// Gets the version object\r
-               /// </summary>\r
-               public Version Version\r
-               {\r
-                       get\r
-                       {\r
-                               return itsVersion;\r
-                       }\r
-               }\r
-\r
-               /// <summary>\r
-               /// Return a clone of this object\r
-               /// </summary>\r
-               public object Clone()\r
-               {\r
-                       return new OperatingSystem(itsPlatform, itsVersion);\r
-               }\r
-\r
-               /// <summary>\r
-               /// Return true if obj equals this object\r
-               /// </summary>\r
-               public override bool Equals(object obj)\r
-               {\r
-                       //Check for null and compare run-time types.\r
-                       if (obj == null || GetType() != obj.GetType()) return false;\r
-                       OperatingSystem os = (OperatingSystem)obj;\r
-                       return (itsPlatform == os.itsPlatform) && \r
-                               (os.itsVersion.Equals(itsVersion));\r
-               }\r
-\r
-               /// <summary>\r
-               /// Return hash code\r
-               /// </summary>\r
-               public override int GetHashCode()\r
-               {       // this leave us enuf for 256 unique platforms which should suffice for a good while\r
-                       return ((int)itsPlatform << 24) | itsVersion.GetHashCode() >> 8;\r
-               }\r
-\r
-               /// <summary>\r
-               /// Return a string reprentation of this instance\r
-               /// </summary>\r
-               public override string ToString()\r
-               {\r
-                       string str;\r
-                       \r
-                       switch(itsPlatform)\r
-                       {\r
-                       case System.PlatformID.Win32NT: str = "Microsoft Windows NT"; break;\r
-                       case System.PlatformID.Win32S: str = "Microsoft Win32S";  break;\r
-                       case System.PlatformID.Win32Windows: str = "Microsoft Windows 98"; break;\r
-                       case System.PlatformID.Linux86Redhat: str = "Redhat Linux"; break;\r
-                       default: str = "<unknown>";      break;\r
-                       }\r
-\r
-                       return str + " " + itsVersion.ToString();\r
-               }\r
-       }\r
-}\r
+//
+// System.OperatingSystem.cs 
+//
+// Author:
+//   Jim Richardson (develop@wtfo-guru.com)
+//
+// (C) 2001 Moonlight Enterprises, All Rights Reserved
+// Copyright (C) 2004, 2006 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.
+//
+
+using System.Runtime.InteropServices;
+using System.Runtime.Serialization;
+
+namespace System {
+
+#if NET_2_0
+       [ComVisible (true)]
+#endif
+       [Serializable]
+       public sealed class OperatingSystem : ICloneable
+#if NET_2_0
+               , ISerializable
+#endif
+       {
+               private System.PlatformID _platform;
+               private Version _version;
+#if NET_2_0
+               private string _servicePack = String.Empty;
+#endif
+
+               public OperatingSystem (PlatformID platform, Version version)
+               {
+                       if (version == null) {
+                               throw new ArgumentNullException ("version");
+                       }
+
+                       _platform = platform;
+                       _version = version;
+               }
+
+               public PlatformID Platform {
+                       get {
+                               return _platform;
+                       }
+               }
+
+               public Version Version {
+                       get {
+                               return _version;
+                       }
+               }
+
+#if NET_2_0
+               public string ServicePack {
+                       get { return _servicePack; }
+               }
+
+               public string VersionString {
+                       get { return ToString (); }
+               }
+#endif
+
+               public object Clone ()
+               {
+                       return new OperatingSystem (_platform, _version);
+               }
+
+#if NET_2_0
+               public void GetObjectData (SerializationInfo info, StreamingContext context)
+               {
+                       info.AddValue ("_platform", _platform);
+                       info.AddValue ("_version", _version);
+                       info.AddValue ("_servicePack", _servicePack);
+               }
+#endif
+
+               public override string ToString ()
+               {
+                       string str;
+
+                       switch ((int) _platform) {
+                       case (int) System.PlatformID.Win32NT:
+                               str = "Microsoft Windows NT";
+                               break;
+                       case (int) System.PlatformID.Win32S:
+                               str = "Microsoft Win32S";
+                               break;
+                       case (int) System.PlatformID.Win32Windows:
+                               str = "Microsoft Windows 98";
+                               break;
+#if NET_1_1
+                       case (int) System.PlatformID.WinCE:
+                               str = "Microsoft Windows CE";
+                               break;
+#endif
+                       case 4: /* PlatformID.Unix */
+                       case 128: /* reported for 1.1 mono */
+                               str = "Unix";
+                               break;
+                       default:
+                               str = Locale.GetText ("<unknown>");
+                               break;
+                       }
+
+                       return str + " " + _version.ToString();
+               }
+       }
+}