Package net.sf.saxon.ma.arrays

## Class AbstractArrayItem

- java.lang.Object
- - net.sf.saxon.ma.arrays.AbstractArrayItem

- All Implemented Interfaces:
    `Callable`, `ArrayItem`, `Function`, `GroundedValue`, `Item`, `Sequence`
  Direct Known Subclasses:
    `DelegatingArrayItem`, `ImmutableArrayItem`, `SimpleArrayItem`

      public abstract class AbstractArrayItem
      extends java.lang.Object
      implements ArrayItem

  An abstract implementation of XDM array items, containing methods that can be implemented generically.

- - ### Field Summary

    - ### Fields inherited from interface net.sf.saxon.ma.arrays.ArrayItem

      `SINGLE_ARRAY_TYPE`

  - ### Constructor Summary

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

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `AtomicSequence` | `atomize()` | Atomize the item.
    `GroundedValue` | `call​(XPathContext context, Sequence[] args)` | Invoke the array in its role as a function
    `boolean` | `deepEquals​(Function other, XPathContext context, AtomicComparer comparer, int flags)` | Test whether this array is deep-equal to another array, under the rules of the deep-equal function
    `boolean` | `effectiveBooleanValue()` | Get the effective boolean value of this sequence
    `void` | `export​(ExpressionPresenter out)` | Output information about this function item to the diagnostic explain() output
    `AnnotationList` | `getAnnotations()` | Get the function annotations (as defined in XQuery).
    `int` | `getArity()` | Get the arity of the function
    `java.lang.String` | `getDescription()` | Get a description of this function for use in error messages.
    `FunctionItemType` | `getFunctionItemType()` | Get the item type of the function item
    `StructuredQName` | `getFunctionName()` | Get the name of the function, or null if it is anonymous
    `SequenceType` | `getMemberType​(TypeHierarchy th)` | Get the lowest common item type of the members of the array
    `OperandRole[]` | `getOperandRoles()` | Get the roles of the arguments, for the purposes of streaming
    `java.lang.String` | `getStringValue()` | Get the value of the item as a string.
    `java.lang.CharSequence` | `getStringValueCS()` | Get the value of the item as a CharSequence.
    `boolean` | `isArray()` | Ask whether this function item is an array
    `boolean` | `isMap()` | Ask whether this function item is a map
    `boolean` | `isTrustedResultType()` | Check that result type is of the trusted system functions to return a result of the correct type
    `XPathContext` | `makeNewContext​(XPathContext callingContext, ContextOriginator originator)` | Prepare an XPathContext object for evaluating the function
    `java.lang.String` | `toString()` | Output a string representation of the array, suitable for diagnostics

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

    - ### Methods inherited from interface net.sf.saxon.ma.arrays.ArrayItem

      `arrayLength, concat, get, getGenre, insert, isEmpty, members, put, remove, removeSeveral, subArray, toShortString`

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

    - #### AbstractArrayItem

          public AbstractArrayItem()

  - ### Method Detail

    - #### getOperandRoles

          public OperandRole[] getOperandRoles()

      Get the roles of the arguments, for the purposes of streaming
      Specified by:
        `getOperandRoles` in interface `Function`
      Returns:
        an array of OperandRole objects, one for each argument

    - #### isArray

          public boolean isArray()

      Ask whether this function item is an array
      Specified by:
        `isArray` in interface `Function`
      Returns:
        true (it is an array)

    - #### isMap

          public boolean isMap()

      Ask whether this function item is a map
      Specified by:
        `isMap` in interface `Function`
      Returns:
        false (it is not a map)

    - #### atomize

          public AtomicSequence atomize()
                                 throws XPathException

      Atomize the item.
      Specified by:
        `atomize` in interface `Item`
      Returns:
        the result of atomization
      Throws:
        `XPathException` - if atomization is not allowed for this kind of item

    - #### getAnnotations

          public AnnotationList getAnnotations()

      Get the function annotations (as defined in XQuery). Returns an empty list if there are no function annotations.
      Specified by:
        `getAnnotations` in interface `Function`
      Returns:
        the function annotations

    - #### getFunctionItemType

          public FunctionItemType getFunctionItemType()

      Get the item type of the function item
      Specified by:
        `getFunctionItemType` in interface `Function`
      Returns:
        the function item's type

    - #### getFunctionName

          public StructuredQName getFunctionName()

      Get the name of the function, or null if it is anonymous
      Specified by:
        `getFunctionName` in interface `Function`
      Returns:
        the function name, or null for an anonymous function (which this one is)

    - #### getDescription

          public java.lang.String getDescription()

      Get a description of this function for use in error messages. For named functions, the description is the function name (as a lexical QName). For others, it might be, for example, "inline function", or "partially-applied ends-with function".
      Specified by:
        `getDescription` in interface `Function`
      Returns:
        a description of the function for use in error messages

    - #### getArity

          public int getArity()

      Get the arity of the function
      Specified by:
        `getArity` in interface `Function`
      Returns:
        the number of arguments in the function signature (in this case, 1 (one))

    - #### makeNewContext

          public XPathContext makeNewContext​(XPathContext callingContext,
                                             ContextOriginator originator)

      Prepare an XPathContext object for evaluating the function
      Specified by:
        `makeNewContext` in interface `Function`
      Parameters:
        `callingContext` - the XPathContext of the function calling expression
        `originator` -
      Returns:
        a suitable context for evaluating the function (which may or may not be the same as the caller's context)

    - #### call

          public GroundedValue call​(XPathContext context,
                                    Sequence[] args)
                             throws XPathException

      Invoke the array in its role as a function
      Specified by:
        `call` in interface `Callable`
      Specified by:
        `call` in interface `Function`
      Parameters:
        `context` - the XPath dynamic evaluation context
        `args` - the actual arguments to be supplied (a single integer, one-based)
      Returns:
        the result of invoking the function
      Throws:
        `XPathException` - if the index is out of bounds

    - #### deepEquals

          public boolean deepEquals​(Function other,
                                    XPathContext context,
                                    AtomicComparer comparer,
                                    int flags)
                             throws XPathException

      Test whether this array is deep-equal to another array, under the rules of the deep-equal function
      Specified by:
        `deepEquals` in interface `Function`
      Parameters:
        `other` - the other function item
        `context` - the dynamic evaluation context
        `comparer` - the object to perform the comparison
        `flags` - options for how the comparison is performed
      Returns:
        true if the two array items are deep-equal; false if they are not deep equal or if the other item is not an array
      Throws:
        `XPathException` - if the comparison cannot be performed

    - #### effectiveBooleanValue

          public boolean effectiveBooleanValue()
                                        throws XPathException

      Get the effective boolean value of this sequence
      Specified by:
        `effectiveBooleanValue` in interface `GroundedValue`
      Returns:
        the effective boolean value
      Throws:
        `XPathException` - if the sequence has no effective boolean value (for example a sequence of two integers)

    - #### getStringValue

          public java.lang.String getStringValue()

      Get the value of the item as a string. For arrays, there is no string value, so an exception is thrown.
      Specified by:
        `getStringValue` in interface `GroundedValue`
      Specified by:
        `getStringValue` in interface `Item`
      Returns:
        the string value of the item
      Throws:
        `java.lang.UnsupportedOperationException` - if the item is an array (an unchecked exception is used here to avoid introducing exception handling to a large number of paths where it is not needed)
      Since:
        8.4
      See Also:
        `getStringValueCS()`

    - #### getStringValueCS

          public java.lang.CharSequence getStringValueCS()

      Get the value of the item as a CharSequence. For arrays, there is no string value, so an exception is thrown.
      Specified by:
        `getStringValueCS` in interface `GroundedValue`
      Specified by:
        `getStringValueCS` in interface `Item`
      Returns:
        the string value of the item
      Throws:
        `java.lang.UnsupportedOperationException` - if the item is an array (an unchecked exception is used here to avoid introducing exception handling to a large number of paths where it is not needed)
      Since:
        8.4
      See Also:
        `getStringValueCS()`

    - #### export

          public void export​(ExpressionPresenter out)
                      throws XPathException

      Output information about this function item to the diagnostic explain() output
      Specified by:
        `export` in interface `Function`
      Throws:
        `XPathException`

    - #### isTrustedResultType

          public boolean isTrustedResultType()

      Description copied from interface: `Function`
      Check that result type is of the trusted system functions to return a result of the correct type
      Specified by:
        `isTrustedResultType` in interface `Function`

    - #### toString

          public java.lang.String toString()

      Output a string representation of the array, suitable for diagnostics
      Overrides:
        `toString` in class `java.lang.Object`

    - #### getMemberType

          public SequenceType getMemberType​(TypeHierarchy th)

      Get the lowest common item type of the members of the array
      Specified by:
        `getMemberType` in interface `ArrayItem`
      Returns:
        the most specific type to which all the members belong.