Package net.sf.saxon.expr.flwor
Class ForClause
- java.lang.Object
-
- net.sf.saxon.expr.flwor.Clause
-
- net.sf.saxon.expr.flwor.ForClause
-
public class ForClause extends Clause
A "for" clause in a FLWOR expression
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class net.sf.saxon.expr.flwor.Clause
Clause.ClauseName
-
-
Constructor Summary
Constructors Constructor Description ForClause()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanaddPredicate(FLWORExpression flwor, ExpressionVisitor visitor, ContextItemStaticInfo contextItemType, Expression condition)Convert where clause to a predicate.voidaddToPathMap(PathMap pathMap, PathMap.PathMapNodeSet pathMapNodeSet)Collect information about the navigation paths followed by this clause, for document projection purposesForClausecopy(FLWORExpression flwor, RebindingMap rebindings)Create a copy of this clausevoidexplain(ExpressionPresenter out)Diagnostic print of expression structure.voidgatherVariableReferences(ExpressionVisitor visitor, Binding binding, java.util.List<VariableReference> references)Build a list of all references to a variables declared in this clauseClause.ClauseNamegetClauseKey()Get a keyword identifying what kind of clause this isLocalVariableBindinggetPositionVariable()Get the position variable (the variable bound by the "at" clause)TuplePullgetPullStream(TuplePull base, XPathContext context)Get a tuple stream that implements the functionality of this clause, taking its input from another tuple stream which this clause modifiesTuplePushgetPushStream(TuplePush destination, Outputter output, XPathContext context)Get a push-mode tuple stream that implements the functionality of this clause, supplying its output to another tuple streamLocalVariableBindinggetRangeVariable()Get the range variable (the primary variable bound by this clause)LocalVariableBinding[]getRangeVariables()Get the number of variables bound by this clauseExpressiongetSequence()voidinitSequence(FLWORExpression flwor, Expression sequence)booleanisAllowingEmpty()Ask whether the "allowing empty" option is presentvoidprocessOperands(OperandProcessor processor)Process the subexpressions of this clausevoidrefineVariableType(ExpressionVisitor visitor, java.util.List<VariableReference> references, Expression returnExpr)Supply improved type information to the expressions that contain references to the variables declared in this clausevoidsetAllowingEmpty(boolean option)Say whether the "allowing empty" option is presentvoidsetPositionVariable(LocalVariableBinding binding)Set the position variable (the variable bound by the "at" clause)voidsetRangeVariable(LocalVariableBinding binding)Set the range variable (the primary variable bound by this clause)voidsetSequence(Expression sequence)java.lang.StringtoShortString()Get a short string representation of the clausejava.lang.StringtoString()voidtypeCheck(ExpressionVisitor visitor, ContextItemStaticInfo contextInfo)Type-check the expression-
Methods inherited from class net.sf.saxon.expr.flwor.Clause
containsNonInlineableVariableReference, getConfiguration, getLocation, getPackageData, getTraceInfo, isRepeated, optimize, setLocation, setPackageData, setRepeated
-
-
-
-
Method Detail
-
getClauseKey
public Clause.ClauseName getClauseKey()
Description copied from class:ClauseGet a keyword identifying what kind of clause this is- Specified by:
getClauseKeyin classClause- Returns:
- the kind of clause
-
copy
public ForClause copy(FLWORExpression flwor, RebindingMap rebindings)
Description copied from class:ClauseCreate a copy of this clause
-
initSequence
public void initSequence(FLWORExpression flwor, Expression sequence)
-
setSequence
public void setSequence(Expression sequence)
-
getSequence
public Expression getSequence()
-
setRangeVariable
public void setRangeVariable(LocalVariableBinding binding)
Set the range variable (the primary variable bound by this clause)- Parameters:
binding- the range variable
-
getRangeVariable
public LocalVariableBinding getRangeVariable()
Get the range variable (the primary variable bound by this clause)- Returns:
- the range variable
-
setPositionVariable
public void setPositionVariable(LocalVariableBinding binding)
Set the position variable (the variable bound by the "at" clause)- Parameters:
binding- the position variable, or null if there is no position variable
-
getPositionVariable
public LocalVariableBinding getPositionVariable()
Get the position variable (the variable bound by the "at" clause)- Returns:
- the position variable, or null if there is no position variable
-
getRangeVariables
public LocalVariableBinding[] getRangeVariables()
Get the number of variables bound by this clause- Overrides:
getRangeVariablesin classClause- Returns:
- the number of variable bindings (1 or 2 depending on whether there is a position variable)
-
setAllowingEmpty
public void setAllowingEmpty(boolean option)
Say whether the "allowing empty" option is present- Parameters:
option- true if the "allowing empty" option is present
-
isAllowingEmpty
public boolean isAllowingEmpty()
Ask whether the "allowing empty" option is present- Returns:
- true if the "allowing empty" option is present
-
typeCheck
public void typeCheck(ExpressionVisitor visitor, ContextItemStaticInfo contextInfo) throws XPathException
Type-check the expression- Overrides:
typeCheckin classClause- Parameters:
visitor- the ExpressionVisitor, providing access to static context informationcontextInfo- static information about the dynamic context- Throws:
XPathException- if any error is detected
-
getPullStream
public TuplePull getPullStream(TuplePull base, XPathContext context)
Get a tuple stream that implements the functionality of this clause, taking its input from another tuple stream which this clause modifies- Specified by:
getPullStreamin classClause- Parameters:
base- the input tuple streamcontext- the XPath dynamic context- Returns:
- the output tuple stream
-
getPushStream
public TuplePush getPushStream(TuplePush destination, Outputter output, XPathContext context)
Get a push-mode tuple stream that implements the functionality of this clause, supplying its output to another tuple stream- Specified by:
getPushStreamin classClause- Parameters:
destination- the output tuple streamoutput- the destination for the resultcontext- the dynamic evaluation context- Returns:
- the push tuple stream that implements the functionality of this clause of the FLWOR expression
-
addPredicate
public boolean addPredicate(FLWORExpression flwor, ExpressionVisitor visitor, ContextItemStaticInfo contextItemType, Expression condition) throws XPathException
Convert where clause to a predicate.- Parameters:
flwor- the FLWOR expression (sans the relevant part of the where clause)visitor- the expression visitorcontextItemType- the item type of the context itemcondition- the predicate to be added. This will always be a single term (never a composite condition using "and"), as the where clause is split into separate terms before calling this method- Returns:
- true if the expression has been changed, that is, if the where clause has been converted
- Throws:
XPathException- if an error is encountered
-
processOperands
public void processOperands(OperandProcessor processor) throws XPathException
Process the subexpressions of this clause- Specified by:
processOperandsin classClause- Parameters:
processor- the expression processor used to process the subexpressions- Throws:
XPathException- if any error is detected
-
gatherVariableReferences
public void gatherVariableReferences(ExpressionVisitor visitor, Binding binding, java.util.List<VariableReference> references)
Description copied from class:ClauseBuild a list of all references to a variables declared in this clause- Overrides:
gatherVariableReferencesin classClause- Parameters:
visitor- the expression visitorbinding- a variable declared in this clausereferences- the list of variable references, initially empty, to which the method will append
-
refineVariableType
public void refineVariableType(ExpressionVisitor visitor, java.util.List<VariableReference> references, Expression returnExpr)
Description copied from class:ClauseSupply improved type information to the expressions that contain references to the variables declared in this clause- Overrides:
refineVariableTypein classClause- Parameters:
visitor- the expression visitorreferences- the list of variable referencesreturnExpr- the expression in the return clause
-
addToPathMap
public void addToPathMap(PathMap pathMap, PathMap.PathMapNodeSet pathMapNodeSet)
Description copied from class:ClauseCollect information about the navigation paths followed by this clause, for document projection purposes- Specified by:
addToPathMapin classClause- Parameters:
pathMap- the path map in which the data is to be collectedpathMapNodeSet- the path map node set representing the paths to the context item
-
explain
public void explain(ExpressionPresenter out) throws XPathException
Diagnostic print of expression structure. The abstract expression tree is written to the supplied output destination.- Specified by:
explainin classClause- Parameters:
out- the expression presenter used to display the structure- Throws:
XPathException
-
toShortString
public java.lang.String toShortString()
Description copied from class:ClauseGet a short string representation of the clause- Overrides:
toShortStringin classClause- Returns:
- a recognizable string
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
-