Class ReverseDescendantIterator

  • All Implemented Interfaces:
    Closeable, AutoCloseable, net.sf.saxon.om.SequenceIterator, net.sf.saxon.tree.iter.AxisIterator

    public class ReverseDescendantIterator
    extends Object
    implements net.sf.saxon.tree.iter.AxisIterator
    Recursive-free implementation of the descendant axis iterator. Difference between this iterator and DescendantIterator in traversal order of the child nodes. In some cases it is useful to iterate from last child backwards to the first one, for example in PrecedingIterator.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private Queue<net.sf.saxon.om.NodeInfo> queue
      Queue for sibling nodes.
      private Deque<net.sf.saxon.om.NodeInfo> stack
      Stack for child nodes, to represent them in reverse order.
    • Constructor Summary

      Constructors 
      Constructor Description
      ReverseDescendantIterator​(net.sf.saxon.om.NodeInfo start)
      Create an iterator over the "descendant" axis in reverse order.
    • Field Detail

      • queue

        private final Queue<net.sf.saxon.om.NodeInfo> queue
        Queue for sibling nodes.
      • stack

        private final Deque<net.sf.saxon.om.NodeInfo> stack
        Stack for child nodes, to represent them in reverse order.
    • Constructor Detail

      • ReverseDescendantIterator

        public ReverseDescendantIterator​(net.sf.saxon.om.NodeInfo start)
        Create an iterator over the "descendant" axis in reverse order.
        Parameters:
        start - the initial context node.
    • Method Detail

      • pushToStack

        private void pushToStack​(net.sf.saxon.tree.iter.AxisIterator iterateAxis)
        Pushes all children to the stack.
        Parameters:
        iterateAxis - AxisInfo.CHILD axis iterator.
      • next

        public net.sf.saxon.om.NodeInfo next()
        Get the next item in the sequence.
        Specified by:
        next in interface net.sf.saxon.tree.iter.AxisIterator
        Specified by:
        next in interface net.sf.saxon.om.SequenceIterator
        Returns:
        the next Item. If there are no more nodes, return null.