## net.sf.saxon.value
Class SequenceExtent

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

All Implemented Interfaces:
  Serializable, Comparable, SequenceIterable, ValueRepresentation

    public final class SequenceExtent

extends Value

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(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
`boolean` `isMultiValued()` Determine whether the value is multivalued, that is, whether it is a sequence that potentially contains more than one item
`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
`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, compareTo, convert, convertJavaObjectToXPath, convertToJava, equals, fromItem, getCanonicalLexicalRepresentation, getIterator, getSchemaComparable, getStringValue, getStringValueCS, hashCode, iterate, makeQNameValue, process, stringToNumber, toString`

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

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

  Throws:
    `XPathException`

### isMultiValued

    public boolean isMultiValued()

  Determine whether the value is multivalued, that is, whether it is a sequence that potentially contains more than one item

  Specified by:
    `isMultiValued` in class `Value`
  Returns:
    true if the value might contain more than one item, false if it definitely contains zero or one items

### simplify

    public Value simplify()

  Simplify this SequenceExtent

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

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

  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

Copyright (C) Michael H. Kay. All rights reserved.