net.sf.saxon.value

Class Int64Value

Implemented Interfaces:
Comparable, ConversionResult, GroundedValue, Item, PullEvent, Serializable, SequenceIterable, ValueRepresentation

public final class Int64Value
extends IntegerValue

An integer value: note this is a subtype of decimal in XML Schema, not a primitive type. This class supports integer values in the range permitted by a Java "long", and also supports the built-in subtypes of xs:integer.

Nested Class Summary

protected static class
Int64Value.Int64Comparable

Field Summary

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

MAX_LONG, MINUS_ONE, MIN_LONG, PLUS_ONE, SMALL_INTEGERS, ZERO

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

typeLabel

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

Int64Value(long value)
Constructor supplying a long
Int64Value(long val, BuiltInAtomicType type, boolean check)
Constructor for a subtype, supplying a long and a type label.

Method Summary

BigInteger
asBigInteger()
Get the value as a BigInteger
NumericValue
ceiling()
Implement the XPath ceiling() function
boolean
checkRange(BuiltInAtomicType type)
This class allows subtypes of xs:integer to be held, as well as xs:integer values.
int
compareTo(Object other)
Compare the value to another numeric value
int
compareTo(long other)
Compare the value to a long
ConversionResult
convertPrimitive(BuiltInAtomicType requiredType, boolean validate, XPathContext context)
Convert to target data type
Object
convertToJava(Class target, XPathContext context)
Convert to Java object (for passing to external functions)
ValidationFailure
convertToSubType(BuiltInAtomicType subtype, boolean validate)
Convert the value to a subtype of xs:integer
AtomicValue
copyAsSubType(AtomicType typeLabel)
Create a copy of this atomic value, with a different type label
NumericValue
div(IntegerValue other)
Divide by another integer
boolean
effectiveBooleanValue()
Return the effective boolean value of this integer
NumericValue
floor()
Implement the XPath floor() function
BigDecimal
getDecimalValue()
Get the numeric value converted to a decimal
double
getDoubleValue()
Get the numeric value as a double
float
getFloatValue()
Get the numeric value converted to a float
Comparable
getSchemaComparable()
Get an object that implements XML Schema comparison semantics
String
getStringValue()
Get the value as a String
int
hashCode()
Get the hashCode.
IntegerValue
idiv(IntegerValue other)
Integer divide by another integer
long
longValue()
Get the value
static Int64Value
makeDerived(long val, AtomicType type)
Factory method to create a derived value, with no checking of the value against the derived type
static Int64Value
makeIntegerValue(long value)
Factory method: allows Int64Value objects to be reused.
IntegerValue
minus(IntegerValue other)
Subtract another integer
IntegerValue
mod(IntegerValue other)
Take modulo another integer
NumericValue
negate()
Negate the value
IntegerValue
plus(IntegerValue other)
Add another integer
NumericValue
round()
Implement the XPath round() function
NumericValue
roundHalfToEven(int scale)
Implement the XPath round-to-half-even() function
void
setSubType(AtomicType type)
This class allows subtypes of xs:integer to be held, as well as xs:integer values.
double
signum()
Determine whether the value is negative, zero, or positive
static Int64Value
signum(long val)
Factory method returning the integer -1, 0, or +1 according as the argument is negative, zero, or positive
IntegerValue
times(IntegerValue other)
Multiply by another integer
ValidationFailure
validateAgainstSubType(BuiltInAtomicType type)
This class allows subtypes of xs:integer to be held, as well as xs:integer values.

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

asBigInteger, checkBigRange, checkRange, convertToSubType, div, getPrimitiveType, idiv, isWholeNumber, makeIntegerValue, minus, mod, plus, signum, stringToInteger, times, validateAgainstSubType

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

ceiling, compareTo, compareTo, equals, floor, getDecimalValue, getDoubleValue, getFloatValue, getXPathComparable, hashCode, isInteger, isWholeNumber, longValue, negate, parseNumber, promote, round, roundHalfToEven, signum, toString

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

