org.apache.xalan.xsltc.dom
Class SortingIterator
java.lang.Object
org.apache.xml.dtm.ref.DTMAxisIteratorBase
org.apache.xalan.xsltc.dom.SortingIterator
- All Implemented Interfaces:
- java.lang.Cloneable, DTMAxisIterator
public final class SortingIterator
- extends DTMAxisIteratorBase
Method Summary |
private void |
addRecord(NodeSortRecord record)
|
DTMAxisIterator |
cloneIterator()
Clone a SortingIterator by cloning its source
iterator and then sharing the factory and the array of
NodeSortRecords . |
int |
getLast()
Returns the position of the last node within the iteration, as
defined by XPath. |
int |
getPosition()
|
void |
gotoMark()
Restores the current node remembered by setMark(). |
int |
next()
Get the next node in the iteration. |
private int |
partition(int p,
int r)
|
private void |
quicksort(int p,
int r)
|
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. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
INIT_DATA_SIZE
private static final int INIT_DATA_SIZE
- See Also:
- Constant Field Values
_source
private DTMAxisIterator _source
_factory
private NodeSortRecordFactory _factory
_data
private NodeSortRecord[] _data
_free
private int _free
_current
private int _current
SortingIterator
public SortingIterator(DTMAxisIterator source,
NodeSortRecordFactory factory)
next
public int next()
- Description copied from interface:
DTMAxisIterator
- Get the next node in the iteration.
- Returns:
- The next node handle in the iteration, or END.
setStartNode
public DTMAxisIterator setStartNode(int node)
- Description copied from interface:
DTMAxisIterator
- 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.
getPosition
public int getPosition()
- Specified by:
getPosition
in interface DTMAxisIterator
- Overrides:
getPosition
in class DTMAxisIteratorBase
- Returns:
- The position of the current node within the set, as defined by
XPath. Note that this is one-based, not zero-based.
getLast
public int getLast()
- Description copied from class:
DTMAxisIteratorBase
- Returns the position of the last node within the iteration, as
defined by XPath. In a forward iterator, I believe this equals the number of nodes which this
iterator will yield. In a reverse iterator, I believe it should return
1 (since the "last" is the first produced.)
This may be an expensive operation when called the first time, since
it may have to iterate through a large part of the document to produce
its answer.
- Specified by:
getLast
in interface DTMAxisIterator
- Overrides:
getLast
in class DTMAxisIteratorBase
- Returns:
- The number of nodes in this iterator (forward) or 1 (reverse).
setMark
public void setMark()
- Description copied from interface:
DTMAxisIterator
- Remembers the current node for the next call to gotoMark().
gotoMark
public void gotoMark()
- Description copied from interface:
DTMAxisIterator
- Restores the current node remembered by setMark().
cloneIterator
public DTMAxisIterator cloneIterator()
- Clone a
SortingIterator
by cloning its source
iterator and then sharing the factory and the array of
NodeSortRecords
.
- Specified by:
cloneIterator
in interface DTMAxisIterator
- Overrides:
cloneIterator
in class DTMAxisIteratorBase
- Returns:
- a deep copy of this iterator.
addRecord
private void addRecord(NodeSortRecord record)
quicksort
private void quicksort(int p,
int r)
partition
private int partition(int p,
int r)