Class LookaheadEnumerator

java.lang.Object
com.icl.saxon.expr.LookaheadEnumerator
All Implemented Interfaces:
LastPositionFinder, NodeEnumeration

public class LookaheadEnumerator extends Object implements NodeEnumeration, LastPositionFinder
A LookaheadEnumerator passes the nodes from a base enumerator throgh unchanged. The complication is that on request, it must determine the value of the last() position, which requires a lookahead. A LookaheadEnumerator should only be used to wrap a NodeEnumeration that cannot determine the last() position for itself, i.e. one that is not a LastPositionFinder.
  • Constructor Details

    • LookaheadEnumerator

      public LookaheadEnumerator(NodeEnumeration base)
      Constructor
      Parameters:
      base - An NodeEnumerator that delivers the nodes, but that cannot determine the last position count.
  • Method Details

    • hasMoreElements

      public boolean hasMoreElements()
      Determine whether there are any more nodes to hand to the client
      Specified by:
      hasMoreElements in interface NodeEnumeration
      Returns:
      true if there are more nodes
    • nextElement

      public NodeInfo nextElement() throws XPathException
      Hand the next node to the client
      Specified by:
      nextElement in interface NodeEnumeration
      Returns:
      the next NodeInfo
      Throws:
      XPathException
    • getLastPosition

      public int getLastPosition() throws XPathException
      Do lookahead to find the last position, if required
      Specified by:
      getLastPosition in interface LastPositionFinder
      Throws:
      XPathException
    • isSorted

      public boolean isSorted()
      Determine whether the nodes are guaranteed to be in document order
      Specified by:
      isSorted in interface NodeEnumeration
      Returns:
      true if the nodes are guaranteed to be in document order.
    • isReverseSorted

      public boolean isReverseSorted()
      Description copied from interface: NodeEnumeration
      Determine whether the nodes returned by this enumeration are known to be in reverse document order.
      Specified by:
      isReverseSorted in interface NodeEnumeration
      Returns:
      true if the nodes are guaranteed to be in document order.
    • isPeer

      public boolean isPeer()
      Determine whether the nodes are guaranteed to be peers
      Specified by:
      isPeer in interface NodeEnumeration