org.apache.xml.dtm.ref
Class DTMDefaultBaseIterators.NthDescendantIterator

java.lang.Object
  extended byorg.apache.xml.dtm.ref.DTMAxisIteratorBase
      extended byorg.apache.xml.dtm.ref.DTMDefaultBaseIterators.InternalAxisIteratorBase
          extended byorg.apache.xml.dtm.ref.DTMDefaultBaseIterators.DescendantIterator
              extended byorg.apache.xml.dtm.ref.DTMDefaultBaseIterators.NthDescendantIterator
All Implemented Interfaces:
Cloneable, DTMAxisIterator
Enclosing class:
DTMDefaultBaseIterators

private class DTMDefaultBaseIterators.NthDescendantIterator
extends DTMDefaultBaseIterators.DescendantIterator

Iterator that returns the descendants of a given node. I'm not exactly clear about this one... -sb


Field Summary
protected  int _currentNode
          Current iteration location.
(package private)  int _pos
          The current nth position.
 
Fields inherited from class org.apache.xml.dtm.ref.DTMAxisIteratorBase
_includeSelf, _isRestartable, _markedNode, _startNode
 
Fields inherited from interface org.apache.xml.dtm.DTMAxisIterator
END
 
Constructor Summary
DTMDefaultBaseIterators.NthDescendantIterator(int pos)
          Constructor NthDescendantIterator
 
Method Summary
 void gotoMark()
          Restores the current node remembered by setMark().
protected  boolean isDescendant(int identity)
          Tell if this node identity is a descendant.
 int next()
          Get the next node in the iteration.
 void setMark()
          Remembers the current node for the next call to gotoMark().
 DTMAxisIterator setStartNode(int node)
          Set start to END should 'close' the iterator, i.e. subsequent call to next() should return END.
 
Methods inherited from class org.apache.xml.dtm.ref.DTMAxisIteratorBase
cloneIterator, getAxis, getLast, getPosition, getStartNode, includeSelf, isDocOrdered, isReverse, reset, resetPosition, returnNode
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_pos

int _pos
The current nth position.


_currentNode

protected int _currentNode
Current iteration location. Usually this is the last location returned (starting point for the next() search); for single-node iterators it may instead be initialized to point to that single node.

Constructor Detail

DTMDefaultBaseIterators.NthDescendantIterator

public DTMDefaultBaseIterators.NthDescendantIterator(int pos)
Constructor NthDescendantIterator

Parameters:
pos - The nth position being requested.
Method Detail

next

public int next()
Get the next node in the iteration.

Specified by:
next in interface DTMAxisIterator
Overrides:
next in class DTMDefaultBaseIterators.DescendantIterator
Returns:
The next node handle in the iteration, or END.

setStartNode

public DTMAxisIterator setStartNode(int node)
Set start to END should 'close' the iterator, i.e. subsequent call to next() should return END.

Parameters:
node - Sets the root of the iteration.
Returns:
A DTMAxisIterator set to the start of the iteration.

isDescendant

protected boolean isDescendant(int identity)
Tell if this node identity is a descendant. Assumes that the node info for the element has already been obtained. This one-sided test works only if the parent has been previously tested and is known to be a descendent. It fails if the parent is the _startNode's next sibling, or indeed any node that follows _startNode in document order. That may suffice for this iterator, but it's not really an isDescendent() test. %REVIEW% rename?

Parameters:
identity - The index number of the node in question.
Returns:
true if the index is a descendant of _startNode.

setMark

public void setMark()
Remembers the current node for the next call to gotoMark(). %REVIEW% Should this save _position too?


gotoMark

public void gotoMark()
Restores the current node remembered by setMark(). %REVEIW% Should this restore _position too?