/** * Iterate over the result of the expression to return a sequence of items */ public SequenceIterator iterate(XPathContext context) throws XPathException { // minimize stack consumption by evaluating nested LET expressions iteratively LetExpression let = this; while (true) { ValueRepresentation val = let.eval(context); context.setLocalVariable(let.getLocalSlotNumber(), val); if (let.action instanceof LetExpression) { let = (LetExpression) let.action; } else { break; } } return let.action.iterate(context); }
/** * Evaluate the expression as a singleton */ public Item evaluateItem(XPathContext context) throws XPathException { // minimize stack consumption by evaluating nested LET expressions iteratively LetExpression let = this; while (true) { ValueRepresentation val = let.eval(context); context.setLocalVariable(let.getLocalSlotNumber(), val); if (let.action instanceof LetExpression) { let = (LetExpression) let.action; } else { break; } } return let.action.evaluateItem(context); }
/** * Iterate over the result of the expression to return a sequence of events */ public EventIterator iterateEvents(XPathContext context) throws XPathException { // minimize stack consumption by evaluating nested LET expressions iteratively LetExpression let = this; while (true) { ValueRepresentation val = let.eval(context); context.setLocalVariable(let.getLocalSlotNumber(), val); if (let.action instanceof LetExpression) { let = (LetExpression) let.action; } else { break; } } return let.action.iterateEvents(context); }
/** * Process this expression as an instruction, writing results to the current * outputter */ public void process(XPathContext context) throws XPathException { // minimize stack consumption by evaluating nested LET expressions iteratively LetExpression let = this; while (true) { ValueRepresentation val = let.eval(context); context.setLocalVariable(let.getLocalSlotNumber(), val); if (let.action instanceof LetExpression) { let = (LetExpression) let.action; } else { break; } } let.action.process(context); }
/** * Process this expression as an instruction, writing results to the current * outputter */ public void process(XPathContext context) throws XPathException { // minimize stack consumption by evaluating nested LET expressions iteratively LetExpression let = this; while (true) { ValueRepresentation val = let.eval(context); context.setLocalVariable(let.getLocalSlotNumber(), val); if (let.action instanceof LetExpression) { let = (LetExpression) let.action; } else { break; } } let.action.process(context); }
/** * Evaluate the expression as a singleton */ public Item evaluateItem(XPathContext context) throws XPathException { // minimize stack consumption by evaluating nested LET expressions iteratively LetExpression let = this; while (true) { ValueRepresentation val = let.eval(context); context.setLocalVariable(let.getLocalSlotNumber(), val); if (let.action instanceof LetExpression) { let = (LetExpression) let.action; } else { break; } } return let.action.evaluateItem(context); }
/** * Iterate over the result of the expression to return a sequence of items */ public SequenceIterator iterate(XPathContext context) throws XPathException { // minimize stack consumption by evaluating nested LET expressions iteratively LetExpression let = this; while (true) { ValueRepresentation val = let.eval(context); context.setLocalVariable(let.getLocalSlotNumber(), val); if (let.action instanceof LetExpression) { let = (LetExpression) let.action; } else { break; } } return let.action.iterate(context); }
/** * Process this expression as an instruction, writing results to the current * outputter */ public void process(XPathContext context) throws XPathException { // minimize stack consumption by evaluating nested LET expressions iteratively LetExpression let = this; while (true) { ValueRepresentation val = let.eval(context); context.setLocalVariable(let.getLocalSlotNumber(), val); if (let.action instanceof LetExpression) { let = (LetExpression) let.action; } else { break; } } let.action.process(context); }
/** * Iterate over the result of the expression to return a sequence of items */ public SequenceIterator iterate(XPathContext context) throws XPathException { // minimize stack consumption by evaluating nested LET expressions iteratively LetExpression let = this; while (true) { ValueRepresentation val = let.eval(context); context.setLocalVariable(let.getLocalSlotNumber(), val); if (let.action instanceof LetExpression) { let = (LetExpression) let.action; } else { break; } } return let.action.iterate(context); }
/** * Iterate over the result of the expression to return a sequence of events */ public EventIterator iterateEvents(XPathContext context) throws XPathException { // minimize stack consumption by evaluating nested LET expressions iteratively LetExpression let = this; while (true) { ValueRepresentation val = let.eval(context); context.setLocalVariable(let.getLocalSlotNumber(), val); if (let.action instanceof LetExpression) { let = (LetExpression) let.action; } else { break; } } return let.action.iterateEvents(context); }
/** * Evaluate the expression as a singleton */ public Item evaluateItem(XPathContext context) throws XPathException { // minimize stack consumption by evaluating nested LET expressions iteratively LetExpression let = this; while (true) { ValueRepresentation val = let.eval(context); context.setLocalVariable(let.getLocalSlotNumber(), val); if (let.action instanceof LetExpression) { let = (LetExpression) let.action; } else { break; } } return let.action.evaluateItem(context); }
/** * Iterate over the result of the expression to return a sequence of events */ public EventIterator iterateEvents(XPathContext context) throws XPathException { // minimize stack consumption by evaluating nested LET expressions iteratively LetExpression let = this; while (true) { ValueRepresentation val = let.eval(context); context.setLocalVariable(let.getLocalSlotNumber(), val); if (let.action instanceof LetExpression) { let = (LetExpression) let.action; } else { break; } } return let.action.iterateEvents(context); }
/** * Process this expression as an instruction, writing results to the current * outputter */ public void process(XPathContext context) throws XPathException { // minimize stack consumption by evaluating nested LET expressions iteratively LetExpression let = this; while (true) { Sequence<?> val = let.eval(context); context.setLocalVariable(let.getLocalSlotNumber(), val); if (let.getAction() instanceof LetExpression) { let = (LetExpression) let.getAction(); } else { break; } } let.getAction().process(context); }
/** * Evaluate the expression as a singleton */ public Item evaluateItem(XPathContext context) throws XPathException { // minimize stack consumption by evaluating nested LET expressions iteratively LetExpression let = this; while (true) { Sequence<?> val = let.eval(context); context.setLocalVariable(let.getLocalSlotNumber(), val); if (let.getAction() instanceof LetExpression) { let = (LetExpression) let.getAction(); } else { break; } } return let.getAction().evaluateItem(context); }
/** * Evaluate the expression as a singleton */ public Item evaluateItem(XPathContext context) throws XPathException { // minimize stack consumption by evaluating nested LET expressions iteratively LetExpression let = this; while (true) { Sequence<?> val = let.eval(context); context.setLocalVariable(let.getLocalSlotNumber(), val); if (let.getAction() instanceof LetExpression) { let = (LetExpression) let.getAction(); } else { break; } } return let.getAction().evaluateItem(context); }
/** * Iterate over the result of the expression to return a sequence of items */ /*@NotNull*/ public SequenceIterator<?> iterate(XPathContext context) throws XPathException { // minimize stack consumption by evaluating nested LET expressions iteratively LetExpression let = this; while (true) { Sequence<?> val = let.eval(context); context.setLocalVariable(let.getLocalSlotNumber(), val); if (let.getAction() instanceof LetExpression) { let = (LetExpression) let.getAction(); } else { break; } } return let.getAction().iterate(context); }
/** * Process this expression as an instruction, writing results to the current * outputter */ public void process(XPathContext context) throws XPathException { // minimize stack consumption by evaluating nested LET expressions iteratively LetExpression let = this; while (true) { Sequence<?> val = let.eval(context); context.setLocalVariable(let.getLocalSlotNumber(), val); if (let.getAction() instanceof LetExpression) { let = (LetExpression) let.getAction(); } else { break; } } let.getAction().process(context); }
/** * Iterate over the result of the expression to return a sequence of items */ /*@NotNull*/ public SequenceIterator<?> iterate(XPathContext context) throws XPathException { // minimize stack consumption by evaluating nested LET expressions iteratively LetExpression let = this; while (true) { Sequence<?> val = let.eval(context); context.setLocalVariable(let.getLocalSlotNumber(), val); if (let.getAction() instanceof LetExpression) { let = (LetExpression) let.getAction(); } else { break; } } return let.getAction().iterate(context); }
/** * Evaluate an updating expression, adding the results to a Pending Update List. * The default implementation of this method, which is used for non-updating expressions, * throws an UnsupportedOperationException * * @param context the XPath dynamic evaluation context * @param pul the pending update list to which the results should be written */ public void evaluatePendingUpdates(XPathContext context, PendingUpdateList pul) throws XPathException { // minimize stack consumption by evaluating nested LET expressions iteratively LetExpression let = this; while (true) { Sequence<?> val = let.eval(context); context.setLocalVariable(let.getLocalSlotNumber(), val); if (let.getAction() instanceof LetExpression) { let = (LetExpression) let.getAction(); } else { break; } } let.getAction().evaluatePendingUpdates(context, pul); }
/** * Diagnostic print of expression structure. The abstract expression tree * is written to the supplied output destination. */ public void export(ExpressionPresenter out) throws XPathException { out.startElement("let", this); out.emitAttribute("var", variableName); out.emitAttribute("as", getSequence().getStaticType().toExportString()); if (isIndexedVariable()) { out.emitAttribute("indexable", "true"); } out.emitAttribute("slot", getLocalSlotNumber() + ""); if (evaluator == null) { setEvaluator(ExpressionTool.lazyEvaluator(getSequence(), getNominalReferenceCount() > 1)); } out.emitAttribute("eval", getEvaluator().getCode() + ""); getSequence().export(out); getAction().export(out); out.endElement(); }