Class Sum

All Implemented Interfaces:
Callable, FunctionItem, GroundedValue, Item, Sequence

public class Sum extends FoldingFunction
Implementation of the fn:sum function
  • Constructor Details

    • Sum

      public Sum()
  • Method Details

    • 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
    • getResultItemType

      public ItemType getResultItemType(Expression[] args)
      Description copied from class: SystemFunction
      Get the return type, given knowledge of the actual arguments
      Overrides:
      getResultItemType in class SystemFunction
      Parameters:
      args - the actual arguments supplied
      Returns:
      the best available item type that the function will return
    • getCardinality

      public int getCardinality(Expression[] arguments)
      Description copied from class: SystemFunction
      Get the cardinality, given knowledge of the actual arguments
      Overrides:
      getCardinality in class SystemFunction
      Parameters:
      arguments - the actual arguments supplied
      Returns:
      the most precise available cardinality that the function will return
    • getFold

      public Fold getFold(XPathContext context, Sequence... additionalArguments) throws XPathException
      Create the Fold object which actually performs the evaluation.
      Specified by:
      getFold in class FoldingFunction
      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
    • total

      public static AtomicValue total(SequenceIterator in, XPathContext context, Location locator) throws XPathException
      Static method to compute a total, invoked from compiled bytecode
      Parameters:
      in - the sequence of items to be summed
      context - dynamic context for evaluation
      locator - expression location for diagnostics
      Returns:
      null if the input is empty, otherwise the total as defined by the semantics of the sum() function
      Throws:
      XPathException - if a dynamic error occurs
    • getElaborator

      public Elaborator getElaborator()
      Make an elaborator for a system function call on this function
      Overrides:
      getElaborator in class SystemFunction
      Returns:
      a suitable elaborator; or null if no custom elaborator is available