## net.sf.saxon.expr
Class Assignation

    java.lang.Object
      net.sf.saxon.expr.ComputedExpression
          net.sf.saxon.expr.Assignation

All Implemented Interfaces:
  Binding, Container, Expression, InstructionInfoProvider, java.io.Serializable, javax.xml.transform.SourceLocator

Direct Known Subclasses:
  ForExpression, LetExpression

public abstract class Assignation
extends ComputedExpression
implements Binding

Assignation is an abstract superclass for the kinds of expression that declare range variables: for, some, and every.

See Also:
  Serialized Form

Field Summary
`protected Expression` `action`
`protected RangeVariableDeclaration` `declaration`
`protected int` `nameCode`
`protected Expression` `sequence`
`protected int` `slotNumber`
`protected java.lang.String` `variableName`

Fields inherited from class net.sf.saxon.expr.ComputedExpression
`locationId, staticProperties`

Fields inherited from interface net.sf.saxon.expr.Expression
`EVALUATE_METHOD, ITERATE_METHOD, PROCESS_METHOD`

Constructor Summary
`Assignation()`

Method Summary
`ValueRepresentation` `evaluateVariable(XPathContext context)` Get the value of the range variable
`protected Binding[]` `extendBindingList(Binding[] in)` Extend an array of variable bindings to include the binding(s) defined in this expression
`Expression` `getAction()` Get the action expression
`int` `getVariableFingerprint()`
`java.lang.String` `getVariableName(NamePool pool)` Get the display name of the range variable, for diagnostics only
`int` `getVariableNameCode()`
`boolean` `isGlobal()` Indicate whether the binding is local or global.
`java.util.Iterator` `iterateSubExpressions()` Get the immediate subexpressions of this expression
`Expression` `promote(PromotionOffer offer)` Promote this expression if possible
`protected Expression` `promoteWhereClause(Binding positionBinding)` Promote a WHERE clause whose condition doesn't depend on the variable being bound.
`void` `setAction(Expression action)` Add the "return" or "satisfies" expression, and fix up all references to the range variable that occur within that expression
`void` `setSequence(Expression sequence)` Set the "sequence" expression - the one to which the variable is bound
`void` `setSlotNumber(int nr)` Set the slot number for the range variable
`void` `setVariableDeclaration(RangeVariableDeclaration decl)` Set the reference to the variable declaration
`Expression` `simplify(StaticContext env)` Simplify the expression

Methods inherited from class net.sf.saxon.expr.ComputedExpression

`adoptChildExpression, checkPermittedContents, computeCardinality, computeDependencies, computeSpecialProperties, computeStaticProperties, dynamicError, dynamicError, effectiveBooleanValue, evaluateAsString, evaluateItem, getCardinality, getColumnNumber, getConstructType, getDependencies, getExecutable, getImplementationMethod, getInstructionInfo, getIntrinsicDependencies, getLineNumber, getLocationId, getParentExpression, getPublicId, getSpecialProperties, getSystemId, iterate, markTailFunctionCalls, process, resetStaticProperties, setLocationId, setParentExpression, typeError, typeError`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Methods inherited from interface net.sf.saxon.expr.Expression
`analyze, display, getItemType`

Field Detail

### slotNumber

    protected int slotNumber

### sequence

    protected Expression sequence

### action

    protected Expression action

### variableName

    protected java.lang.String variableName

### nameCode

    protected int nameCode

### declaration

    protected transient RangeVariableDeclaration declaration

Constructor Detail

### Assignation

    public Assignation()

Method Detail

### setVariableDeclaration

    public void setVariableDeclaration(RangeVariableDeclaration decl)

  Set the reference to the variable declaration

### setAction

    public void setAction(Expression action)

  Add the "return" or "satisfies" expression, and fix up all references to the range variable that occur within that expression

  Parameters:
    `action` - the expression that occurs after the "return" keyword of a "for" expression, the "satisfies" keyword of "some/every", or the ":=" operator of a "let" expression.

    This method must be called after calling setVariableDeclaration()

### isGlobal

    public boolean isGlobal()

  Indicate whether the binding is local or global. A global binding is one that has a fixed value for the life of a query or transformation; any other binding is local.

  Specified by:
    `isGlobal` in interface `Binding`

### getAction

    public Expression getAction()

  Get the action expression

### setSequence

    public void setSequence(Expression sequence)

  Set the "sequence" expression - the one to which the variable is bound

### setSlotNumber

    public void setSlotNumber(int nr)

  Set the slot number for the range variable

### simplify

    public Expression simplify(StaticContext env)
                        throws XPathException

  Simplify the expression

  Specified by:
    `simplify` in interface `Expression`
  Overrides:
    `simplify` in class `ComputedExpression`
  Returns:
    the simplified expression
  Throws:
    `XPathException` - if an error is discovered during expression rewriting

### promote

    public Expression promote(PromotionOffer offer)
                       throws XPathException

  Promote this expression if possible

  Specified by:
    `promote` in interface `Expression`
  Overrides:
    `promote` in class `ComputedExpression`
  Parameters:
    `offer` - details of the offer, for example the offer to move expressions that don't depend on the context to an outer level in the containing expression
  Returns:
    if the offer is not accepted, return this expression unchanged. Otherwise return the result of rewriting the expression to promote this subexpression
  Throws:
    `XPathException` - if any error is detected

### extendBindingList

    protected Binding[] extendBindingList(Binding[] in)

  Extend an array of variable bindings to include the binding(s) defined in this expression

### promoteWhereClause

    protected Expression promoteWhereClause(Binding positionBinding)

  Promote a WHERE clause whose condition doesn't depend on the variable being bound. This rewrites an expression of the form

  let $i := SEQ return if (C) then R else ()

  to the form:

  if (C) then (let $i := SEQ return R) else ()

### iterateSubExpressions

    public java.util.Iterator iterateSubExpressions()

  Get the immediate subexpressions of this expression

  Specified by:
    `iterateSubExpressions` in interface `Expression`
  Overrides:
    `iterateSubExpressions` in class `ComputedExpression`
  Returns:
    an iterator containing the sub-expressions of this expression

### getVariableNameCode

    public int getVariableNameCode()

### getVariableFingerprint

    public int getVariableFingerprint()

### getVariableName

    public java.lang.String getVariableName(NamePool pool)

  Get the display name of the range variable, for diagnostics only

### evaluateVariable

    public ValueRepresentation evaluateVariable(XPathContext context)
                                         throws XPathException

  Get the value of the range variable

  Specified by:
    `evaluateVariable` in interface `Binding`
  Throws:
    `XPathException`