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 expressionSequence
evaluateVariable(XPathContext context)
Evaluate this function parameterFunctionStreamability
getFunctionStreamability()
If this is the first argument of a streamable stylesheet function, get the streamability category; otherwise returnFunctionStreamability.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 referencesSequenceType
getRequiredType()
Get the required type of this function parameterStructuredQName
getVariableQName()
Get the name of this parameterboolean
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 indexingvoid
setFunctionStreamability(FunctionStreamability ability)
If this is the first argument of a streamable stylesheet function, set the streamability categoryvoid
setIndexedVariable()
Say that the bound value has the potential to be indexedvoid
setIndexedVariable(boolean indexed)
Indicate that this parameter requires (or does not require) support for indexingvoid
setRequiredType(SequenceType type)
Set the required type of this function parametervoid
setSlotNumber(int slot)
Set the slot number to be used by this parametervoid
setVariableQName(StructuredQName name)
Set the name of this parameter
-
-
-
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.
-
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 interfaceBinding
- 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 interfaceLocalBinding
- 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 interfaceBinding
- 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 interfaceBinding
- 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 interfaceBinding
- 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 interfaceBinding
- Parameters:
ref
- the variable referenceisLoopingReference
- - 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 interfaceLocalBinding
-
isIndexedVariable
public boolean isIndexedVariable()
Ask whether this parameter requires support for indexing- Specified by:
isIndexedVariable
in interfaceLocalBinding
- 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 interfaceBinding
- 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 returnFunctionStreamability.UNCLASSIFIED
- Returns:
- the streamability category
-
-