asAtomic, checkPermittedContents, convert, convert, convertPrimitive, copyAsSubType, effectiveBooleanValue, equals, getCardinality, getComponent, getItemType, getLength, getPrimitiveType, getSchemaComparable, getStringValue, getStringValueCS, getTypeLabel, getTypedValue, getXPathComparable, isNaN, itemAt, iterate, process, setTypeLabel, subsequence, toString

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

Int64Value

public Int64Value(long value)
Constructor supplying a long
Parameters:
value - the value of the IntegerValue

Int64Value

public Int64Value(long val,
                  BuiltInAtomicType type,
                  boolean check)
            throws XPathException
Constructor for a subtype, supplying a long and a type label.
Parameters:
val - The supplied value, as an integer
type - the required item type, a subtype of xs:integer
check - Set to true if the method is required to check that the value is in range; false if the caller can guarantee that the value has already been checked.
Throws:
XPathException - if the supplied value is out of range for the target type

Method Details

asBigInteger

public BigInteger asBigInteger()
Get the value as a BigInteger
Overrides:
asBigInteger in interface IntegerValue

ceiling

public NumericValue ceiling()
Implement the XPath ceiling() function
Overrides:
ceiling in interface NumericValue
Returns:
the integer value, unchanged

checkRange

public boolean checkRange(BuiltInAtomicType type)
This class allows subtypes of xs:integer to be held, as well as xs:integer values. This method checks that the value is within range, and also sets the type label.
Parameters:
type - the subtype of integer required
Returns:
true if successful, false if value is out of range for the subtype

compareTo

public int compareTo(Object other)
Compare the value to another numeric value
Overrides:
compareTo in interface NumericValue
Parameters:
other - the numeric value to be compared to this value
Returns:
-1 if this value is less than the other, 0 if they are equal, +1 if this value is greater

compareTo

public int compareTo(long other)
Compare the value to a long
Overrides:
compareTo in interface NumericValue
Parameters:
other - the value to be compared with
Returns:
-1 if this is less, 0 if this is equal, +1 if this is greater or if this is NaN

convertPrimitive

public ConversionResult convertPrimitive(BuiltInAtomicType requiredType,
                                         boolean validate,
                                         XPathContext context)
Convert to target data type
Overrides:
convertPrimitive in interface AtomicValue
Parameters:
requiredType - an integer identifying the required atomic type
context - XPath dynamic evaluation context
Returns:
an AtomicValue, a value of the required type

convertToJava

public Object convertToJava(Class target,
                            XPathContext context)
            throws XPathException
Convert to Java object (for passing to external functions)
Overrides:
convertToJava in interface Value
Parameters:
target - The Java class to which conversion is required
Returns:
the Java object that results from the conversion; always an instance of the target class
Throws:
XPathException - if conversion is not possible, or fails

convertToSubType

public ValidationFailure convertToSubType(BuiltInAtomicType subtype,
                                          boolean validate)
Convert the value to a subtype of xs:integer
Overrides:
convertToSubType in interface IntegerValue
Parameters:
subtype - the target subtype
validate - true if validation is required; false if the caller already knows that the value is valid
Returns:
null if the conversion succeeds; a ValidationFailure describing the failure if it fails. Note that the exception is returned, not thrown.

copyAsSubType

public AtomicValue copyAsSubType(AtomicType typeLabel)
Create a copy of this atomic value, with a different type label
Overrides:
copyAsSubType in interface AtomicValue
Parameters:
typeLabel - the type label of the new copy. The caller is responsible for checking that the value actually conforms to this type.

div

public NumericValue div(IntegerValue other)
            throws XPathException
Divide by another integer
Overrides:
div in interface IntegerValue

effectiveBooleanValue

public boolean effectiveBooleanValue()
Return the effective boolean value of this integer
Overrides:
effectiveBooleanValue in interface AtomicValue
Returns:
false if the integer is zero, otherwise true

floor

public NumericValue floor()
Implement the XPath floor() function
Overrides:
floor in interface NumericValue
Returns:
the integer value, unchanged

getDecimalValue

public BigDecimal getDecimalValue()
Get the numeric value converted to a decimal
Overrides:
getDecimalValue in interface NumericValue
Returns:
a decimal representing this numeric value;

