## net.sf.saxon.expr
Class Assignation

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

All Implemented Interfaces:
  Serializable, SourceLocator, Binding, Container, EvaluableItem, SequenceIterable, InstructionInfoProvider

Direct Known Subclasses:
  ForExpression, LetExpression, QuantifiedExpression

    public abstract class Assignation

extends Expression
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

Fields inherited from class 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
`Expression` `getAction()` Get the action expression
`int` `getLocalSlotNumber()` If this is a local variable held on the local stack frame, return the corresponding slot number.
`int` `getRequiredSlots()` Get the number of slots required.
`Expression` `getSequence()` Get the "sequence" expression - the one to which the variable is bound
`RangeVariableDeclaration` `getVariableDeclaration()` Get the variable declaration
`int` `getVariableFingerprint()`
`String` `getVariableName()` Get the display name of the range variable, for diagnostics only
`int` `getVariableNameCode()`
`boolean` `isAssignable()` Test whether it is permitted to assign to the variable using the saxon:assign extension element.
`boolean` `isGlobal()` Indicate whether the binding is local or global.
`Iterator` `iterateSubExpressions()` Get the immediate subexpressions of this expression
`Expression` `promote(PromotionOffer offer)` Promote this expression if possible
`boolean` `replaceSubExpression(Expression original, Expression replacement)` Replace one subexpression by a replacement subexpression
`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
`void` `suppressValidation(int validationMode)` Suppress validation on contained element constructors, on the grounds that the parent element is already performing validation.

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

`adoptChildExpression, checkPermittedContents, computeDependencies, computeSpecialProperties, computeStaticProperties, display, doPromotion, effectiveBooleanValue, evaluateAsString, evaluateItem, getCardinality, getColumnNumber, getContainingProcedure, getDependencies, getExecutable, getHostLanguage, getImplementationMethod, getInstructionInfo, getIntrinsicDependencies, getItemType, getLineNumber, getLocationId, getLocationProvider, getParentExpression, getPublicId, getSlotsUsed, getSpecialProperties, getSystemId, hasBadParentPointer, iterate, markTailFunctionCalls, optimize, process, resetStaticProperties, setLocationId, setParentExpression, setParentExpression, typeCheck`

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

Constructor Detail

### Assignation

    public Assignation()

Method Detail

### setVariableDeclaration

    public void setVariableDeclaration(RangeVariableDeclaration decl)

  Set the reference to the variable declaration

### getVariableDeclaration

    public RangeVariableDeclaration getVariableDeclaration()

  Get 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 final 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`

### isAssignable

    public final boolean isAssignable()

  Test whether it is permitted to assign to the variable using the saxon:assign extension element. This will only be for an XSLT global variable where the extra attribute saxon:assignable="yes" is present.

  Specified by:
    `isAssignable` in interface `Binding`

### getLocalSlotNumber

    public int getLocalSlotNumber()

  If this is a local variable held on the local stack frame, return the corresponding slot number. In other cases, return -1.

  Specified by:
    `getLocalSlotNumber` 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

### getSequence

    public Expression getSequence()

  Get 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

### getRequiredSlots

    public int getRequiredSlots()

  Get the number of slots required. Normally 1, except for a FOR expression with an AT clause, where it is 2.

### simplify

    public Expression simplify(StaticContext env)
                        throws XPathException

  Simplify the expression

  Overrides:
    `simplify` in class `Expression`
  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

  Overrides:
    `promote` in class `Expression`
  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

### suppressValidation

    public void suppressValidation(int validationMode)

  Suppress validation on contained element constructors, on the grounds that the parent element is already performing validation. The default implementation does nothing.

  Overrides:
    `suppressValidation` in class `Expression`

### iterateSubExpressions

    public Iterator iterateSubExpressions()

  Get the immediate subexpressions of this expression

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

### replaceSubExpression

    public boolean replaceSubExpression(Expression original,
                                        Expression replacement)

  Replace one subexpression by a replacement subexpression

  Specified by:
    `replaceSubExpression` in interface `Container`
  Overrides:
    `replaceSubExpression` in class `Expression`
  Parameters:
    `original` - the original subexpression
    `replacement` - the replacement subexpression
  Returns:
    true if the original subexpression is found

### getVariableNameCode

    public int getVariableNameCode()

### getVariableFingerprint

    public int getVariableFingerprint()

### getVariableName

    public String getVariableName()

  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`

Copyright (C) Michael H. Kay. All rights reserved.