Package net.sf.saxon.expr.flwor
Class Clause
java.lang.Object
net.sf.saxon.expr.flwor.Clause
- Direct Known Subclasses:
CountClause
,DiagnosticClause
,ForClause
,GroupByClause
,LetClause
,OrderByClause
,TraceClause
,WhereClause
,WhileClause
,WindowClause
A "Clause" refers specifically to one of the clauses of a FLWOR expression, for example the "for"
clause, the "let" clause, the "where" or "order by" clause. (The "return" clause, however, is not
modelled as a Clause).
-
Nested Class Summary
Nested Classes -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionabstract void
addToPathMap
(PathMap pathMap, PathMap.PathMapNodeSet pathMapNodeSet) Collect information about the navigation paths followed by this clause, for document projection purposesboolean
Determine whether the clause contains a reference to a local variable binding that cannot be inlinedabstract Clause
copy
(FLWORExpression flwor, RebindingMap rebindings) Create a copy of this clauseabstract void
Diagnostic print of expression structure.void
gatherVariableReferences
(ExpressionVisitor visitor, Binding binding, List<VariableReference> refs) Build a list of all references to a variables declared in this clauseabstract Clause.ClauseName
Get a keyword identifying what kind of clause this isGet the location, which can be used to determine the system ID and line number of the clauseabstract TuplePull
getPullStream
(TuplePull base, XPathContext context) Get a pull-mode tuple stream that implements the functionality of this clause, taking its input from another tuple stream which this clause modifiesabstract 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 streamGet the variables bound by this clauseGet information for inclusion in trace outputboolean
void
optimize
(ExpressionVisitor visitor, ContextItemStaticInfo contextItemType) Optimize any expressions contained within this clauseabstract void
processOperands
(OperandProcessor processor) Process the subexpressions of this clausevoid
refineVariableType
(ExpressionVisitor visitor, List<VariableReference> references, Expression returnExpr) Supply improved type information to the expressions that contain references to the variables declared in this clausevoid
setLocation
(Location locationId) Set the location, which can be used to determine the system ID and line number of the clausevoid
void
setRepeated
(boolean repeated) Get a short string representation of the clausevoid
typeCheck
(ExpressionVisitor visitor, ContextItemStaticInfo contextInfo) Type-check any expression contained within this clause
-
Constructor Details
-
Clause
public Clause()
-
-
Method Details
-
getLocation
Get the location, which can be used to determine the system ID and line number of the clause- Returns:
- the location, or
Loc.NONE
if not known
-
setLocation
Set the location, which can be used to determine the system ID and line number of the clause- Parameters:
locationId
- the location
-
setPackageData
-
getPackageData
-
getConfiguration
-
setRepeated
public void setRepeated(boolean repeated) -
isRepeated
public boolean isRepeated() -
copy
Create a copy of this clause- Parameters:
flwor
- the new FLWORExpression to contain the copied clause. Note that this will not have been fully initialized.rebindings
- the rebinding map- Returns:
- the copied clause
-
optimize
public void optimize(ExpressionVisitor visitor, ContextItemStaticInfo contextItemType) throws XPathException Optimize any expressions contained within this clause- Parameters:
visitor
- the ExpressionVisitor, providing access to static context informationcontextItemType
- the type of the context item- Throws:
XPathException
- if any error is detected
-
typeCheck
public void typeCheck(ExpressionVisitor visitor, ContextItemStaticInfo contextInfo) throws XPathException Type-check any expression contained within this clause- Parameters:
visitor
- the ExpressionVisitor, providing access to static context informationcontextInfo
- static information about the dynamic context- Throws:
XPathException
- if any error is detected
-
getPullStream
Get a pull-mode tuple stream that implements the functionality of this clause, taking its input from another tuple stream which this clause modifies- Parameters:
base
- the input tuple streamcontext
- the dynamic evaluation context- Returns:
- the output tuple stream
-
getPushStream
public abstract 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- 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
-
processOperands
Process the subexpressions of this clause- Parameters:
processor
- the expression processor used to process the subexpressions- Throws:
XPathException
- if any error is detected
-
explain
Diagnostic print of expression structure. The abstract expression tree is written to the supplied output destination.- Parameters:
out
- the expression presenter used to display the structure- Throws:
XPathException
- if any error occurs
-
getRangeVariables
Get the variables bound by this clause- Returns:
- the variable bindings
-
gatherVariableReferences
public void gatherVariableReferences(ExpressionVisitor visitor, Binding binding, List<VariableReference> refs) Build a list of all references to a variables declared in this clause- Parameters:
visitor
- the expression visitorbinding
- a variable declared in this clauserefs
- the list of variable references, initially empty, to which the method will append
-
containsNonInlineableVariableReference
Determine whether the clause contains a reference to a local variable binding that cannot be inlined- Parameters:
binding
- the binding for the local variable in question- Returns:
- true if this clause uses the variable in a way that does not permit inlining
-
refineVariableType
public 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- Parameters:
visitor
- the expression visitorreferences
- the list of variable referencesreturnExpr
- the expression in the return clause
-
addToPathMap
Collect information about the navigation paths followed by this clause, for document projection purposes- 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
-
getClauseKey
Get a keyword identifying what kind of clause this is- Returns:
- the kind of clause
-
toShortString
Get a short string representation of the clause- Returns:
- a recognizable string
-
getTraceInfo
Get information for inclusion in trace output- Returns:
- a map containing the properties to be output
-