Class BigRangeIterator

    • Constructor Detail

      • BigRangeIterator

        public BigRangeIterator​(java.math.BigInteger start,
                                java.math.BigInteger step,
                                java.math.BigInteger end)
                         throws XPathException
        Create an iterator over a range of monotonically increasing integers
        Parameters:
        start - the first integer in the sequence
        step - the increment: negative for descending sequence
        end - the last integer in the sequence. Must be >= start if ascending, or <= if descending.
        Throws:
        XPathException - if the max sequence length is exceeded
    • Method Detail

      • getResidue

        public GroundedValue getResidue()
        Return 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:
        getResidue in interface GroundedIterator
        Specified by:
        getResidue in class RangeIterator
        Returns:
        the corresponding Value
        Throws:
        UncheckedXPathException - in the cases of subclasses (such as the iterator over a MemoClosure) which cause evaluation of expressions while materializing the value.
      • getStep

        public IntegerValue getStep()
        Get the increment between successive values. For a descending iterator this will be negative value.
        Specified by:
        getStep in class RangeIterator
        Returns:
        the increment between successive values
      • supportsHasNext

        public boolean supportsHasNext()
        Description copied from interface: LookaheadIterator
        Ask whether the hasNext() method can be called. This method must be called before calling hasNext(), because some iterators implement this interface, but only support look-ahead under particular circumstances (this is usually because they delegate to another iterator)
        Specified by:
        supportsHasNext in interface LookaheadIterator
        Returns:
        true if the LookaheadIterator.hasNext() method is available
      • 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 LookaheadIterator.supportsHasNext() is true.

        Specified by:
        hasNext in interface LookaheadIterator
        Returns:
        true if there are more items in the sequence
      • 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 LastPositionFinder.supportsGetLength() has been called and has returned true.
        Specified by:
        getLength in interface LastPositionFinder
        Returns:
        the number of items in the sequence