## net.sf.saxon.instruct
Class UserFunctionParameter

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

All Implemented Interfaces:
  java.io.Serializable, Binding

    public class UserFunctionParameter

extends java.lang.Object
implements Binding, java.io.Serializable

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

See Also:
  Serialized Form

Constructor Summary
`UserFunctionParameter()` Create a UserFunctionParameter

Method Summary
`ValueRepresentation` `evaluateVariable(XPathContext context)` Evaluate this function parameter
`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` `setIndexedVariable(boolean indexed)` Indicate that this parameter requires (or does not require) support for indexing
`void` `setReferenceCount(int count)` Set the (nominal) number of references within the function body to this parameter, where a reference inside a loop is counted as multiple references
`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 `Binding`
  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

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

### setReferenceCount

    public void setReferenceCount(int count)

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

  Parameters:
    `count` - the nominal number of references

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

### isIndexedVariable

    public boolean isIndexedVariable()

  Ask whether this parameter requires support for indexing

  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 ValueRepresentation evaluateVariable(XPathContext context)
                                         throws XPathException

  Evaluate this function parameter

  Specified by:
    `evaluateVariable` in interface `Binding`
  Parameters:
    `context` - the XPath dynamic context
  Returns:
    the value of the parameter
  Throws:
    `XPathException` - if an error occurs

Copyright (c) Saxonica Limited. All rights reserved.