## net.sf.saxon.value
Class SequenceExtent

    java.lang.Object
      net.sf.saxon.value.Value
          net.sf.saxon.value.SequenceExtent

All Implemented Interfaces:
  java.io.Serializable, SequenceIterable, GroundedValue, ValueRepresentation

    public final class SequenceExtent

extends Value
implements GroundedValue

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

See Also:
  Serialized Form

Field Summary

Fields inherited from class net.sf.saxon.value.Value
`EMPTY_CLASS_ARRAY, INDETERMINATE_ORDERING`

Fields inherited from interface net.sf.saxon.om.ValueRepresentation
`EMPTY_VALUE_ARRAY`

Constructor Summary
`SequenceExtent(Item[] items)` Construct an sequence from an array of items.
`SequenceExtent(Item[] value, int start, int length)` Construct a SequenceExtent from part of an array of items
`SequenceExtent(java.util.List list)` Construct a SequenceExtent from a List.
`SequenceExtent(SequenceExtent ext, int start, int length)` Construct a SequenceExtent as a view of another SequenceExtent
`SequenceExtent(SequenceIterator iter)` Construct a sequence containing all the items in a SequenceIterator.

Method Summary
`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
`Item` `itemAt(int n)` Get the n'th item in the sequence (starting with 0 as the first item)
`SequenceIterator` `iterate()` Return an iterator over this sequence.
`static ValueRepresentation` `makeSequenceExtent(SequenceIterator iter)` Factory method to make a Value holding the contents of any SequenceIterator
`Value` `reduce()` Reduce a value to its simplest form.
`UnfailingIterator` `reverseIterate()` Return an enumeration of this sequence in reverse order (used for reverse axes)
`Value` `simplify()` Simplify this SequenceExtent
`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)

Methods inherited from class net.sf.saxon.value.Value
`asItem, asItem, asIterator, asValue, checkPermittedContents, convertToJava, equals, fromItem, getCanonicalLexicalRepresentation, getIterator, getSchemaComparable, getStringValue, getStringValueCS, iterate, makeQNameValue, process, stringToNumber, toString`

Methods inherited from class java.lang.Object
`clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Methods inherited from interface net.sf.saxon.om.ValueRepresentation
`getStringValue, getStringValueCS`

Constructor Detail

### SequenceExtent

    public SequenceExtent(Item[] 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(Item[] 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 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(java.util.List 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 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 ValueRepresentation makeSequenceExtent(SequenceIterator 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`

### simplify

    public Value simplify()

  Simplify this SequenceExtent

  Returns:
    a Value 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 `AtomicValue` or a `SingletonNode`. In all other cases, the `SequenceExtent` will be returned unchanged.

### reduce

    public Value reduce()

  Reduce a value to its simplest form. If the value is a closure or some other form of deferred value such as a FunctionCallPackage, then it is reduced to a SequenceExtent. If it is a SequenceExtent containing a single item, then it is reduced to that item. One consequence that is exploited by class FilterExpression is that if the value is a singleton numeric value, then the result will be an instance of NumericValue

  Overrides:
    `reduce` in class `Value`
  Returns:
    the value in simplified form

### getLength

    public int getLength()

  Get the number of items in the sequence

  Overrides:
    `getLength` in class `Value`
  Returns:
    the number of items in the sequence

### getCardinality

    public int getCardinality()

  Determine the cardinality

  Overrides:
    `getCardinality` in class `Value`
  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

  Overrides:
    `getItemType` in class `Value`
  Parameters:
    `th` - the type hierarchy cache
  Returns:
    integer identifying an item type to which all the items in this sequence conform

### itemAt

    public Item itemAt(int n)

  Get the n'th item in the sequence (starting with 0 as the first item)

  Specified by:
    `itemAt` in interface `GroundedValue`
  Overrides:
    `itemAt` in class `Value`
  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 SequenceIterator iterate()

  Return an iterator over this sequence.

  Specified by:
    `iterate` in class `Value`
  Returns:
    the required SequenceIterator, positioned at the start of the sequence

### reverseIterate

    public UnfailingIterator 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

  Overrides:
    `effectiveBooleanValue` in class `Value`
  Returns:
    the effective boolean value
  Throws:
    `XPathException` - if any dynamic error occurs evaluating the expression

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

Copyright (c) Saxonica Limited. All rights reserved.