## net.sf.saxon.value
Class SequenceExtent

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

All Implemented Interfaces:
  Expression, java.io.Serializable, 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`

Fields inherited from interface net.sf.saxon.expr.Expression
`EVALUATE_METHOD, ITERATE_METHOD, PROCESS_METHOD`

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(XPathContext context)` Get the effective boolean value
`int` `getCardinality()` Determine the cardinality
`int` `getImplementationMethod()` An implementation of Expression must provide at least one of the methods evaluateItem(), iterate(), or process().
`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(XPathContext context)` Return an iterator over this sequence.
`static Value` `makeSequenceExtent(SequenceIterator iter)` Factory method to make a Value holding the contents of any SequenceIterator
`Value` `reduce()` Reduce a value to its simplest form.
`AxisIterator` `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, asIterator, asValue, checkPermittedContents, collapseWhitespace, convert, convertJavaObjectToXPath, convertToJava, display, equals, evaluateAsString, evaluateItem, getDependencies, getIterator, getParentExpression, getSpecialProperties, getStringValue, hashCode, iterateSubExpressions, makeQNameValue, normalizeWhitespace, optimize, process, promote, schemaEquals, simplify, stringToNumber, toString, trimWhitespace, typeCheck`

Methods inherited from class java.lang.Object
`clone, finalize, 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(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 Value makeSequenceExtent(SequenceIterator iter)
                                    throws XPathException

  Factory method to make a Value holding the contents of any SequenceIterator

  Throws:
    `XPathException`

### getImplementationMethod

    public int getImplementationMethod()

  An implementation of Expression must provide at least one of the methods evaluateItem(), iterate(), or process(). This method indicates which of these methods is preferred.

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

  Specified by:
    `getCardinality` in interface `Expression`
  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

  Specified by:
    `getItemType` in interface `Expression`
  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(XPathContext context)

  Return an iterator over this sequence.

  Parameters:
    `context` - dynamic evaluation context; not used in this implementation of the method
  Returns:
    the required SequenceIterator, positioned at the start of the sequence

### reverseIterate

    public AxisIterator 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(XPathContext context)
                                  throws XPathException

  Get the effective boolean value

  Specified by:
    `effectiveBooleanValue` in interface `Expression`
  Overrides:
    `effectiveBooleanValue` in class `Value`
  Parameters:
    `context` - The context in which the expression is to be evaluated
  Returns:
    the effective boolean value
  Throws:
    `XPathException` - if any dynamic error occurs evaluating the expression