addArgument
protected void addArgument(UserFunctionParameter argument)
Add an argument to the list of arguments
argument
- the formal declaration of the argument to be added
checkReferences
public void checkReferences(ExpressionVisitor visitor)
throws XPathException
Type-check references to this function
visitor
- the expression visitor
compile
public UserFunction compile()
throws XPathException
Compile this function to create a run-time definition that can be interpreted (note, this
has nothing to do with Java code generation)
- the compiled UserFunction object
explain
public void explain(ExpressionPresenter out)
Produce diagnostic output showing the compiled and optimized expression tree for a function
out
- the destination to be used
getArgumentTypes
public SequenceType[] getArgumentTypes()
Get the declared types of the arguments of this function
- an array, holding the types of the arguments in order
getBody
public Expression getBody()
Get the body of the function
- the expression making up the body of the function
getColumnNumber
public int getColumnNumber()
Return the column number
- The column number, or -1 if none is available.
getDisplayName
public String getDisplayName()
Get the name of the function for display in error messages
- the name of the function as a lexical QName
getFunctionName
public StructuredQName getFunctionName()
Get the name of the function as a structured QName
- the name of the function as a structured QName
getHostLanguage
public int getHostLanguage()
Get the host language (XSLT, XQuery, XPath) used to implement the code in this container
- getHostLanguage in interface Container
getIdentificationKey
public String getIdentificationKey()
Get an identifying key for this function, which incorporates the URI and local part of the
function name plus the arity
getIdentificationKey
public static String getIdentificationKey(String uri,
String localName,
int arity)
Construct what the identification key would be for a function with given URI, local name, and arity
uri
- the URI part of the function namelocalName
- the local part of the function namearity
- the number of arguments in the function
getIdentificationKey
public static String getIdentificationKey(StructuredQName qName,
int arity)
Construct what the identification key would be for a function with given URI, local name, and arity
qName
- the name of the functionarity
- the number of arguments
getLineNumber
public int getLineNumber()
Get the line number of the instruction in the source stylesheet module.
If this is not known, or if the instruction is an artificial one that does
not relate to anything in the source code, the value returned may be -1.
- getLineNumber in interface InstructionInfo
getNumberOfArguments
public int getNumberOfArguments()
Get the arity of the function
- the arity (the number of arguments)
getObjectName
public StructuredQName getObjectName(NamePool pool)
Get a name identifying the object of the expression, for example a function name, template name,
variable name, key name, element name, etc. This is used only where the name is known statically.
- getObjectName in interface InstructionInfo
pool
- the name pool (not used in this implementation)
getParameterDefinitions
public UserFunctionParameter[] getParameterDefinitions()
Get the definitions of the arguments to this function
- an array of UserFunctionParameter objects, one for each argument
getProperties
public Iterator getProperties()
Get an iterator over all the properties available. The values returned by the iterator
will be of type String, and each string can be supplied as input to the getProperty()
method to retrieve the value of the property.
- getProperties in interface InstructionInfo
getProperty
public Object getProperty(String name)
Get the value of a particular property of the instruction. Properties
of XSLT instructions are generally known by the name of the stylesheet attribute
that defines them.
- getProperty in interface InstructionInfo
name
- The name of the required property
- The value of the requested property, or null if the property is not available
getPublicId
public String getPublicId()
Return the public identifier for the current document event.
- A string containing the public identifier, or
null if none is available.
getResultType
public SequenceType getResultType()
Get the result type of the function
getStaticContext
public StaticContext getStaticContext()
Get the static context for this function
- the static context for the module in which the function is declared
getSystemId
public String getSystemId()
Get the system identifier (URI) of the source module containing
the instruction. This will generally be an absolute URI. If the system
identifier is not known, the method may return null. In some cases, for example
where XML external entities are used, the correct system identifier is not
always retained.
- getSystemId in interface InstructionInfo
getUserFunction
public UserFunction getUserFunction()
Get the callable compiled function contained within this XQueryFunction definition.
- the compiled function object
isMemoFunction
public boolean isMemoFunction()
Find out whether this is a memo function
- true if this is a memo function
optimize
public void optimize()
throws XPathException
Optimize the body of this function
registerReference
public void registerReference(UserFunctionCall ufc)
Register a call on this function
ufc
- a user function call that references this function.
replaceSubExpression
public boolean replaceSubExpression(Expression original,
Expression replacement)
Replace one subexpression by a replacement subexpression
- replaceSubExpression in interface Container
original
- the original subexpressionreplacement
- the replacement subexpression
- true if the original subexpression is found
setBody
protected void setBody(Expression body)
Set the body of the function
body
- the expression forming the body of the function
setColumnNumber
protected void setColumnNumber(int column)
Set the column number of the function declaration
column
- the column number of the function declaration
setExecutable
public void setExecutable(Executable exec)
Set the executable in which this function is contained
setFunctionName
protected void setFunctionName(StructuredQName name)
Set the name of the function
name
- the name of the function as a StructuredQName object
setLineNumber
protected void setLineNumber(int line)
Set the line number of the function declaration within its module
line
- the line number of the function declaration
setMemoFunction
public void setMemoFunction(boolean isMemoFunction)
Set that this is, or is not, a memo function. A memo function remembers the results of calls
on the function so that the a subsequent call with the same arguments simply look up the result
isMemoFunction
- true if this is a memo function.
setResultType
protected void setResultType(SequenceType resultType)
Set the required result type of the function
resultType
- the declared result type of the function
setStaticContext
public void setStaticContext(StaticContext env)
Set the static context for this function
env
- the static context for the module in which the function is declared
setSystemId
protected void setSystemId(String systemId)
Set the system ID of the module containing the function
systemId
- the system ID (= base URI) of the module containing the function