* XmlQualifiedName.cs : Fixed bug in equality operator.
[mono.git] / mcs / class / System.XML / System.Xml / XmlQualifiedName.cs
1 //
2 // System.Xml.XmlQualifiedName.cs
3 //
4 // Author: Duncan Mak (duncan@ximian.com)
5 //               
6 // (C) Ximian, Inc.
7 // 
8 // Modified: 
9 //              21st June 2002 : Ajay kumar Dwivedi (adwiv@yahoo.com)
10
11 using System;
12
13 namespace System.Xml
14 {
15         public class XmlQualifiedName
16         {
17                 // Constructors         
18                 public XmlQualifiedName ()
19                         : this (string.Empty, string.Empty)
20                 {
21                 }
22
23                 public XmlQualifiedName (string name)
24                         : this (name, string.Empty)
25                 {
26                 }
27
28                 public XmlQualifiedName (string name, string ns)
29                         : base ()
30                 {
31                         this.name = name;
32                         this.ns = ns;
33                 }
34
35                 // Fields
36                 public static readonly XmlQualifiedName Empty = new XmlQualifiedName ();                
37                 private string name;
38                 private string ns;
39                 
40                 // Properties
41                 public bool IsEmpty
42                 {
43                         get {
44                                 if ((name == String.Empty) && (ns == String.Empty))
45                                         return true;
46                                 else
47                                         return false;
48                         }
49                 }
50
51                 public string Name
52                 {
53                         get { return name; }
54                 }
55
56                 public string Namespace
57                 {
58                         get { return ns; }
59                 }
60
61                 // Methods
62                 public override bool Equals (object other)
63                 {
64                         if(!(other is XmlQualifiedName))
65                                 return false;
66
67                         if ((XmlQualifiedName) this == (XmlQualifiedName) other)
68                                 return true;
69                         else
70                                 return false;
71                 }
72
73                 public override int GetHashCode () 
74                 { 
75                         return ns != null ?
76                                 unchecked (name.GetHashCode () + ns.GetHashCode ()) : name.GetHashCode ();
77                 }
78
79                 public override string ToString ()
80                 {
81                         if (ns == null)
82                                 return name;
83                         else if (ns == string.Empty)
84                                 return name;
85                         else
86                                 return ns + ":" + name;
87                 }
88
89                 public static string ToString (string name, string ns)
90                 {
91                         if (ns == string.Empty)
92                                 return name;
93                         else                            
94                                 return ns + ":" + name;
95                 }
96
97                 // Operators
98                 public static bool operator == (XmlQualifiedName a, XmlQualifiedName b)
99                 {
100                         if((Object)a == (Object)b)
101                                 return true;
102
103                         if((Object)a == null || (Object)b == null)
104                                 return false;
105
106                         if ((a.Name == b.Name) && (a.Namespace == b.Namespace))
107                                 return true;
108                         else
109                                 return false;
110                 }
111
112                 public static bool operator != (XmlQualifiedName a, XmlQualifiedName b)
113                 {
114                         if (a == b)
115                                 return false;
116                         else
117                                 return true;
118                 }
119         }
120 }