Class WalkingIterator

All Implemented Interfaces:
Serializable, Cloneable, SourceLocator, DTMIterator, PathComponent, SubContextList, ExpressionNode, ExpressionOwner, XPathVisitable
Direct Known Subclasses:
WalkingIteratorSorted

public class WalkingIterator extends LocPathIterator implements ExpressionOwner
Location path iterator that uses Walkers.
See Also:
  • Constructor Details

    • WalkingIterator

      public WalkingIterator(PrefixResolver nscontext)
      Create a WalkingIterator object.
      Parameters:
      nscontext - The namespace context for this iterator, should be OK if null.
  • Method Details

    • getAnalysisBits

      public int getAnalysisBits()
      Get the analysis bits for this walker, as defined in the WalkerFactory.
      Specified by:
      getAnalysisBits in interface PathComponent
      Overrides:
      getAnalysisBits in class LocPathIterator
      Returns:
      One of WalkerFactory#BIT_DESCENDANT, etc.
    • clone

      public Object clone() throws CloneNotSupportedException
      Get a cloned WalkingIterator that holds the same position as this iterator.
      Specified by:
      clone in interface DTMIterator
      Overrides:
      clone in class PredicatedNodeTest
      Returns:
      A clone of this iterator that holds the same node position.
      Throws:
      CloneNotSupportedException
    • reset

      public void reset()
      Reset the iterator.
      Specified by:
      reset in interface DTMIterator
      Overrides:
      reset in class LocPathIterator
    • setRoot

      public void setRoot(int context, Object environment)
      Initialize the context values for this expression after it is cloned.
      Specified by:
      setRoot in interface DTMIterator
      Overrides:
      setRoot in class LocPathIterator
      Parameters:
      context - The XPath runtime context for this transformation.
      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.

    • nextNode

      public int nextNode()
      Returns the next node in the set and advances the position of the iterator in the set. After a NodeIterator is created, the first call to nextNode() returns the first node in the set.
      Specified by:
      nextNode in interface DTMIterator
      Specified by:
      nextNode in class LocPathIterator
      Returns:
      The next Node in the set being iterated over, or null if there are no more members in that set.
    • getFirstWalker

      public final AxesWalker getFirstWalker()
      Get the head of the walker list.
      Returns:
      The head of the walker list, or null if this iterator does not implement walkers.
    • setFirstWalker

      public final void setFirstWalker(AxesWalker walker)
      Set the head of the walker list.
      Parameters:
      walker - Should be a valid AxesWalker.
    • setLastUsedWalker

      public final void setLastUsedWalker(AxesWalker walker)
      Set the last used walker.
      Parameters:
      walker - The last used walker, or null.
    • getLastUsedWalker

      public final AxesWalker getLastUsedWalker()
      Get the last used walker.
      Returns:
      The last used walker, or null.
    • detach

      public void detach()
      Detaches the iterator from the set which it iterated over, releasing any computational resources and placing the iterator in the INVALID state. Afterdetach has been invoked, calls to nextNode orpreviousNode will raise the exception INVALID_STATE_ERR.
      Specified by:
      detach in interface DTMIterator
      Overrides:
      detach in class LocPathIterator
    • fixupVariables

      public void fixupVariables(Vector vars, int globalsSize)
      This function is used to fixup variables from QNames to stack frame indexes at stylesheet build time.
      Overrides:
      fixupVariables in class PredicatedNodeTest
      Parameters:
      vars - List of QNames that correspond to variables. This list should be searched backwards for the first qualified name that corresponds to the variable reference qname. The position of the QName in the vector from the start of the vector will be its position in the stack frame (but variables above the globalsTop value will need to be offset to the current stack frame).
    • callVisitors

      public void callVisitors(ExpressionOwner owner, XPathVisitor visitor)
      Description copied from interface: XPathVisitable
      This will traverse the heararchy, calling the visitor for each member. If the called visitor method returns false, the subtree should not be called.
      Specified by:
      callVisitors in interface XPathVisitable
      Overrides:
      callVisitors in class LocPathIterator
      Parameters:
      owner - The owner of the visitor, where that path may be rewritten if needed.
      visitor - The visitor whose appropriate method will be called.
      See Also:
    • getExpression

      public Expression getExpression()
      Description copied from interface: ExpressionOwner
      Get the raw Expression object that this class wraps.
      Specified by:
      getExpression in interface ExpressionOwner
      Returns:
      the raw Expression object, which should not normally be null.
      See Also:
    • setExpression

      public void setExpression(Expression exp)
      Description copied from interface: ExpressionOwner
      Set the raw expression object for this object.
      Specified by:
      setExpression in interface ExpressionOwner
      Parameters:
      exp - the raw Expression object, which should not normally be null.
      See Also:
    • deepEquals

      public boolean deepEquals(Expression expr)
      Description copied from class: Expression
      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.
      See Also: