net.sf.saxon.value
Class BigIntegerValue

java.lang.Object
  extended by net.sf.saxon.value.Value<AtomicValue>
      extended by net.sf.saxon.value.AtomicValue
          extended by net.sf.saxon.value.NumericValue
              extended by net.sf.saxon.value.IntegerValue
                  extended by net.sf.saxon.value.BigIntegerValue
All Implemented Interfaces:
Comparable, PullEvent, GroundedValue<AtomicValue>, Item<AtomicValue>, ValueRepresentation<AtomicValue>, ConversionResult

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


Nested Class Summary
protected static class BigIntegerValue.BigIntegerComparable
          A Comparable that performs comparison of BigInteger values either with other BigInteger values or with other representations of XPath numeric values
 
Field Summary
static BigInteger MAX_LONG
           
static BigInteger MAX_UNSIGNED_LONG
           
static BigInteger MIN_LONG
           
static BigIntegerValue ZERO
           
 
Fields inherited from class net.sf.saxon.value.IntegerValue
MINUS_ONE, PLUS_ONE
 
Fields inherited from class net.sf.saxon.value.AtomicValue
typeLabel
 
Fields inherited from class net.sf.saxon.value.Value
INDETERMINATE_ORDERING
 
Fields inherited from interface net.sf.saxon.om.ValueRepresentation
EMPTY_VALUE_ARRAY
 
Constructor Summary
BigIntegerValue(BigInteger value)
          Construct an xs:integer value from a Java BigInteger
BigIntegerValue(BigInteger value, AtomicType typeLabel)
          Construct an xs:integer value from a Java BigInteger, supplying a type label.
BigIntegerValue(long value)
          Construct an xs:integer value from a Java long.
 
Method Summary
 NumericValue abs()
          Get the absolute value as defined by the XPath abs() function
 BigInteger asBigInteger()
          Get the value as a BigInteger
 BigDecimal asDecimal()
          Convert the value to a BigDecimal
 NumericValue ceiling()
          Implement the XPath ceiling() function
 int compareTo(long other)
          Compare the value to a long
 int compareTo(Object other)
          Compare the value to another numeric value
 ValidationFailure convertToSubType(BuiltInAtomicType type, boolean validate)
          This class allows subtypes of xs:integer to be held, as well as xs:integer values.
 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
 String getPrimitiveStringValue()
          Get the value as a String
 Comparable getSchemaComparable()
          Get an object that implements XML Schema comparison semantics
 int hashCode()
          Get the hashCode.
 IntegerValue idiv(IntegerValue other)
          Integer divide by another integer
 boolean isWholeNumber()
          Determine whether the value is a whole number, that is, whether it compares equal to some integer
 boolean isWithinLongRange()
          Test whether the value is within the range that can be held in a 64-bit signed integer
 long longValue()
          Get the value as a long
 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
 Value reduce()
          Reduce a value to its simplest form.
 NumericValue round(int scale)
          Implement the XPath round() function
 NumericValue roundHalfToEven(int scale)
          Implement the XPath round-to-half-even() function
 int signum()
          Determine whether the value 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
castableAsInteger, checkBigRange, checkRange, getPrimitiveType, isIdentical, makeIntegerValue, makeIntegerValue, makeIntegerValue, signum, stringToInteger
 
Methods inherited from class net.sf.saxon.value.NumericValue
equals, getXPathComparable, isInteger, parseNumber, toString
 
Methods inherited from class net.sf.saxon.value.AtomicValue
asAtomic, checkPermittedContents, getCardinality, getComponent, getItemType, getLength, getStringValue, getStringValueCS, getTypedValue, getTypeLabel, isNaN, itemAt, iterate, process, setTypeLabel, subsequence
 
Methods inherited from class net.sf.saxon.value.Value
asItem, asItem, asIterator, asValue, convertToJava, fromItem, getCanonicalLexicalRepresentation, getIterator, getSequenceLength
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

MAX_LONG

public static final BigInteger MAX_LONG

MIN_LONG

public static final BigInteger MIN_LONG

MAX_UNSIGNED_LONG

public static final BigInteger MAX_UNSIGNED_LONG

ZERO

public static final BigIntegerValue ZERO
Constructor Detail

BigIntegerValue

