## net.sf.saxon.query
Class XQueryFunction

    java.lang.Object
      net.sf.saxon.query.XQueryFunction

All Implemented Interfaces:
  SourceLocator, LocationProvider, SaxonLocator, Container, Declaration, InstructionInfo, Locator

    public class XQueryFunction

extends Object
implements InstructionInfo, Container, Declaration

Constructor Summary
`XQueryFunction()`

Method Summary
`void` `checkReferences(StaticContext env)` Type-check references to this function
`UserFunction` `compile(StaticQueryContext env)`
`void` `explain(Configuration config, PrintStream out)` Produce diagnostic output showing the compiled and optimized expression tree for a function
`void` `fixupReferences(StaticContext env)` Fix up references to this function
`SequenceType[]` `getArgumentTypes()`
`int` `getColumnNumber()` Return the column number
`int` `getConstructType()` Get the type of construct.
`Executable` `getExecutable()` Get the Executable (representing a complete stylesheet or query) of which this Container forms part
`String` `getFunctionDisplayName(NamePool pool)`
`int` `getFunctionFingerprint()`
`int` `getHostLanguage()` Get the host language (XSLT, XQuery, XPath) used to implement the code in this container
`int` `getLineNumber()` Get the line number of the instruction in the source stylesheet module.
`int` `getLineNumber(int locationId)` Get the line number within the document or module containing a particular location
`LocationProvider` `getLocationProvider()` Get the LocationProvider allowing location identifiers to be resolved.
`int` `getNameCode()`
`NamespaceResolver` `getNamespaceResolver()` Get the namespace context of the instruction.
`int` `getNumberOfArguments()`
`int` `getObjectNameCode()` Get a name identifying the object of the expression, for example a function name, template name, variable name, key name, element name, etc.
`UserFunctionParameter[]` `getParameterDefinitions()`
`Iterator` `getProperties()` Get an iterator over all the properties available.
`Object` `getProperty(String name)` Get the value of a particular property of the instruction.
`String` `getPublicId()` Return the public identifier for the current document event.
`SequenceType` `getResultType()`
`StaticContext` `getStaticContext()`
`String` `getSystemId()` Get the system identifier (URI) of the source module containing the instruction.
`String` `getSystemId(int locationId)` Get the URI of the document or module containing a particular location
`UserFunction` `getUserFunction()` Get the callable compiled function contained within this XQueryFunction definition.
`boolean` `isMemoFunction()`
`void` `registerReference(UserFunctionCall ufc)`
`boolean` `replaceSubExpression(Expression original, Expression replacement)` Replace one subexpression by a replacement subexpression
`void` `setExecutable(Executable exec)`
`void` `setMemoFunction(boolean isMemoFunction)`
`void` `setNameCode(int nameCode)`

