## net.sf.saxon.expr
Class RangeVariableDeclaration

    java.lang.Object
      net.sf.saxon.expr.RangeVariableDeclaration

All Implemented Interfaces:
  VariableDeclaration

public class RangeVariableDeclaration
extends java.lang.Object
implements VariableDeclaration

Represents the defining occurrence of a variable declared for local use within an expression, for example the $x in "for $x in ...". This object is used only at compile-time. In XQuery (but not in XSLT) this class is also used to represent the formal arguments of a function.

Constructor Summary
`RangeVariableDeclaration()`

Method Summary
`void` `fixupReferences(Binding binding)`
`int` `getNameCode()` Get the name of the variable, as a namepool name code
`int` `getReferenceCount(Binding binding)` Determine how often the range variable is referenced.
`static int` `getReferenceCount(java.util.List references, Binding binding)` Determine how often a variable is referenced.
`java.util.List` `getReferenceList()`
`SequenceType` `getRequiredType()` Get the required type (declared type) of the variable
`java.lang.String` `getVariableName()` Get the name of the variable for use in diagnostics - a lexical QName
`void` `refineTypeInformation(ItemType type, int cardinality, Value constantValue, int properties)`
`void` `registerReference(BindingReference ref)` Method called by a BindingReference to register the variable reference for subsequent fixup.
`void` `setNameCode(int nameCode)` Set the name of the variable, as a namepool name code
`void` `setReferenceList(java.util.List references)`
`void` `setRequiredType(SequenceType requiredType)` Set the required type (declared type) of the variable
`void` `setVariableName(java.lang.String variableName)`

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

Constructor Detail

### RangeVariableDeclaration

    public RangeVariableDeclaration()

Method Detail

### setNameCode

    public void setNameCode(int nameCode)

  Set the name of the variable, as a namepool name code

  Parameters:
    `nameCode` -

### getNameCode

    public int getNameCode()

  Get the name of the variable, as a namepool name code

  Specified by:
    `getNameCode` in interface `VariableDeclaration`
  Returns:
    the nameCode

### getRequiredType

    public SequenceType getRequiredType()

  Get the required type (declared type) of the variable

  Returns:
    the required type

### setRequiredType

    public void setRequiredType(SequenceType requiredType)

  Set the required type (declared type) of the variable

  Parameters:
    `requiredType` - the required type

### setVariableName

    public void setVariableName(java.lang.String variableName)

### getVariableName

    public java.lang.String getVariableName()

  Description copied from interface: `VariableDeclaration`
  Get the name of the variable for use in diagnostics - a lexical QName

  Specified by:
    `getVariableName` in interface `VariableDeclaration`

### registerReference

    public void registerReference(BindingReference ref)

  Description copied from interface: `VariableDeclaration`
  Method called by a BindingReference to register the variable reference for subsequent fixup. This method is called by the XPath parser when each reference to the variable is encountered. At some time after parsing and before execution of the expression, the VariableDeclaration is responsible for calling the two methods setStaticType() and fixup() on each BindingReference that has been registered with it.

  Specified by:
    `registerReference` in interface `VariableDeclaration`

### setReferenceList

    public void setReferenceList(java.util.List references)

### getReferenceList

    public java.util.List getReferenceList()

### getReferenceCount

    public int getReferenceCount(Binding binding)

  Determine how often the range variable is referenced. This is the number of times it is referenced at run-time: so a reference in a loop counts as "many".

  Parameters:
    `binding` - the variable binding
  Returns:
    the number of references. The only interesting values are 0, 1, and "many" (represented by any value >1).

### getReferenceCount

    public static int getReferenceCount(java.util.List references,
                                        Binding binding)

  Determine how often a variable is referenced. This is the number of times it is referenced at run-time: so a reference in a loop counts as "many". This code currently handles local variables (Let expressions) and function parameters. It is not currently used for XSLT template parameters. It's not the end of the world if the answer is wrong (unless it's wrongly given as zero), but if wrongly returned as 1 then the variable will be repeatedly evaluated.

  Parameters:
    `references` - a list of references to a variable binding: each item in this list must be a VariableReference object
    `binding` - the variable binding
  Returns:
    the number of references. The only interesting values are 0, 1, and "many" (represented by any value >1).

### fixupReferences

    public void fixupReferences(Binding binding)

### refineTypeInformation

    public void refineTypeInformation(ItemType type,
                                      int cardinality,
                                      Value constantValue,
                                      int properties)