Class ForClause
java.lang.Object
net.sf.saxon.expr.flwor.Clause
net.sf.saxon.expr.flwor.ForClause
A "for" clause in a FLWOR expression
-
Field Summary
Fields inherited from class Clause
COUNT, FOR, GROUPBYCLAUSE, LET, ORDERBYCLAUSE, TRACE, WHERE, WINDOW -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleanaddPredicate(FLWORExpression flwor, ExpressionVisitor visitor, ExpressionVisitor.ContextItemType contextItemType, Expression condition) Convert where clause to a predicate.copy()Create a copy of this clausevoidDiagnostic print of expression structure.voidgatherVariableReferences(List references) voidgatherVariableReferences(ExpressionVisitor visitor, Binding binding, List<VariableReference> references) Build a list of all references to a variables declared in this clauseintGet a keyword identifying what kind of clause this isGet the position variable (the variable bound by the "at" clause)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 modifiesgetPushStream(TuplePush destination, XPathContext context) Get a push-mode tuple stream that implements the functionality of this clause, supplying its output to another tuple streamGet the range variable (the primary variable bound by this clause)Get the number of variables bound by this clauseGet the expression over which the "for" variable iteratesbooleanAsk whether the "allowing empty" option is presentvoidprocessSubExpressions(ExpressionProcessor processor) Process the subexpressions of this clausevoidrefineVariableType(ExpressionVisitor visitor, 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) Set the expression over which the "for" variable iteratestoString()voidtypeCheck(ExpressionVisitor visitor) Type-check the expressionMethods inherited from class Clause
containsNonInlineableVariableReference, getLocationId, optimize, setLocationId
-
Constructor Details
-
ForClause
public ForClause()
-
-
Method Details
-
getClauseKey
public int 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
-
setSequence
Set the expression over which the "for" variable iterates- Parameters:
sequence- the expression over which the variable ranges
-
getSequence
Get the expression over which the "for" variable iterates- Returns:
- the expression over which the variable ranges
-
setRangeVariable
Set the range variable (the primary variable bound by this clause)- Parameters:
binding- the range variable
-
getRangeVariable
Get the range variable (the primary variable bound by this clause)- Returns:
- the range variable
-
setPositionVariable
Set the position variable (the variable bound by the "at" clause)- Parameters:
binding- the position variable
-
getPositionVariable
Get the position variable (the variable bound by the "at" clause)- Returns:
- the position variable
-
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
Type-check the expression- Overrides:
typeCheckin classClause- Parameters:
visitor- the ExpressionVisitor, providing access to static context information- Throws:
XPathException- if any error is detected
-
getPullStream
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
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 streamcontext- 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, ExpressionVisitor.ContextItemType contextItemType, Expression condition) throws XPathException Convert where clause to a predicate.- Parameters:
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
-
processSubExpressions
Process the subexpressions of this clause- Specified by:
processSubExpressionsin classClause- Parameters:
processor- the expression processor used to process the subexpressions- Throws:
XPathException- if any error is detected
-
gatherVariableReferences
-
gatherVariableReferences
public void gatherVariableReferences(ExpressionVisitor visitor, Binding binding, 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, 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
-
explain
Diagnostic print of expression structure. The abstract expression tree is written to the supplied output destination. -
toString
-