Package net.sf.saxon.value
Class BigIntegerValue
- java.lang.Object
-
- net.sf.saxon.value.AtomicValue
-
- net.sf.saxon.value.NumericValue
-
- net.sf.saxon.value.DecimalValue
-
- net.sf.saxon.value.IntegerValue
-
- net.sf.saxon.value.BigIntegerValue
-
- All Implemented Interfaces:
java.lang.Comparable<XPathComparable>,java.lang.Iterable<AtomicValue>,AtomicMatchKey,XPathComparable,AtomicSequence,GroundedValue,IdentityComparable,Item,Sequence,ConversionResult,ContextFreeAtomicValue
public final class BigIntegerValue extends IntegerValue
An integer value: note this is a subtype of decimal in XML Schema, not a primitive type. The abstract class IntegerValue is used to represent any xs:integer value; this implementation is used for values that do not fit comfortably in a Java long; including the built-in subtype xs:unsignedLong
-
-
Field Summary
Fields Modifier and Type Field Description static java.math.BigIntegerMAX_LONGstatic java.math.BigIntegerMAX_UNSIGNED_LONGstatic java.math.BigIntegerMIN_LONGstatic BigIntegerValueZERO-
Fields inherited from class net.sf.saxon.value.AtomicValue
typeLabel
-
-
Constructor Summary
Constructors Constructor Description BigIntegerValue(long value)Construct an xs:integer value from a Java long.BigIntegerValue(java.math.BigInteger value)Construct an xs:integer value from a Java BigIntegerBigIntegerValue(java.math.BigInteger value, AtomicType typeLabel)Construct an xs:integer value from a Java BigInteger, supplying a type label.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description NumericValueabs()Get the absolute value as defined by the XPath abs() functionjava.math.BigIntegerasBigInteger()Get the value as a BigIntegerjava.math.BigDecimalasDecimal()Convert the value to a BigDecimalintasSubscript()Test whether a number is a possible subscript into a sequence, that is, a whole number greater than zero and less than 2^31NumericValueceiling()Implement the XPath ceiling() functionintcompareTo(long other)Compare the value to a longintcompareTo(XPathComparable other)Compare the value to another numeric valueValidationFailureconvertToSubType(BuiltInAtomicType type, boolean validate)This class allows subtypes of xs:integer to be held, as well as xs:integer values.AtomicValuecopyAsSubType(AtomicType typeLabel)Create a copy of this atomic value, with a different type labelNumericValuediv(IntegerValue other)Divide by another integerbooleaneffectiveBooleanValue()Return the effective boolean value of this integerNumericValuefloor()Implement the XPath floor() functionjava.math.BigDecimalgetDecimalValue()Get the numeric value converted to a decimaldoublegetDoubleValue()Get the numeric value as a doublefloatgetFloatValue()Get the numeric value converted to a floatUnicodeStringgetPrimitiveStringValue()Get the value as a StringinthashCode()Get the hashCode.IntegerValueidiv(IntegerValue other)Integer divide by another integerbooleanisWholeNumber()Determine whether the value is a whole number, that is, whether it compares equal to some integerbooleanisWithinLongRange()Test whether the value is within the range that can be held in a 64-bit signed integerlonglongValue()Get the value as a longIntegerValueminus(IntegerValue other)Subtract another integerIntegerValuemod(IntegerValue other)Take modulo another integerNumericValuenegate()Negate the valueIntegerValueplus(IntegerValue other)Add another integerIntegerValuereduce()Reduce a value to its simplest form.NumericValueround(int scale)Implement the XPath round() functionNumericValueroundHalfToEven(int scale)Implement the XPath round-to-half-even() functionintsignum()Determine whether the value is negative, zero, or positiveIntegerValuetimes(IntegerValue other)Multiply by another integerValidationFailurevalidateAgainstSubType(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
castableAsInteger, checkBigRange, checkRange, div, fromDouble, getMaxInclusive, getMinInclusive, getPrimitiveType, idiv, isIdentical, makeIntegerValue, mod, signum, stringToInteger
-
Methods inherited from class net.sf.saxon.value.NumericValue
equals, getXPathComparable, getXPathComparable, getXPathMatchKey, isInteger, isNegativeZero, parseNumber, show
-
Methods inherited from class net.sf.saxon.value.AtomicValue
asAtomic, asMapKey, atomize, checkPermittedContents, checkValidInJavascript, getCanonicalLexicalRepresentation, getCardinality, getComponent, getGenre, getItemType, getLength, getUnicodeStringValue, getUType, head, identityHashCode, isIdentical, isNaN, isUntypedAtomic, itemAt, iterate, iterator, setTypeLabel, toShortString, toString
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface net.sf.saxon.expr.sort.AtomicMatchKey
asAtomic
-
Methods inherited from interface net.sf.saxon.om.GroundedValue
asIterable, concatenate, containsNode, materialize
-
Methods inherited from interface net.sf.saxon.om.Item
getStringValue, isStreamed, subsequence
-
Methods inherited from interface net.sf.saxon.om.Sequence
makeRepeatable
-
-
-
-
Field Detail
-
MAX_LONG
public static final java.math.BigInteger MAX_LONG
-
MIN_LONG
public static final java.math.BigInteger MIN_LONG
-
MAX_UNSIGNED_LONG
public static final java.math.BigInteger MAX_UNSIGNED_LONG
-
ZERO
public static final BigIntegerValue ZERO
-
-
Constructor Detail
-
BigIntegerValue
public BigIntegerValue(java.math.BigInteger value)
Construct an xs:integer value from a Java BigInteger- Parameters:
value- the supplied BigInteger
-
BigIntegerValue
public BigIntegerValue(java.math.BigInteger value, AtomicType typeLabel)Construct an xs:integer value from a Java BigInteger, supplying a type label. It is the caller's responsibility to ensure that the supplied value conforms with the rules for the specified type.- Parameters:
value- the value of the integertypeLabel- the type, which must represent a type derived from xs:integer
-
BigIntegerValue
public BigIntegerValue(long value)
Construct an xs:integer value from a Java long. Note: normally, if the value fits in a long, then an Int64Value should be used. This constructor is largely for internal use, when operations are required that require two integers to use the same implementation class to be used.- Parameters:
value- the supplied Java long
-
-
Method Detail
-
copyAsSubType
public AtomicValue copyAsSubType(AtomicType typeLabel)
Create a copy of this atomic value, with a different type label- Specified by:
copyAsSubTypein classAtomicValue- Parameters:
typeLabel- the type label of the new copy. The caller is responsible for checking that the value actually conforms to this type.- Returns:
- the copied value
-
convertToSubType
public ValidationFailure convertToSubType(BuiltInAtomicType type, boolean validate)
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.- Specified by:
convertToSubTypein classIntegerValue- Parameters:
type- the subtype of integer requiredvalidate- true if validation is required, false if the caller warrants that the value is valid for the subtype- Returns:
- null if the operation succeeds, or a ValidationException if the value is out of range
-
validateAgainstSubType
public ValidationFailure validateAgainstSubType(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 valid against the rules for a given subtype.- Specified by:
validateAgainstSubTypein classIntegerValue- Parameters:
type- the subtype of integer required- Returns:
- null if the operation succeeds, or a ValidationException if the value is out of range
-
hashCode
public int hashCode()
Get the hashCode. This must conform to the rules for other NumericValue hashcodes- Specified by:
hashCodein classNumericValue- Returns:
- the hash code of the numeric value
- See Also:
NumericValue.hashCode()
-
longValue
public long longValue()
Get the value as a long- Specified by:
longValuein classNumericValue- Returns:
- the value of the xs:integer, as a Java long
-
asBigInteger
public java.math.BigInteger asBigInteger()
Get the value as a BigInteger- Specified by:
asBigIntegerin classIntegerValue- Returns:
- the value of the xs:integer as a Java BigInteger
-
isWithinLongRange
public boolean isWithinLongRange()
Test whether the value is within the range that can be held in a 64-bit signed integer- Returns:
- true if the value is within range for a long
-
asDecimal
public java.math.BigDecimal asDecimal()
Convert the value to a BigDecimal- Returns:
- the resulting BigDecimal
-
effectiveBooleanValue
public boolean effectiveBooleanValue()
Return the effective boolean value of this integer- Specified by:
effectiveBooleanValuein interfaceGroundedValue- Specified by:
effectiveBooleanValuein classNumericValue- Returns:
- false if the integer is zero, otherwise true
-
compareTo
public int compareTo(XPathComparable other)
Compare the value to another numeric value- Specified by:
compareToin interfacejava.lang.Comparable<XPathComparable>- Overrides:
compareToin classNumericValue- 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- Specified by:
compareToin classNumericValue- 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
-
getPrimitiveStringValue
public UnicodeString getPrimitiveStringValue()
Get the value as a String- Specified by:
getPrimitiveStringValuein classAtomicValue- Returns:
- a String representation of the value
-
getDoubleValue
public double getDoubleValue()
Get the numeric value as a double- Specified by:
getDoubleValuein classNumericValue- Returns:
- A double representing this numeric value; NaN if it cannot be converted
-
getDecimalValue
public java.math.BigDecimal getDecimalValue()
Get the numeric value converted to a decimal- Specified by:
getDecimalValuein classIntegerValue- Returns:
- a decimal representing this numeric value;
-
getFloatValue
public float getFloatValue()
Get the numeric value converted to a float- Specified by:
getFloatValuein classNumericValue- Returns:
- a float representing this numeric value; NaN if it cannot be converted
-
negate
public NumericValue negate()
Negate the value- Specified by:
negatein classNumericValue- Returns:
- the result of inverting the sign of the value
-
floor
public NumericValue floor()
Implement the XPath floor() function- Specified by:
floorin classNumericValue- Returns:
- the integer value, unchanged
-
ceiling
public NumericValue ceiling()
Implement the XPath ceiling() function- Specified by:
ceilingin classNumericValue- Returns:
- the integer value, unchanged
-
round
public NumericValue round(int scale)
Implement the XPath round() function- Specified by:
roundin classNumericValue- Parameters:
scale- the number of decimal places required in the result (supply 0 for rounding to an integer)- Returns:
- the integer value, unchanged
-
roundHalfToEven
public NumericValue roundHalfToEven(int scale)
Implement the XPath round-to-half-even() function- Specified by:
roundHalfToEvenin classNumericValue- 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
-
signum
public int signum()
Determine whether the value is negative, zero, or positive- Specified by:
signumin classNumericValue- Returns:
- -1 if negative, 0 if zero, +1 if positive, NaN if NaN
-
abs
public NumericValue abs()
Get the absolute value as defined by the XPath abs() function- Specified by:
absin classNumericValue- Returns:
- the absolute value
-
isWholeNumber
public boolean isWholeNumber()
Determine whether the value is a whole number, that is, whether it compares equal to some integer- Overrides:
isWholeNumberin classIntegerValue- Returns:
- always true for this implementation
-
asSubscript
public int asSubscript()
Test whether a number is a possible subscript into a sequence, that is, a whole number greater than zero and less than 2^31- Specified by:
asSubscriptin classNumericValue- Returns:
- the number as an int if it is a possible subscript, or -1 otherwise
-
plus
public IntegerValue plus(IntegerValue other)
Add another integer- Specified by:
plusin classIntegerValue- Parameters:
other- the other integer- Returns:
- the result of the addition
-
minus
public IntegerValue minus(IntegerValue other)
Subtract another integer- Specified by:
minusin classIntegerValue- Parameters:
other- the other integer- Returns:
- the result of the subtraction
-
times
public IntegerValue times(IntegerValue other)
Multiply by another integer- Specified by:
timesin classIntegerValue- Parameters:
other- the other integer- Returns:
- the result of the multiplication
-
div
public NumericValue div(IntegerValue other) throws XPathException
Divide by another integer- Specified by:
divin classIntegerValue- Parameters:
other- the other integer- Returns:
- the result of the division
- Throws:
XPathException- if the other integer is zero
-
mod
public IntegerValue mod(IntegerValue other) throws XPathException
Take modulo another integer- Specified by:
modin classIntegerValue- Parameters:
other- the other integer- Returns:
- the result of the modulo operation (the remainder)
- Throws:
XPathException- if the other integer is zero
-
idiv
public IntegerValue idiv(IntegerValue other) throws XPathException
Integer divide by another integer- Specified by:
idivin classIntegerValue- Parameters:
other- the other integer- Returns:
- the result of the integer division
- Throws:
XPathException- if the other integer is zero
-
reduce
public IntegerValue reduce()
Reduce a value to its simplest form.- Returns:
- the simplified sequence
-
-