2004-03-01 Atsushi Enomoto <atsushi@ximian.com>
[mono.git] / mcs / class / System.XML / System.Xml.XPath / XPathComparer.cs
1 //
2 // System.Xml.XPath.XPathComparer
3 //
4 // Author:
5 //      Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
6 //
7 // (C) 2003 Atsushi Enomoto
8 //
9
10 using System;
11 using System.Collections;
12 using System.Xml;
13 using System.Xml.XPath;
14 using System.Xml.Xsl;
15
16 namespace System.Xml.XPath
17 {
18         internal class XPathIteratorComparer : IComparer
19         {
20                 public static XPathIteratorComparer Instance = new XPathIteratorComparer ();
21                 private XPathIteratorComparer ()
22                 {
23                 }
24
25                 public int Compare (object o1, object o2)
26                 {
27                         BaseIterator nav1 = o1 as BaseIterator;
28                         BaseIterator nav2 = o2 as BaseIterator;
29                         if (nav1 == null)
30                                 return -1;
31                         if (nav2 == null)
32                                 return 1;
33                         switch (nav1.Current.ComparePosition (nav2.Current)) {
34                         case XmlNodeOrder.Same:
35                                 return 0;
36                         case XmlNodeOrder.After:
37                                 return -1;
38                         default:
39                                 return 1;
40                         }
41                 }
42         }
43
44         internal class XPathNavigatorComparer : IComparer
45         {
46                 public static XPathNavigatorComparer Instance = new XPathNavigatorComparer ();
47                 private XPathNavigatorComparer ()
48                 {
49                 }
50
51                 public int Compare (object o1, object o2)
52                 {
53                         XPathNavigator nav1 = o1 as XPathNavigator;
54                         XPathNavigator nav2 = o2 as XPathNavigator;
55                         if (nav1 == null)
56                                 return -1;
57                         if (nav2 == null)
58                                 return 1;
59                         switch (nav1.ComparePosition (nav2)) {
60                         case XmlNodeOrder.Same:
61                                 return 0;
62                         case XmlNodeOrder.After:
63                                 return 1;
64                         default:
65                                 return -1;
66                         }
67                 }
68         }
69 }