Class ForClause

  • Direct Known Subclasses:
    ForMemberClause

    public class ForClause
    extends Clause
    A "for" clause in a FLWOR expression
    • 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
        rebindings - the rebinding map
        Returns:
        the copied clause
      • setSequence

        public void setSequence​(Expression sequence)
      • 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
      • 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 - if any error occurs
      • 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