Class SequenceExtent

java.lang.Object
net.sf.saxon.value.Value
net.sf.saxon.value.SequenceExtent
All Implemented Interfaces:
Serializable, Expression, 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:
  • Constructor Details

    • 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 Details

    • makeSequenceExtent

      public static ValueRepresentation 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:
    • 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