hack SettingValueElement.Unmerge().
[mono.git] / mcs / class / System.XML / System.Xml.XPath / XPathComparer.cs
index bfc8f220eb472da7409eed371c7ea5e6674b4f3e..91d60ed2c698750262d3997e60c66289d73b4fd6 100644 (file)
@@ -45,8 +45,8 @@ namespace System.Xml.XPath
 
                public int Compare (object o1, object o2)
                {
-                       BaseIterator nav1 = o1 as BaseIterator;
-                       BaseIterator nav2 = o2 as BaseIterator;
+                       XPathNodeIterator nav1 = o1 as XPathNodeIterator;
+                       XPathNodeIterator nav2 = o2 as XPathNodeIterator;
                        if (nav1 == null)
                                return -1;
                        if (nav2 == null)
@@ -62,7 +62,11 @@ namespace System.Xml.XPath
                }
        }
 
+#if NET_2_0
+       internal class XPathNavigatorComparer : IComparer, IEqualityComparer
+#else
        internal class XPathNavigatorComparer : IComparer
+#endif
        {
                public static XPathNavigatorComparer Instance = new XPathNavigatorComparer ();
                private XPathNavigatorComparer ()
@@ -86,5 +90,19 @@ namespace System.Xml.XPath
                                return -1;
                        }
                }
+
+#if NET_2_0
+               bool IEqualityComparer.Equals (object o1, object o2)
+               {
+                       XPathNavigator nav1 = o1 as XPathNavigator;
+                       XPathNavigator nav2 = o2 as XPathNavigator;
+                       return nav1 != null && nav2 != null && nav1.IsSamePosition (nav2);
+               }
+
+               int IEqualityComparer.GetHashCode (object obj)
+               {
+                       return obj.GetHashCode ();
+               }
+#endif
        }
 }