Package net.sf.saxon.tree.iter
Class ArrayIterator<T extends Item<?>>
- java.lang.Object
-
- net.sf.saxon.tree.iter.ArrayIterator<T>
-
- All Implemented Interfaces:
Closeable,AutoCloseable,LastPositionFinder,SequenceIterator<T>,GroundedIterator<T>,LookaheadIterator<T>,UnfailingIterator<T>
- Direct Known Subclasses:
ArrayIterator.OfNodes
public class ArrayIterator<T extends Item<?>> extends Object implements UnfailingIterator<T>, LastPositionFinder, LookaheadIterator<T>, GroundedIterator<T>
ArrayIterator is used to enumerate items held in an array. The items are always held in the correct sorted order for the sequence.- Author:
- Michael H. Kay
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classArrayIterator.OfNodesArrayIterator.OfNodes is a subclass of ArrayIterator where the array always contains Nodes; it therefore implements the AxisIterator interface.
-
Field Summary
Fields Modifier and Type Field Description protected intendprotected T[]itemsprotected intstart-
Fields inherited from interface net.sf.saxon.om.SequenceIterator
ATOMIZING, GROUNDED, LAST_POSITION_FINDER, LOOKAHEAD
-
-
Constructor Summary
Constructors Constructor Description ArrayIterator(T[] nodes)Create an iterator over all the items in an arrayArrayIterator(T[] items, int start, int end)Create an iterator over a range of an array.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description T[]getArray()Get the underlying arrayintgetEndPosition()Get the end position in the arrayintgetLength()Get the number of items in the part of the array being processedintgetProperties()Get properties of this iterator, as a bit-significant integer.GroundedValue<T>getResidue()Return a GroundedValue containing all the remaining items in the sequence returned by this SequenceIterator, starting at the current position.intgetStartPosition()Get the initial start positionbooleanhasNext()Test whether there are any more itemsSequenceIterator<T>makeSliceIterator(int min, int max)Create a new ArrayIterator over the same items, with a different start point and end pointGroundedValue<T>materialize()Return a SequenceValue containing all the items in the sequence returned by this SequenceIteratorTnext()Get the next item in the array-
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.om.SequenceIterator
close, forEachOrFail
-
Methods inherited from interface net.sf.saxon.tree.iter.UnfailingIterator
firstWith, forEach, toGroundedValue, toList
-
-
-
-
Constructor Detail
-
ArrayIterator
public ArrayIterator(T[] nodes)
Create an iterator over all the items in an array- Parameters:
nodes- the array (of any items, not necessarily nodes) to be processed by the iterator
-
ArrayIterator
public ArrayIterator(T[] items, int start, int end)
Create an iterator over a range of an array. Note that the start position is zero-based- Parameters:
items- the array (of nodes or simple values) to be processed by the iteratorstart- the position of the first item to be processed (numbering from zero). Must be between zero and nodes.length-1; if not, undefined exceptions are likely to occur.end- position of first item that is NOT returned, zero-based. Must be beween 1 and nodes.length; if not, undefined exceptions are likely to occur.
-
-
Method Detail
-
makeSliceIterator
public SequenceIterator<T> makeSliceIterator(int min, int max)
Create a new ArrayIterator over the same items, with a different start point and end point- Parameters:
min- the start position (1-based) of the new ArrayIterator relative to the originalmax- the end position (1-based) of the last item to be delivered by the new ArrayIterator, relative to the original. For example, min=2, max=3 delivers the two items ($base[2], $base[3]). Set this to Integer.MAX_VALUE if there is no end limit.- Returns:
- an iterator over the items between the min and max positions
-
hasNext
public boolean hasNext()
Test whether there are any more items- Specified by:
hasNextin interfaceLookaheadIterator<T extends Item<?>>- Returns:
- true if there are more items
-
next
public T next()
Get the next item in the array- Specified by:
nextin interfaceSequenceIterator<T extends Item<?>>- Specified by:
nextin interfaceUnfailingIterator<T extends Item<?>>- Returns:
- the next item in the array
-
getLength
public int getLength()
Get the number of items in the part of the array being processed- Specified by:
getLengthin interfaceLastPositionFinder- Returns:
- the number of items; equivalently, the position of the last item
-
getArray
public T[] getArray()
Get the underlying array- Returns:
- the underlying array being processed by the iterator
-
getStartPosition
public int getStartPosition()
Get the initial start position- Returns:
- the start position of the iterator in the array (zero-based)
-
getEndPosition
public int getEndPosition()
Get the end position in the array- Returns:
- the position in the array (zero-based) of the first item not included in the iteration
-
materialize
public GroundedValue<T> materialize()
Return a SequenceValue containing all the items in the sequence returned by this SequenceIterator- Specified by:
materializein interfaceGroundedIterator<T extends Item<?>>- Specified by:
materializein interfaceSequenceIterator<T extends Item<?>>- Returns:
- the corresponding SequenceValue
-
getResidue
public GroundedValue<T> getResidue()
Description copied from interface:GroundedIteratorReturn a GroundedValue containing all the remaining items in the sequence returned by this SequenceIterator, starting at the current position. This should be an "in-memory" value, not a Closure. This method does not change the state of the iterator (in particular, it does not consume the iterator).- Specified by:
getResiduein interfaceGroundedIterator<T extends Item<?>>- Returns:
- the corresponding Value
-
getProperties
public int getProperties()
Get properties of this iterator, as a bit-significant integer.- Specified by:
getPropertiesin interfaceSequenceIterator<T extends Item<?>>- Returns:
- the properties of this iterator. This will be some combination of
properties such as
SequenceIterator.GROUNDED,SequenceIterator.LAST_POSITION_FINDER, andSequenceIterator.LOOKAHEAD. It is always acceptable to return the value zero, indicating that there are no known special properties. It is acceptable for the properties of the iterator to change depending on its state.
-
-