Methods inherited from class java.lang.Object
`equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### XQueryFunction

    public XQueryFunction()

Method Detail

### setNameCode

    public void setNameCode(int nameCode)

### getNameCode

    public int getNameCode()

### getFunctionDisplayName

    public String getFunctionDisplayName(NamePool pool)

### getFunctionFingerprint

    public int getFunctionFingerprint()

### getResultType

    public SequenceType getResultType()

### setExecutable

    public void setExecutable(Executable exec)

### getExecutable

    public Executable getExecutable()

  Description copied from interface: `Container`
  Get the Executable (representing a complete stylesheet or query) of which this Container forms part

  Specified by:
    `getExecutable` in interface `Container`

### getLocationProvider

    public LocationProvider getLocationProvider()

  Get the LocationProvider allowing location identifiers to be resolved.

  Specified by:
    `getLocationProvider` in interface `Container`

### getStaticContext

    public StaticContext getStaticContext()

### getArgumentTypes

    public SequenceType[] getArgumentTypes()

### getParameterDefinitions

    public UserFunctionParameter[] getParameterDefinitions()

### getNumberOfArguments

    public int getNumberOfArguments()

### registerReference

    public void registerReference(UserFunctionCall ufc)

### setMemoFunction

    public void setMemoFunction(boolean isMemoFunction)

### isMemoFunction

    public boolean isMemoFunction()

### compile

    public UserFunction compile(StaticQueryContext env)
                         throws StaticError

  Throws:
    `StaticError`

### fixupReferences

    public void fixupReferences(StaticContext env)
                         throws XPathException

  Fix up references to this function

  Throws:
    `XPathException`

### checkReferences

    public void checkReferences(StaticContext env)
                         throws XPathException

  Type-check references to this function

  Throws:
    `XPathException`

### explain

    public void explain(Configuration config,
                        PrintStream out)

  Produce diagnostic output showing the compiled and optimized expression tree for a function

  Parameters:
    `config` - the configuration to be used

### getUserFunction

    public UserFunction getUserFunction()

  Get the callable compiled function contained within this XQueryFunction definition.

### getConstructType

    public int getConstructType()

  Get the type of construct. This will be a constant in class `Location`.

  Specified by:
    `getConstructType` in interface `InstructionInfo`

### getObjectNameCode

    public int getObjectNameCode()

  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.

  Specified by:
    `getObjectNameCode` in interface `InstructionInfo`

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

  Specified by:
    `getSystemId` in interface `SourceLocator`
  Specified by:
    `getSystemId` in interface `InstructionInfo`
  Specified by:
    `getSystemId` in interface `Locator`

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

  Specified by:
    `getLineNumber` in interface `SourceLocator`
  Specified by:
    `getLineNumber` in interface `InstructionInfo`
  Specified by:
    `getLineNumber` in interface `Locator`

### getPublicId

    public String getPublicId()

  Return the public identifier for the current document event.

  Specified by:
    `getPublicId` in interface `SourceLocator`
  Specified by:
    `getPublicId` in interface `Locator`
  Returns:
    A string containing the public identifier, or null if none is available.
  See Also:
    `getSystemId()`

### getColumnNumber

    public int getColumnNumber()

  Return the column number

  Specified by:
    `getColumnNumber` in interface `SourceLocator`
  Specified by:
    `getColumnNumber` in interface `Locator`
  Returns:
    The column number, or -1 if none is available.
  See Also:
    `getLineNumber()`

### getSystemId

    public String getSystemId(int locationId)

  Description copied from interface: `LocationProvider`
  Get the URI of the document or module containing a particular location

  Specified by:
    `getSystemId` in interface `LocationProvider`
  Parameters:
    `locationId` - identifier of the location in question (as passed down the Receiver pipeline)
  Returns:
    the URI of the document or module.

### getLineNumber

    public int getLineNumber(int locationId)

  Description copied from interface: `LocationProvider`
  Get the line number within the document or module containing a particular location

  Specified by:
    `getLineNumber` in interface `LocationProvider`
  Parameters:
    `locationId` - identifier of the location in question (as passed down the Receiver pipeline)
  Returns:
    the line number within the document or module.

### getNamespaceResolver

    public NamespaceResolver getNamespaceResolver()

  Get the namespace context of the instruction. This will not always be available, in which case the method returns null.

  Specified by:
    `getNamespaceResolver` 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.

  Specified by:
    `getProperty` in interface `InstructionInfo`
  Parameters:
    `name` - The name of the required property
  Returns:
    The value of the requested property, or null if the property is not available

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

  Specified by:
    `getProperties` in interface `InstructionInfo`

### getHostLanguage

    public int getHostLanguage()

  Get the host language (XSLT, XQuery, XPath) used to implement the code in this container

  Specified by:
    `getHostLanguage` in interface `Container`
  Returns:
    typically `Configuration.XSLT` or `Configuration.XQUERY`

### replaceSubExpression

    public boolean replaceSubExpression(Expression original,
                                        Expression replacement)

  Replace one subexpression by a replacement subexpression

  Specified by:
    `replaceSubExpression` in interface `Container`
  Parameters:
    `original` - the original subexpression
    `replacement` - the replacement subexpression
  Returns:
    true if the original subexpression is found

Copyright (C) Michael H. Kay. All rights reserved.