Interface GroundedIterator

    • Method Detail

      • isActuallyGrounded

        boolean isActuallyGrounded()
        Ask if the iterator is actually grounded. This method must be called before calling materialize() or getResidue(), because the iterator might be grounded under some conditions and not others (usually when it delegates to another iterator)
        Returns:
        true if this iterator is grounded
      • getResidue

        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).
        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.
      • materialize

        default GroundedValue materialize()
        Create a GroundedValue (a sequence materialized in memory) containing all the values delivered by this SequenceIterator. The method must only be used when the SequenceIterator is positioned at the start. If it is not positioned at the start, then it is implementation-dependant whether the returned sequence contains all the nodes delivered by the SequenceIterator from the beginning, or only those delivered starting at the current position.

        It is implementation-dependant whether this method consumes the SequenceIterator. (More specifically, in the current implementation: if the iterator is backed by a GroundedValue, then that value is returned and the iterator is not consumed; otherwise, the iterator is consumed and the method returns the remaining items after the current position only).

        Returns:
        a sequence containing all the items delivered by this SequenceIterator.
        Throws:
        UncheckedXPathException - if reading the SequenceIterator throws an error