Class ShareableSequence

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

    • ShareableSequence

      public ShareableSequence(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 Details

    • 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.
    • getList

      public List getList()
      Get the underlying list
    • 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 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
    • 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
    • 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
    • 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