Package net.sf.saxon.expr.flwor

## Class ForClause

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

-     public class ForClause
      extends Clause

  A "for" clause in a FLWOR expression

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class net.sf.saxon.expr.flwor.Clause

      `Clause.ClauseName`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `ForClause()` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `boolean` | `addPredicate​(FLWORExpression flwor, ExpressionVisitor visitor, ContextItemStaticInfo contextItemType, Expression condition)` | Convert where clause to a predicate.
    `void` | `addToPathMap​(PathMap pathMap, PathMap.PathMapNodeSet pathMapNodeSet)` | Collect information about the navigation paths followed by this clause, for document projection purposes
    `ForClause` | `copy​(FLWORExpression flwor, RebindingMap rebindings)` | Create a copy of this clause
    `void` | `explain​(ExpressionPresenter out)` | Diagnostic print of expression structure.
    `void` | `gatherVariableReferences​(ExpressionVisitor visitor, Binding binding, java.util.List<VariableReference> references)` | Build a list of all references to a variables declared in this clause
    `Clause.ClauseName` | `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, Outputter output, 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()` |
    `void` | `initSequence​(FLWORExpression flwor, Expression sequence)` |
    `boolean` | `isAllowingEmpty()` | Ask whether the "allowing empty" option is present
    `void` | `processOperands​(OperandProcessor processor)` | Process the subexpressions of this clause
    `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
    `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)` |
    `java.lang.String` | `toShortString()` | Get a short string representation of the clause
    `java.lang.String` | `toString()` |
    `void` | `typeCheck​(ExpressionVisitor visitor, ContextItemStaticInfo contextInfo)` | Type-check the expression

    - ### Methods inherited from class net.sf.saxon.expr.flwor.Clause

      `containsNonInlineableVariableReference, getConfiguration, getLocation, getPackageData, getTraceInfo, isRepeated, optimize, setLocation, setPackageData, setRepeated`

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

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

- - ### Constructor Detail

    - #### ForClause

          public ForClause()

  - ### Method Detail

    - #### getClauseKey

          public Clause.ClauseName getClauseKey()

      Description copied from class: `Clause`
      Get a keyword identifying what kind of clause this is
      Specified by:
        `getClauseKey` in class `Clause`
      Returns:
        the kind of clause

    - #### copy

          public ForClause copy​(FLWORExpression flwor,
                                RebindingMap rebindings)

      Description copied from class: `Clause`
      Create a copy of this clause
      Specified by:
        `copy` in class `Clause`
      Parameters:
        `flwor` - the new FLWORExpression to contain the copied clause
      Returns:
        the copied clause

    - #### initSequence

          public void initSequence​(FLWORExpression flwor,
                                   Expression sequence)

    - #### setSequence

          public void setSequence​(Expression sequence)

    - #### getSequence

          public Expression getSequence()

    - #### setRangeVariable

          public void setRangeVariable​(LocalVariableBinding binding)

      Set the range variable (the primary variable bound by this clause)
      Parameters:
        `binding` - the range variable

    - #### getRangeVariable

          public LocalVariableBinding getRangeVariable()

      Get the range variable (the primary variable bound by this clause)
      Returns:
        the range variable

    - #### setPositionVariable

          public void setPositionVariable​(LocalVariableBinding binding)

      Set the position variable (the variable bound by the "at" clause)
      Parameters:
        `binding` - the position variable, or null if there is no position variable

    - #### getPositionVariable

          public LocalVariableBinding getPositionVariable()

      Get the position variable (the variable bound by the "at" clause)
      Returns:
        the position variable, or null if there is no position variable

    - #### getRangeVariables

          public LocalVariableBinding[] getRangeVariables()

      Get the number of variables bound by this clause
      Overrides:
        `getRangeVariables` in class `Clause`
      Returns:
        the number of variable bindings (1 or 2 depending on whether there is a position variable)

    - #### setAllowingEmpty

          public void setAllowingEmpty​(boolean option)

      Say whether the "allowing empty" option is present
      Parameters:
        `option` - true if the "allowing empty" option is present

    - #### isAllowingEmpty

          public boolean isAllowingEmpty()

      Ask whether the "allowing empty" option is present
      Returns:
        true if the "allowing empty" option is present

    - #### typeCheck

          public void typeCheck​(ExpressionVisitor visitor,
                                ContextItemStaticInfo contextInfo)
                         throws XPathException

      Type-check the expression
      Overrides:
        `typeCheck` in class `Clause`
      Parameters:
        `visitor` - the ExpressionVisitor, providing access to static context information
        `contextInfo` - static information about the dynamic context
      Throws:
        `XPathException` - if any error is detected

    - #### getPullStream

          public 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
      Specified by:
        `getPullStream` in class `Clause`
      Parameters:
        `base` - the input tuple stream
        `context` - the XPath dynamic context
      Returns:
        the output tuple stream

    - #### getPushStream

          public 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
      Specified by:
        `getPushStream` in class `Clause`
      Parameters:
        `destination` - the output tuple stream
        `output` - the destination for the result
        `context` - the dynamic evaluation context
      Returns:
        the push tuple stream that implements the functionality of this clause of the FLWOR expression

    - #### addPredicate

          public boolean addPredicate​(FLWORExpression flwor,
                                      ExpressionVisitor visitor,
                                      ContextItemStaticInfo contextItemType,
                                      Expression condition)
                               throws XPathException

      Convert where clause to a predicate.
      Parameters:
        `flwor` - the FLWOR expression (sans the relevant part of the where clause)
        `visitor` - the expression visitor
        `contextItemType` - the item type of the context item
        `condition` - 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 method
      Returns:
        true if the expression has been changed, that is, if the where clause has been converted
      Throws:
        `XPathException` - if an error is encountered

    - #### processOperands

          public void processOperands​(OperandProcessor processor)
                               throws XPathException

      Process the subexpressions of this clause
      Specified by:
        `processOperands` in class `Clause`
      Parameters:
        `processor` - the expression processor used to process the subexpressions
      Throws:
        `XPathException` - if any error is detected

    - #### gatherVariableReferences

          public void gatherVariableReferences​(ExpressionVisitor visitor,
                                               Binding binding,
                                               java.util.List<VariableReference> references)

      Description copied from class: `Clause`
      Build a list of all references to a variables declared in this clause
      Overrides:
        `gatherVariableReferences` in class `Clause`
      Parameters:
        `visitor` - the expression visitor
        `binding` - a variable declared in this clause
        `references` - the list of variable references, initially empty, to which the method will append

    - #### refineVariableType

          public void refineVariableType​(ExpressionVisitor visitor,
                                         java.util.List<VariableReference> references,
                                         Expression returnExpr)

      Description copied from class: `Clause`
      Supply improved type information to the expressions that contain references to the variables declared in this clause
      Overrides:
        `refineVariableType` in class `Clause`
      Parameters:
        `visitor` - the expression visitor
        `references` - the list of variable references
        `returnExpr` - the expression in the return clause

    - #### addToPathMap

          public void addToPathMap​(PathMap pathMap,
                                   PathMap.PathMapNodeSet pathMapNodeSet)

      Description copied from class: `Clause`
      Collect information about the navigation paths followed by this clause, for document projection purposes
      Specified by:
        `addToPathMap` in class `Clause`
      Parameters:
        `pathMap` - the path map in which the data is to be collected
        `pathMapNodeSet` - the path map node set representing the paths to the context item

    - #### explain

          public void explain​(ExpressionPresenter out)
                       throws XPathException

      Diagnostic print of expression structure. The abstract expression tree is written to the supplied output destination.
      Specified by:
        `explain` in class `Clause`
      Parameters:
        `out` - the expression presenter used to display the structure
      Throws:
        `XPathException`

    - #### toShortString

          public java.lang.String toShortString()

      Description copied from class: `Clause`
      Get a short string representation of the clause
      Overrides:
        `toShortString` in class `Clause`
      Returns:
        a recognizable string

    - #### toString

          public java.lang.String toString()

      Overrides:
        `toString` in class `java.lang.Object`