BaseTreeIterator.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. //------------------------------------------------------------------------------
  2. // <copyright file="BaseTreeIterator.cs" company="Microsoft">
  3. // Copyright (c) Microsoft Corporation. All rights reserved.
  4. // </copyright>
  5. // <owner current="true" primary="true">Microsoft</owner>
  6. // <owner current="true" primary="false">Microsoft</owner>
  7. //------------------------------------------------------------------------------
  8. namespace System.Xml {
  9. // Iterates over non-attribute nodes
  10. internal abstract class BaseTreeIterator {
  11. protected DataSetMapper mapper;
  12. internal BaseTreeIterator( DataSetMapper mapper ) {
  13. this.mapper = mapper;
  14. }
  15. internal abstract void Reset();
  16. internal abstract XmlNode CurrentNode { get; }
  17. internal abstract bool Next();
  18. internal abstract bool NextRight();
  19. internal bool NextRowElement() {
  20. while ( Next() ) {
  21. if ( OnRowElement() )
  22. return true;
  23. }
  24. return false;
  25. }
  26. internal bool NextRightRowElement() {
  27. if ( NextRight() ) {
  28. if ( OnRowElement() )
  29. return true;
  30. return NextRowElement();
  31. }
  32. return false;
  33. }
  34. // Returns true if the current node is on a row element (head of a region)
  35. internal bool OnRowElement() {
  36. XmlBoundElement be = CurrentNode as XmlBoundElement;
  37. return (be != null) && (be.Row != null);
  38. }
  39. }
  40. }