FileDocCategorySizeDatePackage
ChildTestIterator.javaAPI DocJava SE 5 API5118Fri Aug 26 14:56:06 BST 2005com.sun.org.apache.xpath.internal.axes

ChildTestIterator

public class ChildTestIterator extends BasicTestIterator
This class implements an optimized iterator for children patterns that have a node test, and possibly a predicate.
see
com.sun.org.apache.xpath.internal.axes.BasicTestIterator
xsl.usage
advanced

Fields Summary
protected transient DTMAxisTraverser
m_traverser
The traverser to use to navigate over the descendants.
Constructors Summary
ChildTestIterator(Compiler compiler, int opPos, int analysis)
Create a ChildTestIterator object.

param
compiler A reference to the Compiler that contains the op map.
param
opPos The position within the op map, which contains the location path expression for this itterator.
throws
javax.xml.transform.TransformerException

    super(compiler, opPos, analysis);
  
public ChildTestIterator(DTMAxisTraverser traverser)
Create a ChildTestIterator object.

param
traverser Traverser that tells how the KeyIterator is to be handled.
throws
javax.xml.transform.TransformerException


    super(null);

    m_traverser = traverser;
  
Methods Summary
public com.sun.org.apache.xml.internal.dtm.DTMIteratorcloneWithReset()
Get a cloned Iterator that is reset to the beginning of the query.

return
A cloned NodeIterator set of the start of the query.
throws
CloneNotSupportedException


    ChildTestIterator clone = (ChildTestIterator) super.cloneWithReset();
    clone.m_traverser = m_traverser;

    return clone;
  
public voiddetach()
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.

   
    if(m_allowDetach)
    {
      m_traverser = null;
      
      // Always call the superclass detach last!
      super.detach();
    }
  
public intgetAxis()
Returns the axis being iterated, if it is known.

return
Axis.CHILD, etc., or -1 if the axis is not known or is of multiple types.

    return com.sun.org.apache.xml.internal.dtm.Axis.CHILD;
  
protected intgetNextNode()
Get the next node via getNextXXX. Bottlenecked for derived class override.

return
The next node on the axis, or DTM.NULL.

                     
    if(true /* 0 == m_extendedTypeID */)
    {
      m_lastFetched = (DTM.NULL == m_lastFetched)
                   ? m_traverser.first(m_context)
                   : m_traverser.next(m_context, m_lastFetched);
    }
//    else
//    {
//      m_lastFetched = (DTM.NULL == m_lastFetched)
//                   ? m_traverser.first(m_context, m_extendedTypeID)
//                   : m_traverser.next(m_context, m_lastFetched, 
//                                      m_extendedTypeID);
//    }

    return m_lastFetched;
  
public voidsetRoot(int context, java.lang.Object environment)
Initialize the context values for this expression after it is cloned.

param
execContext The XPath runtime context for this transformation.

    super.setRoot(context, environment);
    m_traverser = m_cdtm.getAxisTraverser(Axis.CHILD);
    
//    String localName = getLocalName();
//    String namespace = getNamespace();
//    int what = m_whatToShow;
//    // System.out.println("what: ");
//    // NodeTest.debugWhatToShow(what);
//    if(DTMFilter.SHOW_ALL == what ||
//       ((DTMFilter.SHOW_ELEMENT & what) == 0)
//       || localName == NodeTest.WILD
//       || namespace == NodeTest.WILD)
//    {
//      m_extendedTypeID = 0;
//    }
//    else
//    {
//      int type = getNodeTypeTest(what);
//      m_extendedTypeID = m_cdtm.getExpandedTypeID(namespace, localName, type);
//    }