net.sf.saxon.om

Class SingletonIterator

public class SingletonIterator extends Object implements AxisIterator, ReversibleIterator, LastPositionFinder, GroundedIterator, LookaheadIterator, AtomizableIterator

SingletonIterator: an iterator over a sequence of zero or one values
Method Summary
Itemcurrent()
SequenceIteratorgetAnother()
intgetLastPosition()
intgetProperties()
Get properties of this iterator, as a bit-significant integer.
SequenceIteratorgetReverseIterator()
ItemgetValue()
booleanhasNext()
Determine whether there are more items to come.
static AxisIteratormakeIterator(Item item)
Factory method.
Valuematerialize()
Return a SequenceExtent containing all the items in the sequence returned by this SequenceIterator
Itemnext()
intposition()
Return the current position in the sequence.
voidsetIsAtomizing(boolean atomizing)
Indicate that any nodes returned in the sequence will be atomized.

Method Detail

current

public Item current()

getAnother

public SequenceIterator getAnother()

getLastPosition

public int getLastPosition()

getProperties

public int getProperties()
Get properties of this iterator, as a bit-significant integer.

Returns: the properties of this iterator. This will be some combination of properties such as GROUNDED, LAST_POSITION_FINDER, and 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()

getValue

public Item getValue()

hasNext

public boolean hasNext()
Determine whether there are more items to come. Note that this operation is stateless and it is not necessary (or usual) to call it before calling next(). It is used only when there is an explicit need to tell if we are at the last element.

Returns: true if there are more items

makeIterator

public static AxisIterator makeIterator(Item item)
Factory method.

Parameters: item the item to iterate over

Returns: a SingletonIterator over the supplied item, or an EmptyIterator if the supplied item is null.

materialize

public Value materialize()
Return a SequenceExtent containing all the items in the sequence returned by this SequenceIterator

Returns: the corresponding SequenceExtent if it exists, or null if it doesn't; in this case the caller must construct a new SequenceExtent by calling new SequenceExtent(iter.getAnother())

next

public Item next()

position

public int position()
Return the current position in the sequence.

Returns: 0 before the first call on next(); 1 before the second call on next(); -1 after the second call on next().

setIsAtomizing

public void setIsAtomizing(boolean atomizing)
Indicate that any nodes returned in the sequence will be atomized. This means that if it wishes to do so, the implementation can return the typed values of the nodes rather than the nodes themselves. The implementation is free to ignore this hint.

This implementation attempts atomization of a singleton node if it is untyped. This avoids adding an iterator to iterate over the value in the common case where the typed value of the node is a single atomic value.

Parameters: atomizing true if the caller of this iterator will atomize any nodes that are returned, and is therefore willing to accept the typed value of the nodes instead of the nodes themselves.