public BigIntegerValue(BigInteger value)
Construct an xs:integer value from a Java BigInteger

Parameters:
value - the supplied BigInteger

BigIntegerValue

public BigIntegerValue(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 integer
typeLabel - 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:
copyAsSubType in class AtomicValue
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:
convertToSubType in class IntegerValue
Parameters:
type - the subtype of integer required
validate - 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:
validateAgainstSubType in class IntegerValue
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:
hashCode in class NumericValue
Returns:
the hash code of the numeric value
See Also:
NumericValue.hashCode()

longValue

public long longValue()
Get the value as a long

Specified by:
longValue in class NumericValue
Returns:
the value of the xs:integer, as a Java long

asBigInteger

public BigInteger asBigInteger()
Get the value as a BigInteger

Specified by:
asBigInteger in class IntegerValue
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 BigDecimal asDecimal()
Convert the value to a BigDecimal

Returns:
the resulting BigDecimal

effectiveBooleanValue

public boolean effectiveBooleanValue()
Return the effective boolean value of this integer

Overrides:
effectiveBooleanValue in class AtomicValue
Returns:
false if the integer is zero, otherwise true

compareTo

public int compareTo(Object other)
Compare the value to another numeric value

Specified by:
compareTo in interface Comparable
Overrides:
compareTo in class 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

Specified by:
compareTo in class 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

getPrimitiveStringValue

public String getPrimitiveStringValue()
Get the value as a String

Specified by:
getPrimitiveStringValue in class AtomicValue
Returns:
a String representation of the value

getDoubleValue

public double getDoubleValue()
Get the numeric value as a double

Specified by:
getDoubleValue in class NumericValue
Returns:
A double representing this numeric value; NaN if it cannot be converted

getDecimalValue

public BigDecimal getDecimalValue()
Get the numeric value converted to a decimal

Specified by:
getDecimalValue in class NumericValue
Returns:
a decimal representing this numeric value;

getFloatValue

public float getFloatValue()
Get the numeric value converted to a float

Specified by:
getFloatValue in class NumericValue
Returns:
a float representing this numeric value; NaN if it cannot be converted

negate

public NumericValue negate()
Negate the value

Specified by:
negate in class NumericValue
Returns:
the result of inverting the sign of the value

floor

public NumericValue floor()
Implement the XPath floor() function

Specified by:
floor in class NumericValue
Returns:
the integer value, unchanged

ceiling

public NumericValue ceiling()
Implement the XPath ceiling() function

Specified by:
ceiling in class NumericValue
Returns:
the integer value, unchanged

round

public NumericValue round(int scale)
Implement the XPath round() function

Specified by:
round in class NumericValue
Returns:
the integer value, unchanged

roundHalfToEven

public NumericValue roundHalfToEven(int scale)
Implement the XPath round-to-half-even() function

Specified by:
roundHalfToEven in class 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

signum

public int signum()
Determine whether the value is negative, zero, or positive

Specified by:
signum in class NumericValue
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:
abs in class NumericValue
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:
isWholeNumber in class IntegerValue
Returns:
always true for this implementation

plus

public IntegerValue plus(IntegerValue other)
Add another integer

Specified by:
plus in class IntegerValue
Parameters:
other - the other integer
Returns:
the result of the addition

minus

public IntegerValue minus(IntegerValue other)
Subtract another integer

Specified by:
minus in class IntegerValue
Parameters:
other - the other integer
Returns:
the result of the subtraction

times

public IntegerValue times(IntegerValue other)
Multiply by another integer

Specified by:
times in class IntegerValue
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:
div in class IntegerValue
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:
mod in class IntegerValue
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:
idiv in class IntegerValue
Parameters:
other - the other integer
Returns:
the result of the integer division
Throws:
XPathException - if the other integer is zero

getSchemaComparable

public Comparable getSchemaComparable()
Get an object that implements XML Schema comparison semantics

Specified by:
getSchemaComparable in class AtomicValue
Returns:
a Comparable that follows XML Schema comparison rules

reduce

public Value reduce()
             throws XPathException
Reduce a value to its simplest form.

Overrides:
reduce in class Value<AtomicValue>
Returns:
the value in simplified form
Throws:
XPathException - if an error occurs


Copyright (c) 2004-2011 Saxonica Limited. All rights reserved.