net.sf.saxon.expr
Class TailCallLoop
- EvaluableItem, InstructionInfoProvider, SequenceIterable, Serializable, SourceLocator
public final class TailCallLoop
A TailCallLoop wraps the body of a function that contains tail-recursive function calls. On completion
of the "real" body of the function it tests whether the function has executed a tail call, and if so,
iterates to evaluate the tail call.
computeCardinality , computeSpecialProperties , displayExpressionName , displayOperator , equals , explain , getBaseExpression , getItemType , hashCode , iterateSubExpressions , optimize , promote , replaceSubExpression , simplify , toString , typeCheck |
addToPathMap , adoptChildExpression , checkPermittedContents , computeCardinality , computeDependencies , computeSpecialProperties , computeStaticProperties , copy , display , doPromotion , dynamicError , effectiveBooleanValue , evaluateAsString , evaluateItem , explain , explain , findParentOf , getCardinality , getColumnNumber , getConstructType , getContainer , getDependencies , getExecutable , getHostLanguage , getImplementationMethod , getInstructionInfo , getIntrinsicDependencies , getItemType , getLineNumber , getLocationId , getLocationProvider , getPublicId , getSlotsUsed , getSpecialProperties , getSystemId , hasLoopingSubexpression , implementsStaticTypeCheck , iterate , iterateEvents , iterateSubExpressions , markTailFunctionCalls , optimize , process , promote , replaceSubExpression , resetLocalStaticProperties , setContainer , setFiltered , setFlattened , setLocationId , simplify , staticTypeCheck , suppressValidation , toString , typeCheck , typeError |
TailCallLoop
public TailCallLoop(UserFunction function)
Constructor - create a TailCallLoop
function
- the function in which this tail call loop appears
copy
public Expression copy()
Copy an expression. This makes a deep copy.
- copy in interface Expression
- the copy of the original expression
displayExpressionName
protected String displayExpressionName()
Give a string representation of the expression name for use in diagnostics
- displayExpressionName in interface UnaryExpression
- the expression name, as a string
getContainingFunction
public UserFunction getContainingFunction()
Get the containing function
getImplementationMethod
public int getImplementationMethod()
An implementation of Expression must provide at least one of the methods evaluateItem(), iterate(), or process().
This method indicates which of these methods is provided. This implementation provides both iterate() and
process() methods natively.
- getImplementationMethod in interface Expression
process
public void process(XPathContext context)
throws XPathException
Process the function body
- process in interface Expression
context
- The dynamic context, giving access to the current node,
the current variables, etc.