Package net.sf.saxon.expr.instruct

## Class UserFunctionParameter

- java.lang.Object
- - net.sf.saxon.expr.instruct.UserFunctionParameter

- All Implemented Interfaces:
    `Binding`, `LocalBinding`

      public class UserFunctionParameter
      extends java.lang.Object
      implements LocalBinding

  Run-time object representing a formal argument to a user-defined function

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `UserFunctionParameter()` | Create a UserFunctionParameter

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `addReference​(VariableReference ref, boolean isLoopingReference)` | Register a variable reference that refers to the variable bound in this expression
    `Sequence` | `evaluateVariable​(XPathContext context)` | Evaluate this function parameter
    `FunctionStreamability` | `getFunctionStreamability()` | If this is the first argument of a streamable stylesheet function, get the streamability category; otherwise return `FunctionStreamability.UNCLASSIFIED`
    `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` | `getReferenceCount()` | Get the (nominal) number of references within the function body to this parameter, where a reference inside a loop is counted as multiple references
    `SequenceType` | `getRequiredType()` | Get the required type of this function parameter
    `StructuredQName` | `getVariableQName()` | Get the name of this parameter
    `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.
    `boolean` | `isIndexedVariable()` | Ask whether this parameter requires support for indexing
    `void` | `setFunctionStreamability​(FunctionStreamability ability)` | If this is the first argument of a streamable stylesheet function, set the streamability category
    `void` | `setIndexedVariable()` | Say that the bound value has the potential to be indexed
    `void` | `setIndexedVariable​(boolean indexed)` | Indicate that this parameter requires (or does not require) support for indexing
    `void` | `setRequiredType​(SequenceType type)` | Set the required type of this function parameter
    `void` | `setSlotNumber​(int slot)` | Set the slot number to be used by this parameter
    `void` | `setVariableQName​(StructuredQName name)` | Set the name of this parameter

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### UserFunctionParameter

          public UserFunctionParameter()

      Create a UserFunctionParameter

  - ### Method Detail

    - #### 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`
      Returns:
        false (always)

    - #### 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`
      Returns:
        false (always)

    - #### setSlotNumber

          public void setSlotNumber​(int slot)

      Set the slot number to be used by this parameter
      Parameters:
        `slot` - the slot number, that is, the position of the parameter value within the local stack frame

    - #### 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 `LocalBinding`
      Returns:
        the slot number, indicating the position of the parameter on the local stack frame

    - #### setRequiredType

          public void setRequiredType​(SequenceType type)

      Set the required type of this function parameter
      Parameters:
        `type` - the declared type of the parameter

    - #### getRequiredType

          public SequenceType getRequiredType()

      Get the required type of this function parameter
      Specified by:
        `getRequiredType` in interface `Binding`
      Returns:
        the declared type of the parameter

    - #### 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

    - #### setVariableQName

          public void setVariableQName​(StructuredQName name)

      Set the name of this parameter
      Parameters:
        `name` - the name of the parameter

    - #### getVariableQName

          public StructuredQName getVariableQName()

      Get the name of this parameter
      Specified by:
        `getVariableQName` in interface `Binding`
      Returns:
        the name of this parameter

    - #### addReference

          public void addReference​(VariableReference ref,
                                   boolean isLoopingReference)

      Description copied from interface: `Binding`
      Register a variable reference that refers to the variable bound in this expression
      Specified by:
        `addReference` in interface `Binding`
      Parameters:
        `ref` - the variable reference
        `isLoopingReference` - - true if the reference occurs within a loop, such as the predicate of a filter expression

    - #### getReferenceCount

          public int getReferenceCount()

      Get the (nominal) number of references within the function body to this parameter, where a reference inside a loop is counted as multiple references
      Returns:
        the nominal number of references

    - #### setIndexedVariable

          public void setIndexedVariable​(boolean indexed)

      Indicate that this parameter requires (or does not require) support for indexing
      Parameters:
        `indexed` - true if support for indexing is required. This will be set if the parameter is used in a filter expression such as $param[@a = 17]

    - #### setIndexedVariable

          public void setIndexedVariable()

      Description copied from interface: `LocalBinding`
      Say that the bound value has the potential to be indexed
      Specified by:
        `setIndexedVariable` in interface `LocalBinding`

    - #### isIndexedVariable

          public boolean isIndexedVariable()

      Ask whether this parameter requires support for indexing
      Specified by:
        `isIndexedVariable` in interface `LocalBinding`
      Returns:
        true if support for indexing is required. This will be set if the parameter is used in a filter expression such as $param[@a = 17]

    - #### evaluateVariable

          public Sequence evaluateVariable​(XPathContext context)

      Evaluate this function parameter
      Specified by:
        `evaluateVariable` in interface `Binding`
      Parameters:
        `context` - the XPath dynamic context
      Returns:
        the value of the parameter

    - #### setFunctionStreamability

          public void setFunctionStreamability​(FunctionStreamability ability)

      If this is the first argument of a streamable stylesheet function, set the streamability category
      Parameters:
        `ability` - the streamability category

    - #### getFunctionStreamability

          public FunctionStreamability getFunctionStreamability()

      If this is the first argument of a streamable stylesheet function, get the streamability category; otherwise return `FunctionStreamability.UNCLASSIFIED`
      Returns:
        the streamability category