getDoubleValue

public double getDoubleValue()
Get the numeric value as a double
Overrides:
getDoubleValue in interface NumericValue
Returns:
A double representing this numeric value; NaN if it cannot be converted

getFloatValue

public float getFloatValue()
Get the numeric value converted to a float
Overrides:
getFloatValue in interface NumericValue
Returns:
a float representing this numeric value; NaN if it cannot be converted

getSchemaComparable

public Comparable getSchemaComparable()
Get an object that implements XML Schema comparison semantics
Overrides:
getSchemaComparable in interface AtomicValue

getStringValue

public String getStringValue()
Get the value as a String
Specified by:
getStringValue in interface Item
getStringValue in interface ValueRepresentation
Overrides:
getStringValue in interface AtomicValue
Returns:
a String representation of the value

hashCode

public int hashCode()
Get the hashCode. This must conform to the rules for other NumericValue hashcodes
Overrides:
hashCode in interface NumericValue

idiv

public IntegerValue idiv(IntegerValue other)
            throws XPathException
Integer divide by another integer
Overrides:
idiv in interface IntegerValue

longValue

public long longValue()
Get the value
Overrides:
longValue in interface NumericValue
Returns:
the value of the xs:integer, as a Java long

makeDerived

public static Int64Value makeDerived(long val,
                                     AtomicType type)
Factory method to create a derived value, with no checking of the value against the derived type
Parameters:
val - the integer value
type - the subtype of xs:integer
Returns:
the constructed value

makeIntegerValue

public static Int64Value makeIntegerValue(long value)
Factory method: allows Int64Value objects to be reused. Note that a value obtained using this method must not be modified to set a type label, because the value is in general shared.
Parameters:
value - the integer value
Returns:
an Int64Value with this integer value

minus

public IntegerValue minus(IntegerValue other)
Subtract another integer
Overrides:
minus in interface IntegerValue

mod

public IntegerValue mod(IntegerValue other)
            throws XPathException
Take modulo another integer
Overrides:
mod in interface IntegerValue

negate

public NumericValue negate()
Negate the value
Overrides:
negate in interface NumericValue
Returns:
the result of inverting the sign of the value

plus

public IntegerValue plus(IntegerValue other)
Add another integer
Overrides:
plus in interface IntegerValue

round

public NumericValue round()
Implement the XPath round() function
Overrides:
round in interface NumericValue
Returns:
the integer value, unchanged

roundHalfToEven

public NumericValue roundHalfToEven(int scale)
Implement the XPath round-to-half-even() function
Overrides:
roundHalfToEven in interface NumericValue
Parameters:
scale - number of digits required after the decimal point; the value -2 (for example) means round to a multiple of 100
Returns:
if the scale is >=0, return this value unchanged. Otherwise round it to a multiple of 10**-scale

setSubType

public void setSubType(AtomicType type)
This class allows subtypes of xs:integer to be held, as well as xs:integer values. This method sets the required type label. It is the caller's responsibility to check that the value is within range.
Parameters:
type - the type label to be assigned

signum

public double signum()
Determine whether the value is negative, zero, or positive
Overrides:
signum in interface NumericValue
Returns:
-1 if negative, 0 if zero, +1 if positive, NaN if NaN

signum

public static Int64Value signum(long val)
Factory method returning the integer -1, 0, or +1 according as the argument is negative, zero, or positive
Parameters:
val - the value to be tested
Returns:
the Int64Value representing -1, 0, or +1

times

public IntegerValue times(IntegerValue other)
Multiply by another integer
Overrides:
times in interface IntegerValue

validateAgainstSubType

public ValidationFailure validateAgainstSubType(BuiltInAtomicType type)
This class allows subtypes of xs:integer to be held, as well as xs:integer values. This method sets the required type label. Note that this method modifies the value in situ.
Overrides:
validateAgainstSubType in interface IntegerValue
Parameters:
type - the subtype of integer required
Returns:
null if the operation succeeds, or a ValidationException if the value is out of range