net.sf.saxon.value

Class SequenceExtent

public final class SequenceExtent extends Value implements GroundedValue

A sequence value implemented extensionally. That is, this class represents a sequence by allocating memory to each item in the sequence.
Constructor Summary
SequenceExtent(Item[] items)
Construct an sequence from an array of items.
SequenceExtent(Item[] value, int start, int length)
Construct a SequenceExtent from part of an array of items
SequenceExtent(SequenceExtent ext, int start, int length)
Construct a SequenceExtent as a view of another SequenceExtent
SequenceExtent(List list)
Construct a SequenceExtent from a List.
SequenceExtent(SequenceIterator iter)
Construct a sequence containing all the items in a SequenceIterator.
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
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.
static ValueRepresentationmakeSequenceExtent(SequenceIterator iter)
Factory method to make a Value holding the contents of any SequenceIterator
Valuereduce()
Reduce a value to its simplest form.
UnfailingIteratorreverseIterate()
Return an enumeration of this sequence in reverse order (used for reverse axes)
Valuesimplify()
Simplify this SequenceExtent
GroundedValuesubsequence(int start, int length)
Get a subsequence of the value
voidswap(int a, int b)
Swap two items (needed to support sorting)
StringtoString()

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(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)
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: net.sf.saxon.trans.XPathException if reading the items using the SequenceIterator raises an error

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

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

makeSequenceExtent

public static ValueRepresentation makeSequenceExtent(SequenceIterator iter)
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.

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

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

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 SingletonItem. In all other cases, the SequenceExtent will be returned unchanged.

subsequence

public GroundedValue subsequence(int start, int length)
Get a subsequence of the value

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

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

toString

public String toString()