Class Concat

All Implemented Interfaces:
Callable, PushableFunction, Function, GroundedValue, Item, Sequence

public class Concat extends SystemFunction implements PushableFunction
Implementation of the fn:concat() function
  • Constructor Details

    • Concat

      public Concat()
  • Method Details

    • resultIfEmpty

      protected Sequence resultIfEmpty(int arg)
      Description copied from class: SystemFunction
      Ask if the function always returns a known result when one of the arguments is an empty sequence
      Overrides:
      resultIfEmpty in class SystemFunction
      Parameters:
      arg - the argument whose value is an empty sequence (counting from zero)
      Returns:
      the value to be returned when this argument is an empty sequence, or null if unknown / not applicable
    • getOperandRoles

      public OperandRole[] getOperandRoles()
      Get the roles of the arguments, for the purposes of streaming
      Specified by:
      getOperandRoles in interface Function
      Overrides:
      getOperandRoles in class SystemFunction
      Returns:
      an array of OperandRole objects, one for each argument
    • getFunctionItemType

      public FunctionItemType getFunctionItemType()
      Get the item type of the function item
      Specified by:
      getFunctionItemType in interface Function
      Overrides:
      getFunctionItemType in class SystemFunction
      Returns:
      the function item's type
    • makeOptimizedFunctionCall

      public Expression makeOptimizedFunctionCall(ExpressionVisitor visitor, ContextItemStaticInfo contextInfo, Expression... arguments) throws XPathException
      Allow the function to create an optimized call based on the values of the actual arguments
      Overrides:
      makeOptimizedFunctionCall in class SystemFunction
      Parameters:
      visitor - the expression visitor
      contextInfo - information about the context item
      arguments - the supplied arguments to the function call. Note: modifying the contents of this array should not be attempted, it is likely to have no effect.
      Returns:
      either a function call on this function, or an expression that delivers the same result, or null indicating that no optimization has taken place
      Throws:
      XPathException - if an error is detected
    • call

      public StringValue call(XPathContext context, Sequence[] arguments) throws XPathException
      Description copied from interface: Function
      Invoke the function
      Specified by:
      call in interface Callable
      Specified by:
      call in interface Function
      Parameters:
      context - the XPath dynamic evaluation context
      arguments - the actual arguments to be supplied
      Returns:
      the result of invoking the function
      Throws:
      XPathException - if a dynamic error occurs within the function
    • process

      public void process(Outputter destination, XPathContext context, Sequence[] arguments) throws XPathException
      Description copied from interface: PushableFunction
      Evaluate the function in "push" mode
      Specified by:
      process in interface PushableFunction
      Parameters:
      destination - the destination for the function result
      context - the dynamic evaluation context
      arguments - the supplied arguments to the function
      Throws:
      XPathException - if a dynamic error occurs during the evaluation
    • getRequiredType

      public SequenceType getRequiredType(int arg)
      Get the required type of the nth argument
      Overrides:
      getRequiredType in class SystemFunction
      Parameters:
      arg - the number of the argument whose type is requested, zero-based
      Returns:
      the required type of the argument as defined in the function signature
    • getCompilerName

      public String getCompilerName()
      Description copied from class: SystemFunction
      Get the (local) name of a class that can be used to generate bytecode for this system function
      Overrides:
      getCompilerName in class SystemFunction
      Returns:
      the name of a bytecode generation class, or null if there is no bytecode support for this function