net.sf.saxon.value
Class IntegerValue

java.lang.Object
  extended by net.sf.saxon.value.Value
      extended by net.sf.saxon.value.AtomicValue
          extended by net.sf.saxon.value.NumericValue
              extended by net.sf.saxon.value.IntegerValue
All Implemented Interfaces:
Serializable, Comparable, SequenceIterable, Item, ValueRepresentation
Direct Known Subclasses:
BigIntegerValue, Int64Value

public abstract class IntegerValue
extends NumericValue

This class represents the XPath built-in type xs:integer. It is used for all subtypes of xs:integer, other than user-defined subtypes. There are two implementations of IntegerValue: Int64Value, which accommodates values up to 2^63, and BigIntegerValue, which accommodates unlimited-length integers.

See Also:
Serialized Form

Field Summary
static Int64Value MAX_LONG
          IntegerValue representing the maximum value for a long
static Int64Value MIN_LONG
          IntegerValue representing the minimum value for a long
static Int64Value MINUS_ONE
          IntegerValue representing the value -1
static Int64Value PLUS_ONE
          IntegerValue representing the value +1
static Int64Value[] SMALL_INTEGERS
          Array of small integer values
static Int64Value ZERO
          IntegerValue representing the value zero
 
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
IntegerValue()
           
 
Method Summary
abstract  BigInteger asBigInteger()
          Get the value as a BigInteger
static boolean checkBigRange(BigInteger big, AtomicType type)
          Check that a BigInteger is within the required range for a given integer subtype.
static boolean checkRange(long value, AtomicType type)
          Check that a value is in range for the specified subtype of xs:integer
abstract  ValidationException convertToSubType(AtomicType type, boolean validate)
          This class allows subtypes of xs:integer to be held, as well as xs:integer values.
abstract  NumericValue div(IntegerValue other)
          Divide by another integer
 BuiltInAtomicType getPrimitiveType()
          Determine the primitive type of the value.
 Comparable getSchemaComparable()
          Get an object that implements XML Schema comparison semantics
abstract  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
static IntegerValue makeIntegerValue(BigInteger value)
          Factory method: makes either an Int64Value or a BigIntegerValue depending on the value supplied
abstract  IntegerValue minus(IntegerValue other)
          Subtract another integer
abstract  IntegerValue mod(IntegerValue other)
          Take modulo another integer
abstract  IntegerValue plus(IntegerValue other)
          Add another integer
static AtomicValue stringToInteger(CharSequence s)
          Static factory method to convert strings to integers.
abstract  IntegerValue times(IntegerValue other)
          Multiply by another integer
 
Methods inherited from class net.sf.saxon.value.NumericValue
arithmetic, ceiling, compareTo, compareTo, equals, floor, getDecimalValue, getDoubleValue, getFloatValue, getXPathComparable, hashCode, isInteger, isNaN, longValue, negate, parseNumber, promote, round, roundHalfToEven, signum, toString
 
Methods inherited from class net.sf.saxon.value.AtomicValue
checkPermittedContents, convert, convert, convertPrimitive, copy, effectiveBooleanValue, getCardinality, getComponent, getItemType, getLength, getStringValue, getStringValueCS, getTypedValue, getTypeLabel, hasBuiltInType, isMultiValued, itemAt, iterate, process, setTypeLabel
 
Methods inherited from class net.sf.saxon.value.Value
asItem, asItem, asIterator, asValue, convert, convertJavaObjectToXPath, convertToJava, fromItem, getCanonicalLexicalRepresentation, getIterator, iterate, makeQNameValue, reduce, stringToNumber
 
Methods inherited from class java.lang.Object
getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

MINUS_ONE

public static final Int64Value MINUS_ONE
IntegerValue representing the value -1


ZERO

public static final Int64Value ZERO
IntegerValue representing the value zero


PLUS_ONE

public static final Int64Value PLUS_ONE
IntegerValue representing the value +1


SMALL_INTEGERS

public static final Int64Value[] SMALL_INTEGERS
Array of small integer values


MAX_LONG

public static final Int64Value MAX_LONG
IntegerValue representing the maximum value for a long


MIN_LONG

public static final Int64Value MIN_LONG
IntegerValue representing the minimum value for a long

Constructor Detail

IntegerValue

public IntegerValue()
Method Detail

makeIntegerValue

public static IntegerValue makeIntegerValue(BigInteger value)
Factory method: makes either an Int64Value or a BigIntegerValue depending on the value supplied


convertToSubType

public abstract ValidationException convertToSubType(AtomicType 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.

Parameters:
type - the subtype of integer required
Returns:
null if the operation succeeds, or a ValidationException if the value is out of range

checkRange

public static boolean checkRange(long value,
                                 AtomicType type)
Check that a value is in range for the specified subtype of xs:integer

Parameters:
value - the value to be checked
type - the required item type, a subtype of xs:integer
Returns:
true if successful, false if value is out of range for the subtype

checkBigRange

public static boolean checkBigRange(BigInteger big,
                                    AtomicType type)
Check that a BigInteger is within the required range for a given integer subtype. This method is expensive, so it should not be used unless the BigInteger is outside the range of a long.


stringToInteger

public static AtomicValue stringToInteger(CharSequence s)
Static factory method to convert strings to integers.

Parameters:
s - CharSequence representing the string to be converted
Returns:
either an Int64Value or a BigIntegerValue representing the value of the String, or an ErrorValue encapsulating an Exception if the value cannot be converted.

getPrimitiveType

public BuiltInAtomicType getPrimitiveType()
Determine the primitive type of the value. This delivers the same answer as getItemType().getPrimitiveItemType(). The primitive types are the 19 primitive types of XML Schema, plus xs:integer, xs:dayTimeDuration and xs:yearMonthDuration, and xs:untypedAtomic. For external objects, the result is AnyAtomicType.

Specified by:
getPrimitiveType in class AtomicValue

isWholeNumber

public boolean isWholeNumber()
Determine whether the value is a whole number, that is, whether it compares equal to some integer

Specified by:
isWholeNumber in class NumericValue
Returns:
always true for this implementation

plus

public abstract IntegerValue plus(IntegerValue other)
Add another integer


minus

public abstract IntegerValue minus(IntegerValue other)
Subtract another integer


times

public abstract IntegerValue times(IntegerValue other)
Multiply by another integer


div

public abstract NumericValue div(IntegerValue other)
                          throws XPathException
Divide by another integer

Throws:
XPathException - if the other integer is zero

mod

public abstract IntegerValue mod(IntegerValue other)
                          throws XPathException
Take modulo another integer

Throws:
XPathException - if the other integer is zero

idiv

public abstract IntegerValue idiv(IntegerValue other)
                           throws XPathException
Integer divide by another integer

Throws:
XPathException - if the other integer is zero

asBigInteger

public abstract BigInteger asBigInteger()
Get the value as a BigInteger


getSchemaComparable

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

Overrides:
getSchemaComparable in class Value


Copyright (C) Michael H. Kay. All rights reserved.