public abstract class BuiltInFunctionSet extends java.lang.Object implements FunctionLibrary
Modifier and Type | Class and Description |
---|---|
static class |
BuiltInFunctionSet.Entry
An entry in the table describing the properties of a function
|
Modifier and Type | Field and Description |
---|---|
static int |
ABS |
static int |
AS_ARG0
Function properties
|
static int |
AS_PRIM_ARG0 |
static int |
BASE |
static int |
CARD0 |
static int |
CDOC |
static int |
CITEM |
static int |
CORE
Categories of functions, bit significant
|
static int |
DCOLL |
static int |
DEPENDS_ON_STATIC_CONTEXT |
static int |
DLANG |
static Sequence<?> |
EMPTY |
static int |
FILTER |
static int |
FOCUS |
static int |
HOF |
static int |
INS
Classification of function arguments for serialization purposes; note that values must not conflict
with bit settings used for cardinalities
|
static int |
INTERNAL |
static int |
LAST |
static int |
LATE |
static int |
NAV |
static int |
NEW |
static int |
NS |
static int |
ONE
Local names used for cardinality values
|
static int |
OPT |
static int |
PLUS |
static int |
POSN |
static int |
SIDE |
static int |
STAR |
static int |
TRA |
static int |
UO |
static int |
USE_WHEN |
static int |
XPATH30 |
static int |
XPATH31 |
static int |
XQUPDATE |
static int |
XSLT |
static int |
XSLT30 |
Constructor and Description |
---|
BuiltInFunctionSet() |
Modifier and Type | Method and Description |
---|---|
Expression |
bind(SymbolicName.F symbolicName,
Expression[] staticArgs,
StaticContext env,
java.util.List<java.lang.String> reasons)
Bind a function, given the URI and local parts of the function name,
and the list of expressions supplied as arguments.
|
FunctionLibrary |
copy()
This method creates a copy of a FunctionLibrary: if the original FunctionLibrary allows
new functions to be added, then additions to this copy will not affect the original, or
vice versa.
|
java.lang.String |
getConventionalPrefix()
Return a conventional prefix for use with this namespace, typically
the prefix used in the documentation of these functions.
|
BuiltInFunctionSet.Entry |
getFunctionDetails(java.lang.String name,
int arity)
Locate the entry for a function with a given name and arity, if it exists
|
Function |
getFunctionItem(SymbolicName.F symbolicName,
StaticContext staticContext)
Test whether a function with a given name and arity is available; if so, return a function
item that can be dynamically called.
|
java.lang.String |
getNamespace()
Return the namespace URI for the functions local to this function set.
|
void |
importFunctionSet(BuiltInFunctionSet importee)
Import another function set (which must be in the same namespace)
|
boolean |
isAvailable(SymbolicName.F symbolicName)
Test whether a function with a given name and arity is available
|
SystemFunction |
makeFunction(java.lang.String name,
int arity) |
protected BuiltInFunctionSet.Entry |
register(java.lang.String name,
int arity,
java.lang.Class<? extends SystemFunction> implementationClass,
ItemType itemType,
int cardinality,
int applicability,
int properties)
Register a system function in the table of function details.
|
protected void |
registerReducedArityVariants(java.lang.String key,
int min,
int max)
Register reduced-arity versions of a function, with arities in a specified range,
using common argument and return types
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
setConfiguration
public static Sequence<?> EMPTY
public static final int CORE
public static final int XSLT
public static final int USE_WHEN
public static final int XQUPDATE
public static final int XPATH30
public static final int INTERNAL
public static final int XSLT30
public static final int XPATH31
public static final int HOF
public static final int ONE
public static final int OPT
public static final int STAR
public static final int PLUS
public static final int AS_ARG0
public static final int AS_PRIM_ARG0
public static final int CITEM
public static final int BASE
public static final int NS
public static final int DCOLL
public static final int DLANG
public static final int FILTER
public static final int LATE
public static final int UO
public static final int POSN
public static final int LAST
public static final int SIDE
public static final int CDOC
public static final int CARD0
public static final int NEW
public static final int DEPENDS_ON_STATIC_CONTEXT
public static final int FOCUS
public static final int INS
public static final int ABS
public static final int TRA
public static final int NAV
public final void importFunctionSet(BuiltInFunctionSet importee)
importee
- the function set to be imported. (No cycles allowed!)public BuiltInFunctionSet.Entry getFunctionDetails(java.lang.String name, int arity)
name
- the local part of the function namearity
- the arity of the function. -1 considers all possibly arities and returns an arbitrary function
if one exists with the right name.public Expression bind(SymbolicName.F symbolicName, Expression[] staticArgs, StaticContext env, java.util.List<java.lang.String> reasons)
bind
in interface FunctionLibrary
symbolicName
- the symbolic name of the function being calledstaticArgs
- May be null; if present, the length of the array must match the
value of arity. Contains the expressions supplied statically in arguments to the function call.
The intention is
that the static type of the arguments (obtainable via getItemType() and getCardinality()) may
be used as part of the binding algorithm. In some cases it may be possible for the function
to be pre-evaluated at compile time, for example if these expressions are all constant values.
The conventions of the XPath language demand that the results of a function depend only on the values of the expressions supplied as arguments, and not on the form of those expressions. For example, the result of f(4) is expected to be the same as f(2+2). The actual expression is supplied here to enable the binding mechanism to select the most efficient possible implementation (including compile-time pre-evaluation where appropriate).
env
- The static context of the function callreasons
- If no matching function is found by the function library, it may add
a diagnostic explanation to this list explaining why none of the available
functions could be used.public SystemFunction makeFunction(java.lang.String name, int arity) throws XPathException
XPathException
public boolean isAvailable(SymbolicName.F symbolicName)
This supports the function-available() function in XSLT.
isAvailable
in interface FunctionLibrary
symbolicName
- the qualified name of the function being called, together with its arity.
For legacy reasons, the arity may be set to -1 to mean any arity will dopublic FunctionLibrary copy()
copy
in interface FunctionLibrary
public Function getFunctionItem(SymbolicName.F symbolicName, StaticContext staticContext) throws XPathException
This supports the function-lookup() function in XPath 3.0.
getFunctionItem
in interface FunctionLibrary
symbolicName
- the qualified name of the function being calledstaticContext
- the static context to be used by the function, in the event that
it is a system function with dependencies on the static contextXPathException
- in the event of certain errors, for example attempting to get a function
that is privateprotected BuiltInFunctionSet.Entry register(java.lang.String name, int arity, java.lang.Class<? extends SystemFunction> implementationClass, ItemType itemType, int cardinality, int applicability, int properties)
name
- the function nameimplementationClass
- the class used to implement the functionitemType
- the item type of the result of the functioncardinality
- the cardinality of the result of the functionapplicability
- the host languages (and versions thereof) in which this function is availableproperties
- bitwise properties of the functionprotected void registerReducedArityVariants(java.lang.String key, int min, int max)
public java.lang.String getNamespace()
public java.lang.String getConventionalPrefix()
Copyright (c) 2004-2020 Saxonica Limited. All rights reserved.