Class BigRangeIterator

java.lang.Object
net.sf.saxon.expr.BigRangeIterator
All Implemented Interfaces:
Closeable, AutoCloseable, LastPositionFinder, SequenceIterator<AtomicValue>, AtomicIterator, LookaheadIterator<AtomicValue>, UnfailingIterator<AtomicValue>

public class BigRangeIterator extends Object implements AtomicIterator, LastPositionFinder, LookaheadIterator<AtomicValue>
An Iterator that produces numeric values in a monotonic sequence, where the integers may exceed the range of a Long
  • Field Details

  • Constructor Details

    • BigRangeIterator

      public BigRangeIterator(BigInteger start, BigInteger end) throws XPathException
      Create an iterator over a range of monotonically increasing integers
      Parameters:
      start - the first integer in the sequence
      end - the last integer in the sequence. Must be >= start.
      Throws:
      XPathException
  • Method Details

    • hasNext

      public boolean hasNext()
      Description copied from interface: LookaheadIterator
      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.

      This method must not be called unless the result of getProperties() on the iterator includes the bit setting SequenceIterator.LOOKAHEAD

      Specified by:
      hasNext in interface LookaheadIterator<AtomicValue>
      Returns:
      true if there are more items in the sequence
    • next

      public IntegerValue next()
      Description copied from interface: AtomicIterator
      Get the next atomic value in the sequence.
      Specified by:
      next in interface AtomicIterator
      Specified by:
      next in interface SequenceIterator<AtomicValue>
      Specified by:
      next in interface UnfailingIterator<AtomicValue>
      Returns:
      the next Item. If there are no more items, return null.
    • getLength

      public int getLength()
      Description copied from interface: LastPositionFinder
      Get the last position (that is, the number of items in the sequence). This method is non-destructive: it does not change the state of the iterator. The result is undefined if the next() method of the iterator has already returned null. This method must not be called unless the result of getProperties() on the iterator includes the bit setting SequenceIterator.LAST_POSITION_FINDER
      Specified by:
      getLength in interface LastPositionFinder
      Returns:
      the number of items in the sequence
    • getProperties

      public int getProperties()
      Get properties of this iterator, as a bit-significant integer.
      Specified by:
      getProperties in interface SequenceIterator<AtomicValue>
      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.