Package net.sf.saxon.expr.flwor
Class Clause
- java.lang.Object
-
- net.sf.saxon.expr.flwor.Clause
-
- Direct Known Subclasses:
ForClause
,LetClause
,OrderByClause
,TraceClause
,WhereClause
public abstract class Clause extends java.lang.Object
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).
-
-
Field Summary
Fields Modifier and Type Field Description static int
COUNT
static int
FOR
static int
GROUPBYCLAUSE
static int
LET
static int
ORDERBYCLAUSE
static int
TRACE
static int
WHERE
static int
WINDOW
-
Constructor Summary
Constructors Constructor Description Clause()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description boolean
containsNonInlineableVariableReference(Binding binding)
Determine whether the clause contains a reference to a local variable binding that cannot be inlinedabstract Clause
copy()
Create a copy of this clauseabstract void
explain(ExpressionPresenter out)
Diagnostic print of expression structure.void
gatherVariableReferences(ExpressionVisitor visitor, Binding binding, java.util.List<VariableReference> refs)
Build a list of all references to a variables declared in this clauseabstract int
getClauseKey()
Get a keyword identifying what kind of clause this isint
getLocationId()
Get the location ID, which can be used in conjunction with a LocationProvider 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, XPathContext context)
Get a push-mode tuple stream that implements the functionality of this clause, supplying its output to another tuple streamLocalVariableBinding[]
getRangeVariables()
Get the variables bound by this clausevoid
optimize(ExpressionVisitor visitor, ExpressionVisitor.ContextItemType contextItemType)
Optimize any expressions contained within this clauseabstract void
processSubExpressions(ExpressionProcessor processor)
Process the subexpressions of this clausevoid
refineVariableType(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 clausevoid
setLocationId(int locationId)
Set the location ID, which can be used in conjunction with a LocationProvider to determine the system ID and line number of the clausevoid
typeCheck(ExpressionVisitor visitor)
Type-check any expression contained within this clause
-
-
-
Field Detail
-
FOR
public static final int FOR
- See Also:
- Constant Field Values
-
LET
public static final int LET
- See Also:
- Constant Field Values
-
WINDOW
public static final int WINDOW
- See Also:
- Constant Field Values
-
GROUPBYCLAUSE
public static final int GROUPBYCLAUSE
- See Also:
- Constant Field Values
-
COUNT
public static final int COUNT
- See Also:
- Constant Field Values
-
ORDERBYCLAUSE
public static final int ORDERBYCLAUSE
- See Also:
- Constant Field Values
-
WHERE
public static final int WHERE
- See Also:
- Constant Field Values
-
TRACE
public static final int TRACE
- See Also:
- Constant Field Values
-
-
Method Detail
-
getLocationId
public int getLocationId()
Get the location ID, which can be used in conjunction with a LocationProvider to determine the system ID and line number of the clause- Returns:
- the location ID
-
setLocationId
public void setLocationId(int locationId)
Set the location ID, which can be used in conjunction with a LocationProvider to determine the system ID and line number of the clause- Parameters:
locationId
- the location ID
-
copy
public abstract Clause copy()
Create a copy of this clause- Returns:
- the copied clause
-
optimize
public void optimize(ExpressionVisitor visitor, ExpressionVisitor.ContextItemType 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) throws XPathException
Type-check any expression contained within this clause- Parameters:
visitor
- the ExpressionVisitor, providing access to static context information- Throws:
XPathException
- if any error is detected
-
getPullStream
public abstract 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 modifies- Parameters:
base
- the input tuple streamcontext
- the dynamic evaluation context- Returns:
- the output tuple stream
-
getPushStream
public abstract 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- 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
-
processSubExpressions
public abstract void processSubExpressions(ExpressionProcessor processor) throws XPathException
Process the subexpressions of this clause- Parameters:
processor
- the expression processor used to process the subexpressions- Throws:
XPathException
- if any error is detected
-
explain
public abstract void explain(ExpressionPresenter out)
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
-
getRangeVariables
public LocalVariableBinding[] getRangeVariables()
Get the variables bound by this clause- Returns:
- the variable bindings
-
gatherVariableReferences
public void gatherVariableReferences(ExpressionVisitor visitor, Binding binding, java.util.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
public boolean containsNonInlineableVariableReference(Binding binding)
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, java.util.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
-
getClauseKey
public abstract int getClauseKey()
Get a keyword identifying what kind of clause this is- Returns:
- the kind of clause
-
-