## net.sf.saxon.value
Class MemoClosure.ProgressiveIterator

    java.lang.Object
      net.sf.saxon.value.MemoClosure.ProgressiveIterator

All Implemented Interfaces:
  GroundedIterator, LastPositionFinder, SequenceIterator

Enclosing class:
  MemoClosure

public final class MemoClosure.ProgressiveIterator
extends java.lang.Object
implements SequenceIterator, LastPositionFinder, GroundedIterator

A ProgressiveIterator starts by reading any items already held in the reservoir; when the reservoir is exhausted, it reads further items from the inputIterator, copying them into the reservoir as they are read.

Constructor Summary
`MemoClosure.ProgressiveIterator()`

Method Summary
`Item` `current()` Get the current value in the sequence (the one returned by the most recent call on next()).
`SequenceIterator` `getAnother()` Get another SequenceIterator that iterates over the same items as the original, but which is repositioned at the start of the sequence.
`int` `getLastPosition()` Get the last position (that is, the number of items in the sequence)
`Value` `materialize()` Return a SequenceValue containing all the items in the sequence returned by this SequenceIterator
`Item` `next()` Get the next item in the sequence.
`int` `position()` Get the current position.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### MemoClosure.ProgressiveIterator

    public MemoClosure.ProgressiveIterator()

Method Detail

### next

    public Item next()
              throws XPathException

  Description copied from interface: `SequenceIterator`
  Get the next item in the sequence.

  Specified by:
    `next` in interface `SequenceIterator`
  Returns:
    the next item, or null if there are no more items.
  Throws:
    `XPathException` - if an error occurs retrieving the next item

### current

    public Item current()

  Description copied from interface: `SequenceIterator`
  Get the current value in the sequence (the one returned by the most recent call on next()). This will be null before the first call of next().

  Specified by:
    `current` in interface `SequenceIterator`
  Returns:
    the current item, the one most recently returned by a call on next(); or null, if next() has not been called, or if the end of the sequence has been reached.

### position

    public int position()

  Description copied from interface: `SequenceIterator`
  Get the current position. This will be zero before the first call on next(), otherwise it will be the number of times that next() has been called.

  Specified by:
    `position` in interface `SequenceIterator`
  Returns:
    the current position, the position of the item returned by the most recent call of next()

### getAnother

    public SequenceIterator getAnother()

  Description copied from interface: `SequenceIterator`
  Get another SequenceIterator that iterates over the same items as the original, but which is repositioned at the start of the sequence.

  Specified by:
    `getAnother` in interface `SequenceIterator`
  Returns:
    a SequenceIterator that iterates over the same items, positioned before the first item

### getLastPosition

    public int getLastPosition()
                        throws XPathException

  Get the last position (that is, the number of items in the sequence)

  Specified by:
    `getLastPosition` in interface `LastPositionFinder`
  Throws:
    `XPathException`

### materialize

    public Value materialize()
                      throws XPathException

  Return a SequenceValue containing all the items in the sequence returned by this SequenceIterator

  Specified by:
    `materialize` in interface `GroundedIterator`
  Returns:
    the corresponding SequenceValue 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())
  Throws:
    `XPathException`