WalkingIteratorSortedpublic class WalkingIteratorSorted extends WalkingIterator This class iterates over set of nodes that needs to be sorted. |
Fields Summary |
---|
static final long | serialVersionUID | protected boolean | m_inNaturalOrderStaticTrue if the nodes will be found in document order, and this can
be determined statically. |
Constructors Summary |
---|
public WalkingIteratorSorted(PrefixResolver nscontext)Create a WalkingIteratorSorted object.
super(nscontext);
| WalkingIteratorSorted(Compiler compiler, int opPos, int analysis, boolean shouldLoadWalkers)Create a WalkingIterator iterator, including creation
of step walkers from the opcode list, and call back
into the Compiler to create predicate expressions.
super(compiler, opPos, analysis, shouldLoadWalkers);
|
Methods Summary |
---|
boolean | canBeWalkedInNaturalDocOrderStatic()Tell if the nodeset can be walked in doc order, via static analysis.
if (null != m_firstWalker)
{
AxesWalker walker = m_firstWalker;
int prevAxis = -1;
boolean prevIsSimpleDownAxis = true;
for(int i = 0; null != walker; i++)
{
int axis = walker.getAxis();
if(walker.isDocOrdered())
{
boolean isSimpleDownAxis = ((axis == Axis.CHILD)
|| (axis == Axis.SELF)
|| (axis == Axis.ROOT));
// Catching the filtered list here is only OK because
// FilterExprWalker#isDocOrdered() did the right thing.
if(isSimpleDownAxis || (axis == -1))
walker = walker.getNextWalker();
else
{
boolean isLastWalker = (null == walker.getNextWalker());
if(isLastWalker)
{
if(walker.isDocOrdered() && (axis == Axis.DESCENDANT ||
axis == Axis.DESCENDANTORSELF || axis == Axis.DESCENDANTSFROMROOT
|| axis == Axis.DESCENDANTSORSELFFROMROOT) || (axis == Axis.ATTRIBUTE))
return true;
}
return false;
}
}
else
return false;
}
return true;
}
return false;
| public void | fixupVariables(java.util.Vector vars, int globalsSize)This function is used to perform some extra analysis of the iterator.
super.fixupVariables(vars, globalsSize);
int analysis = getAnalysisBits();
if(WalkerFactory.isNaturalDocOrder(analysis))
{
m_inNaturalOrderStatic = true;
}
else
{
m_inNaturalOrderStatic = false;
// System.out.println("Setting natural doc order to false: "+
// WalkerFactory.getAnalysisString(analysis));
}
| public boolean | isDocOrdered()Returns true if all the nodes in the iteration well be returned in document
order.
return m_inNaturalOrderStatic;
|
|