net.sf.saxon.value

Class ShareableSequence

Implemented Interfaces:
Serializable, SequenceIterable, 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.

Field Summary

Fields inherited from class net.sf.saxon.value.Value

EMPTY_CLASS_ARRAY, INDETERMINATE_ORDERING

Fields inherited from interface net.sf.saxon.om.ValueRepresentation

EMPTY_VALUE_ARRAY

Constructor Summary

ShareableSequence(List list)
Construct an sequence from an array of items.

Method Summary

boolean
effectiveBooleanValue()
Get the effective boolean value
int
getCardinality()
Determine the cardinality
ItemType
getItemType(TypeHierarchy th)
Get the (lowest common) item type
int
getLength()
Get the number of items in the sequence
List
getList()
Get the underlying list
boolean
isShareable()
Determine whether another value can share this list.
Item
itemAt(int n)
Get the n'th item in the sequence (starting with 0 as the first item)
SequenceIterator
iterate()
Return an iterator over this sequence.
Value
reduce()
Reduce a value to its simplest form.
Value
simplify()
Simplify this value

Methods inherited from class net.sf.saxon.value.Value

asItem, asItem, asIterator, asValue, checkPermittedContents, convertJavaObjectToXPath, convertToJava, convertToJava, effectiveBooleanValue, equals, fromItem, getCanonicalLexicalRepresentation, getCardinality, getItemType, getIterator, getLength, getSchemaComparable, getStringValue, getStringValueCS, itemAt, iterate, iterate, makeQNameValue, process, reduce, stringToNumber, toString

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

effectiveBooleanValue

public boolean effectiveBooleanValue()
            throws XPathException
Get the effective boolean value
Overrides:
effectiveBooleanValue in interface Value

getCardinality

public int getCardinality()
Determine the cardinality
Overrides:
getCardinality in interface 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 interface Value
Parameters:
th - the type hierarchy cache
Returns:
integer identifying an item type to which all the items in this sequence conform

getLength

public int getLength()
Get the number of items in the sequence
Overrides:
getLength in interface Value
Returns:
the number of items in the sequence

getList

public List getList()
Get the underlying list
Returns:
the underlying list of values

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

itemAt

public Item itemAt(int n)
Get the n'th item in the sequence (starting with 0 as the first item)
Overrides:
itemAt in interface 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.
Overrides:
iterate in interface Value
Returns:
the required SequenceIterator, positioned at the start of the sequence

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 interface Value

simplify

public Value simplify()
Simplify this value
Returns:
the simplified value