net.sf.saxon.value

## Class SequenceExtent<T extends Item>

- java.lang.Object
- - net.sf.saxon.value.SequenceExtent<T>

- All Implemented Interfaces:
    GroundedValue, Sequence

      public class SequenceExtent<T extends Item>
      extends Object
      implements GroundedValue

  A sequence value implemented extensionally. That is, this class represents a sequence by allocating memory to each item in the sequence.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `SequenceExtent(List<? extends T> list)` Construct a SequenceExtent from a List.
    `SequenceExtent(SequenceExtent<T> ext, int start, int length)` Construct a SequenceExtent as a view of another SequenceExtent
    `SequenceExtent(SequenceIterator<T> iter)` Construct a sequence containing all the items in a SequenceIterator.
    `SequenceExtent(T[] items)` Construct an sequence from an array of items.
    `SequenceExtent(T[] value, int start, int length)` Construct a SequenceExtent from part of an array of items

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `effectiveBooleanValue()` Get the effective boolean value
    `int` | `getCardinality()` Determine the cardinality
    `ItemType` | `getItemType(TypeHierarchy th)` Get the (lowest common) item type
    `int` | `getLength()` Get the number of items in the sequence
    `String` | `getStringValue()` Get the string value of this sequence.
    `CharSequence` | `getStringValueCS()` Get the string value of this sequence.
    `Item` | `head()` Get the first item in the sequence.
    `T` | `itemAt(int n)` Get the n'th item in the sequence (starting with 0 as the first item)
    `ArrayIterator<T>` | `iterate()` Return an iterator over this sequence.
    `static <T extends Item> Sequence` | `makeSequenceExtent(List<T> input)` Factory method to make a Value holding the contents of any List of items
    `static <T extends Item> GroundedValue` | `makeSequenceExtent(SequenceIterator<T> iter)` Factory method to make a Value holding the contents of any SequenceIterator
    `GroundedValue` | `reduce()` Reduce the sequence to its simplest form.
    `UnfailingIterator<T>` | `reverseIterate()` Return an enumeration of this sequence in reverse order (used for reverse axes)
    `GroundedValue` | `subsequence(int start, int length)` Get a subsequence of the value
    `void` | `swap(int a, int b)` Swap two items (needed to support sorting)
    `String` | `toString()`

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

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

