Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## net.sf.saxon.expr.flwor
Class LocalVariableBinding

    java.lang.Object
      net.sf.saxon.expr.flwor.LocalVariableBinding

All Implemented Interfaces:
  Binding

    public class LocalVariableBinding

extends Object
implements Binding

Represents the defining occurrence of a variable declared within a FLWOR expression, for example the $p in "for $x at $p in ...".

Constructor Summary
`LocalVariableBinding(StructuredQName name, SequenceType type)` Create a LocalVariableBinding

Method Summary
`void` | `addReference(boolean isLoopingReference)` Register a variable reference that refers to the variable bound in this expression
`LocalVariableBinding` | `copy()` Make a copy of this LocalVariableBinding (except for the slot number)
`ValueRepresentation` | `evaluateVariable(XPathContext context)` Get the value of the range variable
`IntegerValue[]` | `getIntegerBoundsForVariable()` If the variable is bound to an integer, get the minimum and maximum possible values.
`int` | `getLocalSlotNumber()` If this is a local variable held on the local stack frame, return the corresponding slot number.
`int` | `getNominalReferenceCount()` Get the (nominal) count of the number of references to this variable
`SequenceType` | `getRequiredType()` Get the required type (declared type) of the variable
`StructuredQName` | `getVariableQName()` Get the name of the variable
`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.
`void` | `setIndexedVariable()` Indicate that the variable bound by this let expression should be indexable (because it is used in an appropriate filter expression)
`void` | `setSlotNumber(int nr)` Set the slot number for the range variable
`void` | `setVariableQName(StructuredQName variableName)` Set the name of the variable

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

Constructor Detail

### LocalVariableBinding

    public LocalVariableBinding(StructuredQName name,
                                SequenceType type)

  Create a LocalVariableBinding

  Parameters:
    `name` - the name of the variable
    `type` - the static type of the variable

Method Detail

### copy

    public LocalVariableBinding copy()

  Make a copy of this LocalVariableBinding (except for the slot number)

  Returns:
    a copy of the binding

### getVariableQName

    public StructuredQName getVariableQName()

  Get the name of the variable

  Specified by:
    `getVariableQName` in interface `Binding`
  Returns:
    the name of the variable

### getRequiredType

    public SequenceType getRequiredType()

  Get the required type (declared type) of the variable

  Specified by:
    `getRequiredType` in interface `Binding`
  Returns:
    the required type

### getIntegerBoundsForVariable

    public IntegerValue[] getIntegerBoundsForVariable()

  If the variable is bound to an integer, get the minimum and maximum possible values. Return null if unknown or not applicable

  Specified by:
    `getIntegerBoundsForVariable` in interface `Binding`
  Returns:
    a pair of integers containing the minimum and maximum values for the integer value; or null if the value is not an integer or the range is unknown

### getNominalReferenceCount

    public int getNominalReferenceCount()

  Get the (nominal) count of the number of references to this variable

  Returns:
    zero if there are no references, one if there is a single reference that is not in a loop, some higher number if there are multiple references (or a single reference in a loop), or the special value @link RangeVariable#FILTERED} if there are any references in filter expressions that require searching.

### addReference

    public void addReference(boolean isLoopingReference)

  Register a variable reference that refers to the variable bound in this expression

  Specified by:
    `addReference` in interface `Binding`
  Parameters:
    `isLoopingReference` - - true if the reference occurs within a loop, such as the predicate of a filter expression

### setIndexedVariable

    public void setIndexedVariable()

  Indicate that the variable bound by this let expression should be indexable (because it is used in an appropriate filter expression)

### setVariableQName

    public void setVariableQName(StructuredQName variableName)

  Set the name of the variable

  Parameters:
    `variableName` - the name of the variable

### setSlotNumber

    public void setSlotNumber(int nr)

  Set the slot number for the range variable

  Parameters:
    `nr` - the slot number to be used

### 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`
  Returns:
    the slot number on the local stack frame

### evaluateVariable

    public ValueRepresentation evaluateVariable(XPathContext context)
                                         throws XPathException

  Get the value of the range variable

  Specified by:
    `evaluateVariable` in interface `Binding`
  Parameters:
    `context` - the XPath dynamic evaluation context
  Returns:
    the result of evaluating the variable
  Throws:
    `XPathException` - if an error occurs while evaluating the variable

### isAssignable

    public 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`
  Returns:
    true if the binding is assignable

### 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`
  Returns:
    true if the binding is global

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

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