net.sf.saxon.expr

Class CardinalityCheckingIterator

Implemented Interfaces:
SequenceIterator

public final class CardinalityCheckingIterator
extends java.lang.Object
implements SequenceIterator

CardinalityCheckingIterator returns the items in an underlying sequence unchanged, but checks that the number of items conforms to the required cardinality. Because cardinality checks are required to take place even if the consumer of the sequence does not require all the items, we read the first two items at initialization time. This is sufficient to perform the checks; after that we can simply return the items from the base sequence.

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

GROUNDED, LAST_POSITION_FINDER, LOOKAHEAD

Constructor Summary

CardinalityCheckingIterator(SequenceIterator base, int requiredCardinality, RoleLocator role)
Construct an CardinalityCheckingIterator that will return the same items as the base sequence, checking how many there are

Method Summary

Item
current()
SequenceIterator
getAnother()
int
getProperties()
Get properties of this iterator, as a bit-significant integer.
Item
next()
int
position()

Constructor Details

CardinalityCheckingIterator

public CardinalityCheckingIterator(SequenceIterator base,
                                   int requiredCardinality,
                                   RoleLocator role)
            throws XPathException
Construct an CardinalityCheckingIterator that will return the same items as the base sequence, checking how many there are
Parameters:
base - the base iterator
requiredCardinality - the required Cardinality

Method Details

current

public Item current()
Specified by:
current in interface SequenceIterator

getAnother

public SequenceIterator getAnother()
            throws XPathException
Specified by:
getAnother in interface SequenceIterator

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.

next

public Item next()
            throws XPathException
Specified by:
next in interface SequenceIterator

position

public int position()
Specified by:
position in interface SequenceIterator