com.saxonica.hof
Class FirstClassFunction

java.lang.Object
  extended by com.saxonica.hof.AbstractFunctionItem
      extended by com.saxonica.hof.FirstClassFunction
All Implemented Interfaces:
Serializable, PullEvent, FunctionItem, Item, ValueRepresentation

public class FirstClassFunction
extends AbstractFunctionItem

A FirstClassFunction is a value that encapsulates a function; it can therefore be manipulated like any other value: for example it can be assigned to a variable and passed as a parameter to a function.

A FirstClassFunction can be created using the extension function saxon:function(), and can be invoked using the extension function saxon:call().

In XQuery 1.1, a FirstClassFunction can be created using an inline function literal (for example "fn:contains#2" or an inline function definition, for example "function($x) {$x=0}". It can be called using a dynamic function call such as $f(17).

Currently all FirstClassFunction objects are created statically (at compile time).

See Also:
Serialized Form

Field Summary
 
Fields inherited from interface net.sf.saxon.om.ValueRepresentation
EMPTY_VALUE_ARRAY
 
Constructor Summary
protected FirstClassFunction(Expression target, StructuredQName name, int arity, FunctionItemType type)
           
 
Method Summary
 int getArity()
          Get the arity of the function
 FunctionItemType getFunctionItemType()
          Determine the item type of the items in the value
 StructuredQName getFunctionName()
          Get the name of the function
 ValueRepresentation invoke(ValueRepresentation[] args, XPathContext context)
          Invoke the function
 void typeCheck(ExpressionVisitor visitor, ItemType contextItemType)
          Type check the function (may modify it by adding code for converting the arguments)
 
Methods inherited from class com.saxonica.hof.AbstractFunctionItem
bind, curry, explain, getStringValue, getStringValueCS, getTypedValue, optimize
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

FirstClassFunction

protected FirstClassFunction(Expression target,
                             StructuredQName name,
                             int arity,
                             FunctionItemType type)
Method Detail

getArity

public int getArity()
Get the arity of the function

Returns:
the number of arguments

getFunctionName

public StructuredQName getFunctionName()
Get the name of the function

Returns:
the name of the function, if it has a name, or null otherwise

getFunctionItemType

public FunctionItemType getFunctionItemType()
Determine the item type of the items in the value

Returns:
the function item type

typeCheck

public void typeCheck(ExpressionVisitor visitor,
                      ItemType contextItemType)
               throws XPathException
Type check the function (may modify it by adding code for converting the arguments)

Overrides:
typeCheck in class AbstractFunctionItem
Parameters:
visitor - the expression visitor, supplies context information
contextItemType - the context item type at the point where the function definition appears
Throws:
XPathException

invoke

public ValueRepresentation invoke(ValueRepresentation[] args,
                                  XPathContext context)
                           throws XPathException
Invoke the function

Parameters:
args - the actual arguments to be supplied
context - the XPath dynamic evaluation context
Returns:
the result of invoking the function
Throws:
XPathException


Copyright (c) Saxonica Limited. All rights reserved.