String.Split(char[],int,StringSplitOptions) should remove empty entries while
[mono.git] / mcs / class / corlib / System / OperatingSystem.cs
index 6d8437d87bb0793e8458bd25331c431007a5437a..1684631210e75dd000a3302b8b664c75d595f443 100644 (file)
@@ -5,10 +5,7 @@
 //   Jim Richardson (develop@wtfo-guru.com)
 //
 // (C) 2001 Moonlight Enterprises, All Rights Reserved
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+// 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
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace System
-{
-       /// <summary>
-       /// Class representing a specific operating system version for a specific platform
-       /// </summary>
+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 itsPlatform;
-               private Version itsVersion;
+               private System.PlatformID _platform;
+               private Version _version;
+#if NET_2_0
+               private string _servicePack = String.Empty;
+#endif
 
                public OperatingSystem (PlatformID platform, Version version)
                {
@@ -47,32 +53,51 @@ namespace System
                                throw new ArgumentNullException ("version");
                        }
 
-                       itsPlatform = platform;
-                       itsVersion = version;
+                       _platform = platform;
+                       _version = version;
                }
 
                public PlatformID Platform {
                        get {
-                               return itsPlatform;
+                               return _platform;
                        }
                }
 
                public Version Version {
                        get {
-                               return itsVersion;
+                               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 (itsPlatform, itsVersion);
+                       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) itsPlatform) {
+                       switch ((int) _platform) {
                        case (int) System.PlatformID.Win32NT:
                                str = "Microsoft Windows NT";
                                break;
@@ -96,7 +121,7 @@ namespace System
                                break;
                        }
 
-                       return str + " " + itsVersion.ToString();
+                       return str + " " + _version.ToString();
                }
        }
 }