Package net.sf.saxon.functions

## Class StringJoin

- java.lang.Object
- - net.sf.saxon.functions.AbstractFunction
  - - net.sf.saxon.functions.SystemFunction
    - - net.sf.saxon.functions.FoldingFunction
      - - net.sf.saxon.functions.StringJoin

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

      public class StringJoin
      extends FoldingFunction
      implements PushableFunction

  fn:string-join(string* $sequence, string $separator)

- - ### Constructor Summary

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

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `boolean` | `equals​(java.lang.Object o)` | Determine whether two expressions are equivalent
    `int` | `getCardinality​(Expression[] arguments)` | Determine the cardinality of the function.
    `java.lang.String` | `getCompilerName()` | Get the (local) name of a class that can be used to generate bytecode for this system function
    `Fold` | `getFold​(XPathContext context, Sequence... additionalArguments)` | Create the Fold object which actually performs the evaluation.
    `boolean` | `isReturnEmptyIfEmpty()` |
    `Expression` | `makeOptimizedFunctionCall​(ExpressionVisitor visitor, ContextItemStaticInfo contextInfo, Expression... arguments)` | Allow the function to create an optimized call based on the values of the actual arguments
    `void` | `process​(Outputter destination, XPathContext context, Sequence[] arguments)` | Evaluate the function in "push" mode
    `void` | `setReturnEmptyIfEmpty​(boolean option)` | Indicate that when the input sequence (first argument) is empty, the function should return an empty sequence rather than an empty string

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

      `call, getStreamerName`

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

      `dependsOnContextItem, dynamicCall, export, exportAdditionalArguments, exportAttributes, fixArguments, getArity, getContextNode, getDescription, getDetails, getErrorCodeForTypeErrors, getFunctionItemType, getFunctionName, getIntegerBounds, getNetCost, getOperandRoles, getRequiredType, getResultItemType, getResultItemType, getRetainedStaticContext, getSpecialProperties, getStaticBaseUriString, importAttributes, isTrustedResultType, makeCall, makeFunction, makeFunctionCall, 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`

- - ### Constructor Detail

    - #### StringJoin

          public StringJoin()

  - ### Method Detail

    - #### setReturnEmptyIfEmpty

          public void setReturnEmptyIfEmpty​(boolean option)

      Indicate that when the input sequence (first argument) is empty, the function should return an empty sequence rather than an empty string
      Parameters:
        `option` - true if an empty sequence should be returned when the input is an empty sequence.

    - #### isReturnEmptyIfEmpty

          public boolean isReturnEmptyIfEmpty()

    - #### getCardinality

          public int getCardinality​(Expression[] arguments)

      Determine the cardinality of the function.
      Overrides:
        `getCardinality` in class `SystemFunction`
      Parameters:
        `arguments` - the actual arguments supplied
      Returns:
        the most precise available cardinality that the function will return

    - #### equals

          public boolean equals​(java.lang.Object o)

      Determine whether two expressions are equivalent
      Overrides:
        `equals` in class `SystemFunction`

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

    - #### getFold

          public Fold getFold​(XPathContext context,
                              Sequence... additionalArguments)
                       throws XPathException

      Description copied from class: `FoldingFunction`
      Create the Fold object which actually performs the evaluation. Must be implemented in every subclass.
      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

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

    - #### getCompilerName

          public java.lang.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