Class FoldingFunction

All Implemented Interfaces:
Callable, FunctionItem, GroundedValue, Item, Sequence
Direct Known Subclasses:
ArrayFunctionSet.ArrayFromSequence, Average, FoldLeftFn, StringJoin, Sum

public abstract class FoldingFunction extends SystemFunction
Implementation of aggregate functions such as sum() and avg() that supply a fold() function. Such functions are automatically streamable.
  • Constructor Details

    • FoldingFunction

      public FoldingFunction()
  • Method Details

    • getFold

      public abstract Fold getFold(XPathContext context, Sequence... additionalArguments) throws XPathException
      Create the Fold object which actually performs the evaluation. Must be implemented in every subclass.
      Parameters:
      context - the dynamic evaluation context
      additionalArguments - the values of all arguments other than the first.
      Returns:
      the Fold object used to compute the function
      Throws:
      XPathException - if a dynamic error occurs
    • call

      public Sequence 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
    • getStreamerName

      public String getStreamerName()
      Description copied from class: SystemFunction
      Get a name that identifies the class that can be used to evaluate this function in streaming mode, that is, supplying one item or event at a time as it is delivered by the parser. Special streaming support is generally available in Saxon-EE for all system functions that take a sequence as their argument.
      Overrides:
      getStreamerName in class SystemFunction
      Returns:
      a name that identifies a class that supports streamed evaluation of this system function, or null if no such class is available. The mapping of names to classes is defined in the Saxon-EE class StreamerMap. In non-streaming Saxon editions (HE and PE) the method always returns null.