Package net.sf.saxon.functions

## Class Concat

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

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

      public class Concat
      extends SystemFunction
      implements PushableFunction

  Implementation of the fn:concat() function

- - ### Constructor Summary

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

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `StringValue` | `call​(XPathContext context, Sequence[] arguments)` | Invoke the function
    `java.lang.String` | `getCompilerName()` | Get the (local) name of a class that can be used to generate bytecode for this system function
    `FunctionItemType` | `getFunctionItemType()` | Get the item type of the function item
    `OperandRole[]` | `getOperandRoles()` | Get the roles of the arguments, for the purposes of streaming
    `SequenceType` | `getRequiredType​(int arg)` | Get the required type of the nth argument
    `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
    `protected Sequence` | `resultIfEmpty​(int arg)` | Ask if the function always returns a known result when one of the arguments is an empty sequence

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

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

    - #### Concat

          public Concat()

  - ### Method Detail

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