Class OneStepIterator

All Implemented Interfaces:
Cloneable, SourceLocator, DTMIterator, PathComponent, SubContextList, ExpressionNode, XPathVisitable

public class OneStepIterator extends ChildTestIterator
This class implements a general iterator for those LocationSteps with only one step, and perhaps a predicate.
  • Field Details

    • m_axis

      protected int m_axis
      The traversal axis from where the nodes will be filtered.
    • m_iterator

      protected DTMAxisIterator m_iterator
      The DTM inner traversal class, that corresponds to the super axis.
  • Method Details

    • setRoot

      public void setRoot(int context, Object environment)
      Reset the root node of the DTMIterator, overriding the value specified when it was created. Note the root node is not the root node of the document tree, but the context node from where the iteration begins.
      Specified by:
      setRoot in interface DTMIterator
      Overrides:
      setRoot in class ChildTestIterator
      Parameters:
      context - int Handle of the context node.
      environment - The environment object. The environment in which this iterator operates, which should provide:

      a node (the context node... same value as "root" defined below)

      a pair of non-zero positive integers (the context position and the context size)

      a set of variable bindings

      a function library

      the set of namespace declarations in scope for the expression.

      At this time the exact implementation of this environment is application dependent. Probably a proper interface will be created fairly soon.

    • detach

      public void detach()
      Detaches the DTMIterator from the set which it iterated over, releasing any computational resources and placing the iterator in the INVALID state. After detach has been invoked, calls to nextNode or previousNode will raise a runtime exception.
      Specified by:
      detach in interface DTMIterator
      Overrides:
      detach in class ChildTestIterator
    • getNextNode

      protected int getNextNode()
      Get the next node via getNextXXX. Bottlenecked for derived class override.
      Overrides:
      getNextNode in class ChildTestIterator
      Returns:
      The next node on the axis, or DTM.NULL.
    • clone

      public Object clone() throws CloneNotSupportedException
      Specified by:
      clone in interface DTMIterator
      Overrides:
      clone in class PredicatedNodeTest
      Returns:
      A clone of this object.
      Throws:
      CloneNotSupportedException - if any
    • cloneWithReset

      public DTMIterator cloneWithReset() throws CloneNotSupportedException
      Get a cloned Iterator that is reset to the start of the iteration.
      Specified by:
      cloneWithReset in interface DTMIterator
      Overrides:
      cloneWithReset in class ChildTestIterator
      Returns:
      A clone of this iteration that has been reset.
      Throws:
      CloneNotSupportedException - if any
    • isReverseAxes

      public boolean isReverseAxes()
      Tells if this is a reverse axes.
      Overrides:
      isReverseAxes in class PredicatedNodeTest
      Returns:
      false, unless a derived class overrides.
    • getProximityPosition

      protected int getProximityPosition(int predicateIndex)
      Get the current sub-context position.
      Overrides:
      getProximityPosition in class PredicatedNodeTest
      Parameters:
      predicateIndex - The index of the predicate where the proximity should be taken from.
      Returns:
      The node position of this walker in the sub-context node list.
    • getLength

      public int getLength()
      The number of nodes in the list. The range of valid child node indices is 0 to length-1 inclusive. Note that this requires running the iterator to completion, and presumably filling the cache.
      Specified by:
      getLength in interface DTMIterator
      Overrides:
      getLength in class LocPathIterator
      Returns:
      The number of nodes in the list.
    • countProximityPosition

      protected void countProximityPosition(int i)
      Count forward one proximity position.
      Overrides:
      countProximityPosition in class PredicatedNodeTest
      Parameters:
      i - The index into the m_proximityPositions array, where the increment will occur.
    • reset

      public void reset()
      Reset the iterator to the start. After resetting, the next node returned will be the root node -- or, if that's filtered out, the first node within the root's subtree which is _not_ skipped by the filters.
      Specified by:
      reset in interface DTMIterator
      Overrides:
      reset in class LocPathIterator
    • getAxis

      public int getAxis()
      Returns the axis being iterated, if it is known.
      Specified by:
      getAxis in interface DTMIterator
      Overrides:
      getAxis in class ChildTestIterator
      Returns:
      Axis.CHILD, etc., or -1 if the axis is not known or is of multiple types.
    • deepEquals

      public boolean deepEquals(Expression expr)
      Compare this object with another object and see if they are equal, include the sub heararchy.
      Overrides:
      deepEquals in class PredicatedNodeTest
      Parameters:
      expr - Another expression object.
      Returns:
      true if this objects class and the expr object's class are the same, and the data contained within both objects are considered equal.