WalkingIterator newIter = new WalkingIterator(wi.getPrefixResolver()); try AxesWalker walker = (AxesWalker)wi.getFirstWalker().clone(); newIter.setFirstWalker(walker); walker.setLocPathIterator(newIter); for(int i = 1; i < numSteps; i++)
/** * This function is used to perform some extra analysis of the iterator. * * @param 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). */ public void fixupVariables(java.util.Vector vars, int globalsSize) { 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)); } }
AxesWalker savedWalker = lpi.getLastUsedWalker(); lpi.setLastUsedWalker(walker); lpi.setLastUsedWalker(savedWalker);
/** * @see ExpressionOwner#setExpression(Expression) */ public void setExpression(Expression exp) { if(!(exp instanceof LocPathIterator)) { // Yuck. Need FilterExprIter. Or make it so m_exprs can be just // plain expressions? WalkingIterator wi = new WalkingIterator(getPrefixResolver()); FilterExprWalker few = new FilterExprWalker(wi); wi.setFirstWalker(few); few.setInnerExpression(exp); wi.exprSetParent(UnionPathIterator.this); few.exprSetParent(wi); exp.exprSetParent(few); exp = wi; } else exp.exprSetParent(UnionPathIterator.this); m_exprs[m_index] = (LocPathIterator)exp; }
AxesWalker walker = wi.getFirstWalker(); for(int i = 0; i < numSteps; i++) few.setNextWalker(walker); walker.setPrevWalker(few); wi.setFirstWalker(few); return wi; feis.exprSetParent(wi.exprGetParent()); return feis;
new WalkingIterator(compiler.getNamespaceContext()); iter.exprSetParent(this); iter.setIsTopLevel(true);
/** * Check if results of partial reduction will just be a variable, in * which case, skip it. */ boolean partialIsVariable(MultistepExprHolder testee, int lengthToTest) { if(1 == lengthToTest) { WalkingIterator wi = (WalkingIterator)testee.m_exprOwner.getExpression(); if(wi.getFirstWalker() instanceof FilterExprWalker) return true; } return false; }
/** * Get the DTM for this walker. * * @return Non-null reference to a DTM. */ public DTM getDTM(int node) { // return wi().getXPathContext().getDTM(node); }
/** * @see ExpressionOwner#setExpression(Expression) */ public void setExpression(Expression exp) { if(!(exp instanceof LocPathIterator)) { // Yuck. Need FilterExprIter. Or make it so m_exprs can be just // plain expressions? WalkingIterator wi = new WalkingIterator(getPrefixResolver()); FilterExprWalker few = new FilterExprWalker(wi); wi.setFirstWalker(few); few.setInnerExpression(exp); wi.exprSetParent(UnionPathIterator.this); few.exprSetParent(wi); exp.exprSetParent(few); exp = wi; } else exp.exprSetParent(UnionPathIterator.this); m_exprs[m_index] = (LocPathIterator)exp; }
/** * This function is used to perform some extra analysis of the iterator. * * @param 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). */ public void fixupVariables(java.util.Vector vars, int globalsSize) { 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)); } }
iter = new WalkingIterator(compiler, opPos, analysis, true);
/** * @see ExpressionOwner#setExpression(Expression) */ public void setExpression(Expression exp) { if(!(exp instanceof LocPathIterator)) { // Yuck. Need FilterExprIter. Or make it so m_exprs can be just // plain expressions? WalkingIterator wi = new WalkingIterator(getPrefixResolver()); FilterExprWalker few = new FilterExprWalker(wi); wi.setFirstWalker(few); few.setInnerExpression(exp); wi.exprSetParent(UnionPathIterator.this); few.exprSetParent(wi); exp.exprSetParent(few); exp = wi; } else exp.exprSetParent(UnionPathIterator.this); m_exprs[m_index] = (LocPathIterator)exp; }
AxesWalker walker = wi.getFirstWalker(); for(int i = 0; i < numSteps; i++) few.setNextWalker(walker); walker.setPrevWalker(few); wi.setFirstWalker(few); return wi; feis.exprSetParent(wi.exprGetParent()); return feis;
new WalkingIterator(compiler.getNamespaceContext()); iter.exprSetParent(this); iter.setIsTopLevel(true);
/** * Check if results of partial reduction will just be a variable, in * which case, skip it. */ boolean partialIsVariable(MultistepExprHolder testee, int lengthToTest) { if(1 == lengthToTest) { WalkingIterator wi = (WalkingIterator)testee.m_exprOwner.getExpression(); if(wi.getFirstWalker() instanceof FilterExprWalker) return true; } return false; }
/** * Get the DTM for this walker. * * @return Non-null reference to a DTM. */ public DTM getDTM(int node) { // return wi().getXPathContext().getDTM(node); }
/** * @see ExpressionOwner#setExpression(Expression) */ public void setExpression(Expression exp) { if(!(exp instanceof LocPathIterator)) { // Yuck. Need FilterExprIter. Or make it so m_exprs can be just // plain expressions? WalkingIterator wi = new WalkingIterator(getPrefixResolver()); FilterExprWalker few = new FilterExprWalker(wi); wi.setFirstWalker(few); few.setInnerExpression(exp); wi.exprSetParent(UnionPathIterator.this); few.exprSetParent(wi); exp.exprSetParent(few); exp = wi; } else exp.exprSetParent(UnionPathIterator.this); m_exprs[m_index] = (LocPathIterator)exp; }
/** * This function is used to perform some extra analysis of the iterator. * * @param 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). */ public void fixupVariables(java.util.Vector vars, int globalsSize) { 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)); } }
iter = new WalkingIterator(compiler, opPos, analysis, true);
WalkingIterator newIter = new WalkingIterator(wi.getPrefixResolver()); try AxesWalker walker = (AxesWalker)wi.getFirstWalker().clone(); newIter.setFirstWalker(walker); walker.setLocPathIterator(newIter); for(int i = 1; i < numSteps; i++)