net.sf.saxon.value

Class ShareableSequence

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 Summary
ShareableSequence(List list)
Construct an sequence from an array of items.
Method Summary
booleaneffectiveBooleanValue()
Get the effective boolean value
intgetCardinality()
Determine the cardinality
ItemTypegetItemType(TypeHierarchy th)
Get the (lowest common) item type
intgetLength()
Get the number of items in the sequence
ListgetList()
Get the underlying list
booleanisShareable()
Determine whether another value can share this list.
ItemitemAt(int n)
Get the n'th item in the sequence (starting with 0 as the first item)
SequenceIteratoriterate()
Return an iterator over this sequence.
Valuereduce()
Reduce a value to its simplest form.
Valuesimplify()
Simplify this value

Constructor Detail

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 Detail

effectiveBooleanValue

public boolean effectiveBooleanValue()
Get the effective boolean value

getCardinality

public int getCardinality()
Determine the cardinality

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

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

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)

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.

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

simplify

public Value simplify()
Simplify this value

Returns: the simplified value