2
0

XPathComparer.cs 1.4 KB

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