Package net.sf.saxon.functions

## Class AbstractFunction

- java.lang.Object
- - net.sf.saxon.functions.AbstractFunction

- All Implemented Interfaces:
    `Callable`, `Function`, `GroundedValue`, `Item`, `Sequence`
  Direct Known Subclasses:
    `AtomicConstructorFunction`, `CallableFunction`, `CoercedFunction`, `CurriedFunction`, `ListConstructorFunction`, `OriginalFunction`, `SystemFunction`, `SystemFunctionWithBoundContextItem`, `UnionConstructorFunction`, `UnresolvedXQueryFunctionItem`, `UserFunctionReference.BoundUserFunction`

      public abstract class AbstractFunction
      extends java.lang.Object
      implements Function

  Abstract superclass (and factory class) for implementations of Function

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `AbstractFunction()` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `AtomicSequence` | `atomize()` | Atomize the item.
    `boolean` | `deepEquals​(Function other, XPathContext context, AtomicComparer comparer, int flags)` | Test whether this FunctionItem is deep-equal to another function item, under the rules of the deep-equal function
    `boolean` | `effectiveBooleanValue()` | Get the effective boolean value of the function item
    `void` | `export​(ExpressionPresenter out)` | Output information about this function item to the diagnostic explain() output
    `AnnotationList` | `getAnnotations()` | Get the function annotations (as defined in XQuery).
    `OperandRole[]` | `getOperandRoles()` | Get the roles of the arguments, for the purposes of streaming
    `java.lang.String` | `getStringValue()` | Get the string value of the function
    `java.lang.CharSequence` | `getStringValueCS()` | Get the string value of the function
    `boolean` | `isArray()` | Ask whether this function is an array
    `boolean` | `isMap()` | Ask whether this function is a map
    `boolean` | `isTrustedResultType()` | Check that result type is SystemFunction or AtomicConstructorFunction
    `XPathContext` | `makeNewContext​(XPathContext callingContext, ContextOriginator originator)` | Prepare an XPathContext object for evaluating the function
    `void` | `simplify()` |
    `void` | `typeCheck​(ExpressionVisitor visitor, ContextItemStaticInfo contextItemType)` | Type check the function (may modify it by adding code for converting the arguments)

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface net.sf.saxon.om.Function

      `call, getArity, getDescription, getFunctionItemType, getFunctionName, getGenre, toShortString`

    - ### Methods inherited from interface net.sf.saxon.om.GroundedValue

      `asIterable, concatenate, containsNode, materialize`

    - ### Methods inherited from interface net.sf.saxon.om.Item

      `getLength, head, isStreamed, itemAt, iterate, reduce, subsequence`

    - ### Methods inherited from interface net.sf.saxon.om.Sequence

      `makeRepeatable`

- - ### Constructor Detail

    - #### AbstractFunction

          public AbstractFunction()

  - ### Method Detail

    - #### getOperandRoles

          public OperandRole[] getOperandRoles()

      Get the roles of the arguments, for the purposes of streaming
      Specified by:
        `getOperandRoles` in interface `Function`
      Returns:
        an array of OperandRole objects, one for each argument

    - #### atomize

          public AtomicSequence atomize()
                                 throws XPathException

      Atomize the item.
      Specified by:
        `atomize` in interface `Item`
      Returns:
        the result of atomization
      Throws:
        `XPathException` - if atomization is not allowed for this kind of item

    - #### isArray

          public boolean isArray()

      Ask whether this function is an array
      Specified by:
        `isArray` in interface `Function`
      Returns:
        true if this function item is an array, otherwise false

    - #### isMap

          public boolean isMap()

      Ask whether this function is a map
      Specified by:
        `isMap` in interface `Function`
      Returns:
        true if this function item is a map, otherwise false

    - #### getStringValue

          public java.lang.String getStringValue()

      Get the string value of the function
      Specified by:
        `getStringValue` in interface `GroundedValue`
      Specified by:
        `getStringValue` in interface `Item`
      Returns:
        the string value of the item
      Throws:
        `java.lang.UnsupportedOperationException` - (the string value of a function is not defined)
      See Also:
        `Item.getStringValueCS()`

    - #### getStringValueCS

          public java.lang.CharSequence getStringValueCS()

      Get the string value of the function
      Specified by:
        `getStringValueCS` in interface `GroundedValue`
      Specified by:
        `getStringValueCS` in interface `Item`
      Returns:
        the string value of the item
      Throws:
        `java.lang.UnsupportedOperationException` - (the string value of a function is not defined)
      See Also:
        `Item.getStringValue()`

    - #### getAnnotations

          public AnnotationList getAnnotations()

      Description copied from interface: `Function`
      Get the function annotations (as defined in XQuery). Returns an empty list if there are no function annotations.
      Specified by:
        `getAnnotations` in interface `Function`
      Returns:
        the function annotations

    - #### effectiveBooleanValue

          public boolean effectiveBooleanValue()
                                        throws XPathException

      Get the effective boolean value of the function item
      Specified by:
        `effectiveBooleanValue` in interface `GroundedValue`
      Returns:
        the effective boolean value
      Throws:
        `XPathException` - (the EBVof a function item is not defined)

    - #### simplify

          public void simplify()
                        throws XPathException

      Throws:
        `XPathException`

    - #### typeCheck

          public void typeCheck​(ExpressionVisitor visitor,
                                ContextItemStaticInfo contextItemType)
                         throws XPathException

      Type check the function (may modify it by adding code for converting the arguments)
      Parameters:
        `visitor` - the expression visitor, supplies context information
        `contextItemType` - the context item type at the point where the function definition appears
      Throws:
        `XPathException` - if any failure (e.g. a type checking failure) occurs

    - #### makeNewContext

          public XPathContext makeNewContext​(XPathContext callingContext,
                                             ContextOriginator originator)

      Prepare an XPathContext object for evaluating the function
      Specified by:
        `makeNewContext` in interface `Function`
      Parameters:
        `callingContext` - the XPathContext of the function calling expression
        `originator` -
      Returns:
        a suitable context for evaluating the function (which may or may not be the same as the caller's context)

    - #### deepEquals

          public boolean deepEquals​(Function other,
                                    XPathContext context,
                                    AtomicComparer comparer,
                                    int flags)
                             throws XPathException

      Test whether this FunctionItem is deep-equal to another function item, under the rules of the deep-equal function
      Specified by:
        `deepEquals` in interface `Function`
      Parameters:
        `other` - the other function item
        `context` - the dynamic evaluation context
        `comparer` - the object to perform the comparison
        `flags` - options for how the comparison is performed
      Returns:
        true if the two function items are deep-equal
      Throws:
        `XPathException` - if the comparison cannot be performed

    - #### export

          public void export​(ExpressionPresenter out)
                      throws XPathException

      Output information about this function item to the diagnostic explain() output
      Specified by:
        `export` in interface `Function`
      Throws:
        `XPathException`

    - #### isTrustedResultType

          public boolean isTrustedResultType()

      Check that result type is SystemFunction or AtomicConstructorFunction
      Specified by:
        `isTrustedResultType` in interface `Function`