Class SequenceExtent

  • All Implemented Interfaces:
    java.io.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:
    Serialized Form
    • 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

      • 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