Class 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

      Constructors 
      Constructor Description
      UserFunctionParameter()
      Create a UserFunctionParameter
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addReference​(boolean isLoopingReference)
      Register a variable reference that refers to the variable bound in this expression
      ValueRepresentation evaluateVariable​(XPathContext context)
      Evaluate this function parameter
      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 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
      • 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
      • addReference

        public void addReference​(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:
        isLoopingReference - - true if the reference occurs within a loop, such as the predicate of a filter expression
      • 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]