Package net.sf.saxon.functions

## Class ScalarSystemFunction

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

- All Implemented Interfaces:
    `Callable`, `Function`, `GroundedValue`, `Item`, `Sequence`
  Direct Known Subclasses:
    `Abs`, `AccessorFn`, `Ceiling`, `DocumentUri_1`, `EncodeForUri`, `EscapeHtmlUri`, `Floor`, `GenerateId_1`, `IriToUri`, `LocalName_1`, `LowerCase`, `Name_1`, `NamespaceUri_1`, `NodeName_1`, `NormalizeSpace_1`, `Number_1`, `Path_1`, `String_1`, `StringLength_1`, `UpperCase`

      public abstract class ScalarSystemFunction
      extends SystemFunction

  A Scalar system function is a pure function that accepts a single item as its operand, returns a single atomic value as its result, typically returns an empty sequence if the argument is an empty sequence, and has no context dependencies.

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static One` | `ZERO_LENGTH_STRING` | Static constant representing a zero-length string

  - ### Constructor Summary

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

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `ZeroOrOne` | `call​(XPathContext context, Sequence[] arguments)` | Evaluate the expression
    `abstract AtomicValue` | `evaluate​(Item arg, XPathContext context)` | Abstract method that must be supplied in subclasses to perform the evaluation
    `Expression` | `makeFunctionCall​(Expression[] arguments)` | Make an expression that either calls this function, or that is equivalent to a call on this function
    `ZeroOrOne` | `resultWhenEmpty()` | Method that may be supplied in subclasses, to indicate the result that is returned when an empty sequence is supplied as the argument value.

    - ### Methods inherited from class net.sf.saxon.functions.SystemFunction

      `dependsOnContextItem, dynamicCall, equals, export, exportAdditionalArguments, exportAttributes, fixArguments, getArity, getCardinality, getCompilerName, getContextNode, getDescription, getDetails, getErrorCodeForTypeErrors, getFunctionItemType, getFunctionName, getIntegerBounds, getNetCost, getOperandRoles, getRequiredType, getResultItemType, getResultItemType, getRetainedStaticContext, getSpecialProperties, getStaticBaseUriString, getStreamerName, importAttributes, isTrustedResultType, makeCall, makeFunction, makeOptimizedFunctionCall, resultIfEmpty, setArity, setDetails, setRetainedStaticContext, supplyTypeInformation, toShortString, toString, typeCheckCaller`

    - ### Methods inherited from class net.sf.saxon.functions.AbstractFunction

      `atomize, deepEquals, effectiveBooleanValue, getAnnotations, getStringValue, getStringValueCS, isArray, isMap, makeNewContext, simplify, typeCheck`

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

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

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

      `getGenre`

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

- - ### Field Detail

    - #### ZERO_LENGTH_STRING

          public static final One ZERO_LENGTH_STRING

      Static constant representing a zero-length string

  - ### Constructor Detail

    - #### ScalarSystemFunction

          public ScalarSystemFunction()

  - ### Method Detail

    - #### evaluate

          public abstract AtomicValue evaluate​(Item arg,
                                               XPathContext context)
                                        throws XPathException

      Abstract method that must be supplied in subclasses to perform the evaluation
      Parameters:
        `arg` - the supplied argument
        `context` - the dynamic context
      Returns:
        the result of the evaluation
      Throws:
        `XPathException` - if a dynamic error occurs

    - #### resultWhenEmpty

          public ZeroOrOne resultWhenEmpty()

      Method that may be supplied in subclasses, to indicate the result that is returned when an empty sequence is supplied as the argument value. The default is to return the empty sequence
      Returns:
        the result of evaluation when the supplied argument is an empty sequence

    - #### call

          public final ZeroOrOne call​(XPathContext context,
                                      Sequence[] arguments)
                               throws XPathException

      Evaluate the expression
      Parameters:
        `context` - the dynamic evaluation context
        `arguments` - the values of the arguments, supplied as Sequences
      Returns:
        the result of the evaluation, in the form of a Sequence
      Throws:
        `XPathException` - if a dynamic error occurs during the evaluation of the expression

    - #### makeFunctionCall

          public Expression makeFunctionCall​(Expression[] arguments)

      Description copied from class: `SystemFunction`
      Make an expression that either calls this function, or that is equivalent to a call on this function
      Overrides:
        `makeFunctionCall` in class `SystemFunction`
      Parameters:
        `arguments` - the supplied arguments to the function call
      Returns:
        either a function call on this function, or an expression that delivers the same result