public class ForClause extends Clause
COUNT, FOR, GROUPBYCLAUSE, LET, ORDERBYCLAUSE, TRACE, WHERE, WINDOW
Constructor and Description |
---|
ForClause() |
Modifier and Type | Method and Description |
---|---|
boolean |
addPredicate(FLWORExpression flwor,
ExpressionVisitor visitor,
ExpressionVisitor.ContextItemType contextItemType,
Expression condition)
Convert where clause to a predicate.
|
ForClause |
copy()
Create a copy of this clause
|
void |
explain(ExpressionPresenter out)
Diagnostic print of expression structure.
|
void |
gatherVariableReferences(ExpressionVisitor visitor,
Binding binding,
List<VariableReference> references)
Build a list of all references to a variables declared in this clause
|
void |
gatherVariableReferences(List references) |
int |
getClauseKey()
Get a keyword identifying what kind of clause this is
|
LocalVariableBinding |
getPositionVariable()
Get the position variable (the variable bound by the "at" clause)
|
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
|
TuplePush |
getPushStream(TuplePush destination,
XPathContext context)
Get a push-mode tuple stream that implements the functionality of this clause, supplying its
output to another tuple stream
|
LocalVariableBinding |
getRangeVariable()
Get the range variable (the primary variable bound by this clause)
|
LocalVariableBinding[] |
getRangeVariables()
Get the number of variables bound by this clause
|
Expression |
getSequence()
Get the expression over which the "for" variable iterates
|
boolean |
isAllowingEmpty()
Ask whether the "allowing empty" option is present
|
void |
processSubExpressions(ExpressionProcessor processor)
Process the subexpressions of this clause
|
void |
refineVariableType(ExpressionVisitor visitor,
List<VariableReference> references,
Expression returnExpr)
Supply improved type information to the expressions that contain references to the variables declared in this clause
|
void |
setAllowingEmpty(boolean option)
Say whether the "allowing empty" option is present
|
void |
setPositionVariable(LocalVariableBinding binding)
Set the position variable (the variable bound by the "at" clause)
|
void |
setRangeVariable(LocalVariableBinding binding)
Set the range variable (the primary variable bound by this clause)
|
void |
setSequence(Expression sequence)
Set the expression over which the "for" variable iterates
|
String |
toString() |
void |
typeCheck(ExpressionVisitor visitor)
Type-check the expression
|
containsNonInlineableVariableReference, getLocationId, optimize, setLocationId
public int getClauseKey()
Clause
getClauseKey
in class Clause
public void setSequence(Expression sequence)
sequence
- the expression over which the variable rangespublic Expression getSequence()
public void setRangeVariable(LocalVariableBinding binding)
binding
- the range variablepublic LocalVariableBinding getRangeVariable()
public void setPositionVariable(LocalVariableBinding binding)
binding
- the position variablepublic LocalVariableBinding getPositionVariable()
public LocalVariableBinding[] getRangeVariables()
getRangeVariables
in class Clause
public void setAllowingEmpty(boolean option)
option
- true if the "allowing empty" option is presentpublic boolean isAllowingEmpty()
public void typeCheck(ExpressionVisitor visitor) throws XPathException
typeCheck
in class Clause
visitor
- the ExpressionVisitor, providing access to static context informationXPathException
- if any error is detectedpublic TuplePull getPullStream(TuplePull base, XPathContext context)
getPullStream
in class Clause
base
- the input tuple streamcontext
- the XPath dynamic contextpublic TuplePush getPushStream(TuplePush destination, XPathContext context)
getPushStream
in class Clause
destination
- the output tuple streamcontext
- the dynamic evaluation contextpublic boolean addPredicate(FLWORExpression flwor, ExpressionVisitor visitor, ExpressionVisitor.ContextItemType contextItemType, Expression condition) throws XPathException
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 methodXPathException
- if an error is encounteredpublic void processSubExpressions(ExpressionProcessor processor) throws XPathException
processSubExpressions
in class Clause
processor
- the expression processor used to process the subexpressionsXPathException
- if any error is detectedpublic void gatherVariableReferences(List references)
public void gatherVariableReferences(ExpressionVisitor visitor, Binding binding, List<VariableReference> references)
Clause
gatherVariableReferences
in class Clause
visitor
- the expression visitorbinding
- a variable declared in this clausereferences
- the list of variable references, initially empty, to which the method will appendpublic void refineVariableType(ExpressionVisitor visitor, List<VariableReference> references, Expression returnExpr)
Clause
refineVariableType
in class Clause
visitor
- the expression visitorreferences
- the list of variable referencesreturnExpr
- the expression in the return clausepublic void explain(ExpressionPresenter out)
Copyright (c) 2004-2013 Saxonica Limited. All rights reserved.