net.sf.saxon.om

Class ArrayIterator

Implemented Interfaces:
GroundedIterator, LastPositionFinder, LookaheadIterator, ReversibleIterator, SequenceIterator, UnfailingIterator
Known Direct Subclasses:
NodeArrayIterator

public class ArrayIterator
extends java.lang.Object
implements UnfailingIterator, ReversibleIterator, LastPositionFinder, LookaheadIterator, GroundedIterator

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

Field Summary

protected int
end
protected Item[]
items
protected int
start

Fields inherited from interface net.sf.saxon.om.SequenceIterator

GROUNDED, LAST_POSITION_FINDER, LOOKAHEAD

Constructor Summary

ArrayIterator(Item[] nodes)
Create an iterator over all the items in an array
ArrayIterator(Item[] items, int start, int end)
Create an iterator over a range of an array.

Method Summary

Item
current()
Get the current item in the array
SequenceIterator
getAnother()
Get another iterator over the same items
Item[]
getArray()
Get the underlying array
int
getEndPosition()
Get the end position in the array
int
getLastPosition()
Get the number of items in the part of the array being processed
int
getProperties()
Get properties of this iterator, as a bit-significant integer.
SequenceIterator
getReverseIterator()
Get an iterator that processes the same items in reverse order
int
getStartPosition()
Get the initial start position
boolean
hasNext()
Test whether there are any more items
SequenceIterator
makeSliceIterator(int min, int max)
Create a new ArrayIterator over the same items, with a different start point and end point
GroundedValue
materialize()
Return a SequenceValue containing all the items in the sequence returned by this SequenceIterator
Item
next()
Get the next item in the array
int
position()
Get the position of the current item in the array

Field Details

end

protected int end

items

protected Item[] items

start

protected int start

Constructor Details

ArrayIterator

public ArrayIterator(Item[] 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(Item[] 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 iterator
start - 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 Details

current

public Item current()
Get the current item in the array
Specified by:
current in interface UnfailingIterator
current in interface SequenceIterator
Returns:
the item returned by the most recent call of next()

getAnother

public SequenceIterator getAnother()
Get another iterator over the same items
Specified by:
getAnother in interface UnfailingIterator
getAnother in interface SequenceIterator
Returns:
a new ArrayIterator

getArray

public Item[] getArray()
Get the underlying array
Returns:
the underlying array being processed by the iterator

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

getLastPosition

public int getLastPosition()
Get the number of items in the part of the array being processed
Specified by:
getLastPosition in interface LastPositionFinder
Returns:
the number of items; equivalently, the position of the last item

getProperties

public int getProperties()
Get properties of this iterator, as a bit-significant integer.
Specified by:
getProperties in interface SequenceIterator
Returns:
the properties of this iterator. This will be some combination of properties such as SequenceIterator.GROUNDED, SequenceIterator.LAST_POSITION_FINDER, and SequenceIterator.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.

getReverseIterator

public SequenceIterator getReverseIterator()
Get an iterator that processes the same items in reverse order
Specified by:
getReverseIterator in interface ReversibleIterator
Returns:
a new ArrayIterator

getStartPosition

public int getStartPosition()
Get the initial start position
Returns:
the start position of the iterator in the array (zero-based)

hasNext

public boolean hasNext()
Test whether there are any more items
Specified by:
hasNext in interface LookaheadIterator
Returns:
true if there are more items

makeSliceIterator

public SequenceIterator 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 original
max - 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

materialize

public GroundedValue materialize()
Return a SequenceValue containing all the items in the sequence returned by this SequenceIterator
Specified by:
materialize in interface GroundedIterator
Returns:
the corresponding SequenceValue

next

public Item next()
Get the next item in the array
Specified by:
next in interface UnfailingIterator
next in interface SequenceIterator
Returns:
the next item in the array

position

public int position()
Get the position of the current item in the array
Specified by:
position in interface UnfailingIterator
position in interface SequenceIterator
Returns:
the current position (starting at 1 for the first item)