- - ### Constructor Detail

    - #### SequenceExtent

          public SequenceExtent(T[] items)

      Construct an sequence from an array of items. Note, the array of items is used as is, which means the caller must not subsequently change its contents.
      Parameters:
        `items` - the array of items to be included in the sequence

    - #### SequenceExtent

          public SequenceExtent(T[] value,
                        int start,
                        int length)

      Construct a SequenceExtent from part of an array of items
      Parameters:
        `value` - The array
        `start` - zero-based offset of the first item in the array that is to be included in the new SequenceExtent
        `length` - The number of items in the new SequenceExtent

    - #### SequenceExtent

          public SequenceExtent(SequenceExtent<T> ext,
                        int start,
                        int length)

      Construct a SequenceExtent as a view of another SequenceExtent
      Parameters:
        `ext` - The existing SequenceExtent
        `start` - zero-based offset of the first item in the existing SequenceExtent that is to be included in the new SequenceExtent
        `length` - The number of items in the new SequenceExtent

    - #### SequenceExtent

          public SequenceExtent(List<? extends T> list)

      Construct a SequenceExtent from a List. The members of the list must all be Items
      Parameters:
        `list` - the list of items to be included in the sequence

    - #### SequenceExtent

          public SequenceExtent(SequenceIterator<T> iter)
                         throws XPathException

      Construct a sequence containing all the items in a SequenceIterator.
      Parameters:
        `iter` - The supplied sequence of items. This must be positioned at the start, so that hasNext() returns true if there are any nodes in the node-set, and next() returns the first node.
      Throws:
        `XPathException` - if reading the items using the SequenceIterator raises an error

  - ### Method Detail

    - #### makeSequenceExtent

          public static <T extends Item> GroundedValue makeSequenceExtent(SequenceIterator<T> iter)
                                                  throws XPathException

      Factory method to make a Value holding the contents of any SequenceIterator
      Parameters:
        `iter` - a Sequence iterator that will be consumed to deliver the items in the sequence
      Returns:
        a ValueRepresentation holding the items delivered by the SequenceIterator. If the sequence is empty the result will be an instance of `EmptySequence`. If it is of length one, the result will be an `Item`. In all other cases, it will be an instance of `SequenceExtent`.
      Throws:
        `XPathException` - if an error occurs processing the values from the iterator.

    - #### makeSequenceExtent

          public static <T extends Item> Sequence makeSequenceExtent(List<T> input)

      Factory method to make a Value holding the contents of any List of items
      Parameters:
        `input` - a List containing the items in the sequence
      Returns:
        a ValueRepresentation holding the items in the list. If the sequence is empty the result will be an instance of `EmptySequence`. If it is of length one, the result will be an `Item`. In all other cases, it will be an instance of `SequenceExtent`.

    - #### getStringValue

          public String getStringValue()
                                throws XPathException

      Description copied from interface: `GroundedValue`
      Get the string value of this sequence. The string value of an item is the result of applying the string() function. The string value of a sequence is the space-separated result of applying the string-join() function using a single space as the separator
      Specified by:
        `getStringValue` in interface `GroundedValue`
      Returns:
        the string value of the sequence.
      Throws:
        `XPathException` - if the sequence contains items that have no string value (for example, function items)

    - #### getStringValueCS

          public CharSequence getStringValueCS()
                                        throws XPathException

      Description copied from interface: `GroundedValue`
      Get the string value of this sequence. The string value of an item is the result of applying the string() function. The string value of a sequence is the space-separated result of applying the string-join() function using a single space as the separator
      Specified by:
        `getStringValueCS` in interface `GroundedValue`
      Returns:
        the string value of the sequence.
      Throws:
        `XPathException` - if the sequence contains items that have no string value (for example, function items)

    - #### head

          public Item head()
                    throws XPathException

      Get the first item in the sequence.
      Specified by:
        `head` in interface `Sequence`
      Returns:
        the first item in the sequence if there is one, or null if the sequence is empty
      Throws:
        `XPathException` - in the situation where the sequence is evaluated lazily, and evaluation of the first item causes a dynamic error.

    - #### getLength

          public int getLength()

      Get the number of items in the sequence
      Specified by:
        `getLength` in interface `GroundedValue`
      Returns:
        the number of items in the sequence

    - #### getCardinality

          public int getCardinality()

      Determine the cardinality
      Returns:
        the cardinality of the sequence, using the constants defined in net.sf.saxon.value.Cardinality
      See Also:
        `Cardinality`

    - #### getItemType

          public ItemType getItemType(TypeHierarchy th)

      Get the (lowest common) item type
      Parameters:
        `th` - the type hierarchy cache. If null, the returned value may be less precise
      Returns:
        integer identifying an item type to which all the items in this sequence conform

    - #### itemAt

          public T itemAt(int n)

      Get the n'th item in the sequence (starting with 0 as the first item)
      Specified by:
        `itemAt` in interface `GroundedValue`
      Parameters:
        `n` - the position of the required item
      Returns:
        the n'th item in the sequence

    - #### swap

          public void swap(int a,
                  int b)

      Swap two items (needed to support sorting)
      Parameters:
        `a` - the position of the first item to be swapped
        `b` - the position of the second item to be swapped

    - #### iterate

          public ArrayIterator<T> iterate()

      Return an iterator over this sequence.
      Specified by:
        `iterate` in interface `Sequence`
      Returns:
        the required SequenceIterator, positioned at the start of the sequence

    - #### reverseIterate

          public UnfailingIterator<T> reverseIterate()

      Return an enumeration of this sequence in reverse order (used for reverse axes)
      Returns:
        an AxisIterator that processes the items in reverse order

    - #### effectiveBooleanValue

          public boolean effectiveBooleanValue()
                                        throws XPathException

      Get the effective boolean value
      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)

    - #### subsequence

          public GroundedValue subsequence(int start,
                                  int length)

      Get a subsequence of the value
      Specified by:
        `subsequence` in interface `GroundedValue`
      Parameters:
        `start` - the index of the first item to be included in the result, counting from zero. A negative value is taken as zero. If the value is beyond the end of the sequence, an empty sequence is returned
        `length` - the number of items to be included in the result. Specify Integer.MAX_VALUE to get the subsequence up to the end of the base sequence. If the value is negative, an empty sequence is returned. If the value goes off the end of the sequence, the result returns items up to the end of the sequence
      Returns:
        the required subsequence. If min is

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`

    - #### reduce

          public GroundedValue reduce()

      Reduce the sequence to its simplest form. If the value is an empty sequence, the result will be EmptySequence.getInstance(). If the value is a single atomic value, the result will be an instance of AtomicValue. If the value is a single item of any other kind, the result will be an instance of SingletonItem. Otherwise, the result will typically be unchanged.
      Specified by:
        `reduce` in interface `GroundedValue`
      Returns:
        the simplified sequence

Copyright (c) 2004-2013 Saxonica Limited. All rights reserved.