2002-11-24 Duncan Mak <duncan@ximian.com>
[mono.git] / mcs / class / System.XML / System.Xml / XmlQualifiedName.cs
index 04b6c580f3393bf1d8e68d5922e936cb68bd0d34..c7c8197ff7fd679f9bf59780a71b818877eaa826 100644 (file)
@@ -2,9 +2,13 @@
 // System.Xml.XmlQualifiedName.cs
 //
 // Author: Duncan Mak (duncan@ximian.com)
-//
+//              
 // (C) Ximian, Inc.
-//
+// 
+// Modified: 
+//             21st June 2002 : Ajay kumar Dwivedi (adwiv@yahoo.com)
+
+using System;
 
 namespace System.Xml
 {
@@ -12,14 +16,13 @@ namespace System.Xml
        {
                // Constructors         
                public XmlQualifiedName ()
-                       : base ()
+                       : this (string.Empty, string.Empty)
                {
                }
 
                public XmlQualifiedName (string name)
-                       : base ()
+                       : this (name, string.Empty)
                {
-                       this.name = name;
                }
 
                public XmlQualifiedName (string name, string ns)
@@ -30,20 +33,19 @@ namespace System.Xml
                }
 
                // Fields
-               [MonoTODO] public static readonly XmlQualifiedName Empty = new XmlQualifiedName ();
-               
+               public static readonly XmlQualifiedName Empty = new XmlQualifiedName ();                
                private string name;
-               private string namespace;
+               private string ns;
                
-               public XmlQualifiedName (string name) {}
-
                // Properties
                public bool IsEmpty
                {
-                       if ((name == String.Empty) && (ns == String.Empty))
-                               return true;
-                       else
-                               return false;
+                       get {
+                               if ((name == String.Empty) && (ns == String.Empty))
+                                       return true;
+                               else
+                                       return false;
+                       }
                }
 
                public string Name
@@ -53,31 +55,60 @@ namespace System.Xml
 
                public string Namespace
                {
-                       get { return namespace; }
+                       get { return ns; }
                }
 
                // Methods
                public override bool Equals (object other)
                {
-                       if ((this.Name == other.Name) && (this.Namespace == other.Namespace))
+                       if(!(other is XmlQualifiedName))
+                               return false;
+
+                       if ((XmlQualifiedName) this == (XmlQualifiedName) other)
                                return true;
                        else
                                return false;
                }
 
-               public override int GetHashCode ();
+               public override int GetHashCode () 
+               { 
+                       return unchecked (name.GetHashCode() + ns.GetHashCode()); 
+               }
 
                public override string ToString ()
                {
-                       return ns + ":" + name;
+                       if (ns == null)
+                               return name;
+                       else
+                               return ns + ":" + name;
                }
 
-               public override string ToString (string name, string ns)
+               public static string ToString (string name, string ns)
                {
-                       if (ns == null)
+                       if (ns == string.Empty)
                                return name;
+                       else                            
+                               return ns + ":" + name;
+               }
+
+               // Operators
+               public static bool operator == (XmlQualifiedName a, XmlQualifiedName b)
+               {
+                       if((Object)a == null || (Object)b == null)
+                               return false;
+
+                       if ((a.Name == b.Name) && (a.Namespace == b.Namespace))
+                               return true;
                        else
-                               return ns + ":" + name;
+                               return false;
+               }
+
+               public static bool operator != (XmlQualifiedName a, XmlQualifiedName b)
+               {
+                       if (a == b)
+                               return false;
+                       else
+                               return true;
                }
        }
-}
+}
\ No newline at end of file