net.sf.saxon.value

Class IntegerRange

Implemented Interfaces:
GroundedValue, Serializable, SequenceIterable, ValueRepresentation

public class IntegerRange
extends Value
implements GroundedValue

This class represents a sequence of consecutive ascending integers, for example 1 to 50. The integers must be within the range of a Java long.

Field Summary

long
end
long
start

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

IntegerRange(long start, long end)
Construct an integer range expression

Method Summary

int
getCardinality()
Determine the cardinality
long
getEnd()
Get the last integer in the sequence (inclusive)
ItemType
getItemType(TypeHierarchy th)
Determine the data type of the items in the expression, if possible
int
getLength()
Get the length of the sequence
long
getStart()
Get the first integer in the sequence (inclusive)
Item
itemAt(int n)
Get the n'th item in the sequence (starting from 0).
SequenceIterator
iterate()
Return an Iterator to iterate over the values of a sequence.
GroundedValue
subsequence(int start, int length)
Get a subsequence of the 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

Field Details

end

public long end

start

public long start

Constructor Details

IntegerRange

public IntegerRange(long start,
                    long end)
Construct an integer range expression
Parameters:
start - the first integer in the sequence (inclusive)
end - the last integer in the sequence (inclusive). Must be >= start

Method Details

getCardinality

public int getCardinality()
Determine the cardinality
Overrides:
getCardinality in interface Value

getEnd

public long getEnd()
Get the last integer in the sequence (inclusive)
Returns:
the last integer in the sequence (inclusive)

getItemType

public ItemType getItemType(TypeHierarchy th)
Determine the data type of the items in the expression, if possible
Overrides:
getItemType in interface Value
Parameters:
th - the type hierarchy cache
Returns:
AnyItemType (not known)

getLength

public int getLength()
            throws XPathException
Get the length of the sequence
Overrides:
getLength in interface Value

getStart

public long getStart()
Get the first integer in the sequence (inclusive)
Returns:
the first integer in the sequence (inclusive)

itemAt

public Item itemAt(int n)
Get the n'th item in the sequence (starting from 0). This is defined for all Values, but its real benefits come for a sequence Value stored extensionally (or for a MemoClosure, once all the values have been read)
Specified by:
itemAt in interface GroundedValue
Overrides:
itemAt in interface Value

iterate

public SequenceIterator iterate()
            throws XPathException
Return an Iterator to iterate over the values of a sequence. The value of every expression can be regarded as a sequence, so this method is supported for all expressions. This default implementation handles iteration for expressions that return singleton values: for non-singleton expressions, the subclass must provide its own implementation.
Overrides:
iterate in interface Value
Returns:
a SequenceIterator that can be used to iterate over the result of the expression
Throws:
XPathException - if any dynamic error occurs evaluating the expression

subsequence

public GroundedValue subsequence(int start,
                                 int length)
Get a subsequence of the value
Specified by:
subsequence in interface GroundedValue
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.