net.sf.saxon.value
Class SequenceExtent
- GroundedValue, Serializable, SequenceIterable, ValueRepresentation
public final class SequenceExtent
A sequence value implemented extensionally. That is, this class represents a sequence
by allocating memory to each item in the sequence.
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 |
SequenceExtent
public SequenceExtent(List list)
Construct a SequenceExtent from a List. The members of the list must all
be Items
list
- the list of items to be included in the sequence
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.
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
value
- The arraystart
- zero-based offset of the first item in the array
that is to be included in the new SequenceExtentlength
- The number of items in the new SequenceExtent
SequenceExtent
public SequenceExtent(SequenceIterator iter)
throws XPathException
Construct a sequence containing all the items in a SequenceIterator.
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.
XPathException
- if reading the items using the
SequenceIterator raises an error
SequenceExtent
public SequenceExtent(SequenceExtent ext,
int start,
int length)
Construct a SequenceExtent as a view of another SequenceExtent
ext
- The existing SequenceExtentstart
- zero-based offset of the first item in the existing SequenceExtent
that is to be included in the new SequenceExtentlength
- The number of items in the new SequenceExtent
getCardinality
public int getCardinality()
Determine the cardinality
- getCardinality in interface Value
- the cardinality of the sequence, using the constants defined in
net.sf.saxon.value.Cardinality
getItemType
public ItemType getItemType(TypeHierarchy th)
Get the (lowest common) item type
- getItemType in interface Value
th
- the type hierarchy cache
- 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
- getLength in interface Value
- 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)
- itemAt in interface GroundedValue
- itemAt in interface Value
n
- the position of the required item
- the n'th item in the sequence
iterate
public SequenceIterator iterate()
Return an iterator over this sequence.
- iterate in interface Value
- the required SequenceIterator, positioned at the start of the
sequence
makeSequenceExtent
public static ValueRepresentation makeSequenceExtent(SequenceIterator iter)
throws XPathException
Factory method to make a Value holding the contents of any SequenceIterator
iter
- a Sequence iterator that will be consumed to deliver the items in the sequence
- 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
- reduce in interface Value
reverseIterate
public UnfailingIterator reverseIterate()
Return an enumeration of this sequence in reverse order (used for reverse axes)
- an AxisIterator that processes the items in reverse order
simplify
public Value simplify()
Simplify this SequenceExtent
- 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 SingletonNode
.
In all other cases, the SequenceExtent
will be returned unchanged.
subsequence
public GroundedValue subsequence(int start,
int length)
Get a subsequence of the value
- subsequence in interface GroundedValue
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 returnedlength
- 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
- the required subsequence. If min is
swap
public void swap(int a,
int b)
Swap two items (needed to support sorting)
a
- the position of the first item to be swappedb
- the position of the second item to be swapped