-//------------------------------------------------------------------------------\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 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
- // the doc doesn't say this, but I would\r
- //if(platform < minPlatform || platform >= maxPlatform)\r
- //{\r
- // throw new ArgumentOutOfRangeException();\r
- // TODO: find out if C# has assertion mechanism\r
- // isn't learning new languages fun? :)\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
- {\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
- return itsPlatform.ToString() + ", " + 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();
+ }
+ }
+}