ChildTestIteratorpublic class ChildTestIterator extends BasicTestIterator This class implements an optimized iterator for
children patterns that have a node test, and possibly a predicate. |
Fields Summary |
---|
protected transient DTMAxisTraverser | m_traverserThe traverser to use to navigate over the descendants. |
Constructors Summary |
---|
ChildTestIterator(Compiler compiler, int opPos, int analysis)Create a ChildTestIterator object.
super(compiler, opPos, analysis);
| public ChildTestIterator(DTMAxisTraverser traverser)Create a ChildTestIterator object.
super(null);
m_traverser = traverser;
|
Methods Summary |
---|
public com.sun.org.apache.xml.internal.dtm.DTMIterator | cloneWithReset()Get a cloned Iterator that is reset to the beginning
of the query.
ChildTestIterator clone = (ChildTestIterator) super.cloneWithReset();
clone.m_traverser = m_traverser;
return clone;
| 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.
if(m_allowDetach)
{
m_traverser = null;
// Always call the superclass detach last!
super.detach();
}
| public int | getAxis()Returns the axis being iterated, if it is known.
return com.sun.org.apache.xml.internal.dtm.Axis.CHILD;
| protected int | getNextNode()Get the next node via getNextXXX. Bottlenecked for derived class override.
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 void | setRoot(int context, java.lang.Object environment)Initialize the context values for this expression
after it is cloned.
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);
// }
|
|