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.ObjectA "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 intCOUNTstatic intFORstatic intGROUPBYCLAUSEstatic intLETstatic intORDERBYCLAUSEstatic intTRACEstatic intWHEREstatic intWINDOW
-
Constructor Summary
Constructors Constructor Description Clause()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description booleancontainsNonInlineableVariableReference(Binding binding)Determine whether the clause contains a reference to a local variable binding that cannot be inlinedabstract Clausecopy()Create a copy of this clauseabstract voidexplain(ExpressionPresenter out)Diagnostic print of expression structure.voidgatherVariableReferences(ExpressionVisitor visitor, Binding binding, java.util.List<VariableReference> refs)Build a list of all references to a variables declared in this clauseabstract intgetClauseKey()Get a keyword identifying what kind of clause this isintgetLocationId()Get the location ID, which can be used in conjunction with a LocationProvider to determine the system ID and line number of the clauseabstract TuplePullgetPullStream(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 TuplePushgetPushStream(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 clausevoidoptimize(ExpressionVisitor visitor, ExpressionVisitor.ContextItemType contextItemType)Optimize any expressions contained within this clauseabstract voidprocessSubExpressions(ExpressionProcessor 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 clausevoidsetLocationId(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 clausevoidtypeCheck(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
-
-