Class ShareableSequence

  • All Implemented Interfaces:
    ValueRepresentation

    public final class ShareableSequence
    extends Value
    A sequence value implemented extensionally using an extensible List whose leading part can be shared with other sequence values. The list can be appended to by other users (at most one other user!), but the items within the range used by this sequence value cannot be modified.
    • Constructor Detail

      • ShareableSequence

        public ShareableSequence​(java.util.List list)
        Construct an sequence from an array of items. Note, the list of items is used as is, which means the caller must not subsequently change its contents; however it is permitted to subsequently append items to the list (indeed, that is the raison d'etre of this class)
        Parameters:
        list - the list of items to be included in the sequence
    • Method Detail

      • makeShareableSequence

        public static ShareableSequence makeShareableSequence​(Value baseVal,
                                                              SequenceIterator iter)
                                                       throws XPathException
        Make a new ShareableSequence from an existing value and an iterator over items to be appended to the sequence
        Parameters:
        baseVal - the base value (which may or may not be a ShareableSequence)
        iter - the items to be added
        Returns:
        a ShareableSequence containing the concatenation of the base value and the new items, optimized for further shared appending.
        Throws:
        XPathException
      • isShareable

        public boolean isShareable()
        Determine whether another value can share this list. This is true provided the list has not already been extended by another value.
        Returns:
        true if another value can share this list
      • getList

        public java.util.List getList()
        Get the underlying list
        Returns:
        the underlying list of values
      • simplify

        public Value simplify()
        Simplify this value
        Returns:
        the simplified value
      • 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. If null is supplied, the resulting value may be less precise
        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
      • 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
      • 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
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object