Class SequenceExtent

    • 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