net.sf.saxon.expr.flwor

## Class Clause

- java.lang.Object
- - net.sf.saxon.expr.flwor.Clause

- Direct Known Subclasses:
    CountClause, ForClause, GroupByClause, LetClause, OrderByClause, TraceClause, WhereClause, WindowClause

      public abstract class Clause
      extends 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 and 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 and Description
    `Clause()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `containsNonInlineableVariableReference(Binding binding)` Determine whether the clause contains a reference to a local variable binding that cannot be inlined
    `abstract Clause` | `copy()` Create a copy of this clause
    `abstract void` | `explain(ExpressionPresenter out)` 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 clause
    `abstract int` | `getClauseKey()` Get a keyword identifying what kind of clause this is
    `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
    `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
    `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
    `LocalVariableBinding[]` | `getRangeVariables()` Get the variables bound by this clause
    `void` | `optimize(ExpressionVisitor visitor, ExpressionVisitor.ContextItemType contextItemType)` Optimize any expressions contained within this clause
    `abstract 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` | `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
    `void` | `typeCheck(ExpressionVisitor visitor)` Type-check any expression contained within this clause

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### 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

  - ### Constructor Detail

    - #### Clause

          public Clause()

  - ### 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 information
        `contextItemType` - 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 stream
        `context` - 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 stream
        `context` - 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,
                                      List<VariableReference> refs)

      Build a list of all references to a variables declared in this clause
      Parameters:
        `visitor` - the expression visitor
        `binding` - a variable declared in this clause
        `refs` - 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,
                                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 visitor
        `references` - the list of variable references
        `returnExpr` - 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

Copyright (c) 2004-2013 Saxonica Limited. All rights reserved.