Class ReverseDescendantIterator
java.lang.Object
com.puppycrawl.tools.checkstyle.xpath.iterators.ReverseDescendantIterator
- All Implemented Interfaces:
Closeable
,AutoCloseable
,net.sf.saxon.om.SequenceIterator
,net.sf.saxon.tree.iter.AxisIterator
,net.sf.saxon.tree.iter.UnfailingIterator
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
.-
Nested Class Summary
Nested classes/interfaces inherited from interface net.sf.saxon.om.SequenceIterator
net.sf.saxon.om.SequenceIterator.Property
-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionReverseDescendantIterator
(net.sf.saxon.om.NodeInfo start) Create an iterator over the "descendant" axis in reverse order. -
Method Summary
Modifier and TypeMethodDescriptionnet.sf.saxon.om.NodeInfo
next()
Get the next item in the sequence.private void
pushToStack
(net.sf.saxon.tree.iter.AxisIterator iterateAxis) Pushes all children to the stack.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface net.sf.saxon.tree.iter.AxisIterator
asIterator, forEachNode
Methods inherited from interface net.sf.saxon.om.SequenceIterator
close, forEachOrFail, getProperties, materialize
Methods inherited from interface net.sf.saxon.tree.iter.UnfailingIterator
forEach, toList
-
Field Details
-
queue
Queue for sibling nodes. -
stack
Stack for child nodes, to represent them in reverse order.
-
-
Constructor Details
-
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 Details
-
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 interfacenet.sf.saxon.tree.iter.AxisIterator
- Specified by:
next
in interfacenet.sf.saxon.om.SequenceIterator
- Specified by:
next
in interfacenet.sf.saxon.tree.iter.UnfailingIterator
- Returns:
- the next Item. If there are no more nodes, return null.
-