Class Int64Value

All Implemented Interfaces:
Comparable<XPathComparable>, Iterable<AtomicValue>, AtomicMatchKey, XPathComparable, AtomicSequence, GroundedValue, IdentityComparable, Item, Sequence, ConversionResult, ContextFreeAtomicValue

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.
  • Field Details

    • 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
    • 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 Details

    • Int64Value

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

      public Int64Value(long value, AtomicType typeLabel)
      Constructor supplying a long, with a specific type annotation
      Parameters:
      value - the value of the IntegerValue
      typeLabel - the type annotation (trusted to be correct)
    • Int64Value

      public Int64Value(long val, BuiltInAtomicType typeLabel, boolean check) throws XPathException
      Constructor for a subtype, supplying a long and a type label.
      Parameters:
      val - The supplied value, as an integer
      typeLabel - 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

    • 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
    • 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
    • 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
    • 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:
      asSubscript in class NumericValue
      Returns:
      the number as an int if it is a possible subscript, or -1 otherwise
    • 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
    • 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.
      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:
    • longValue

      public long longValue()
      Get the value
      Specified by:
      longValue in class NumericValue
      Returns:
      the value of the xs:integer, as a Java long
    • effectiveBooleanValue

      public boolean effectiveBooleanValue()
      Return the effective boolean value of this integer
      Specified by:
      effectiveBooleanValue in interface GroundedValue
      Specified by:
      effectiveBooleanValue in class NumericValue
      Returns:
      false if the integer is zero, otherwise true
    • compareTo

      public int compareTo(XPathComparable other)
      Compare the value to another numeric value
      Specified by:
      compareTo in interface Comparable<XPathComparable>
      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 UnicodeString 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
    • 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
    • getDecimalValue

      public BigDecimal getDecimalValue()
      Get the numeric value converted to a decimal
      Specified by:
      getDecimalValue in class IntegerValue
      Returns:
      a decimal representing this numeric value;
    • 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
      Parameters:
      scale - the scale (for example scale=2 rounds to 2 decimal places, scale=-2 rounds to a multiple of 100); default value is zero which rounds to an integer
      Returns:
      the integer value, unchanged
    • round

      public NumericValue round(int scale, Round.RoundingRule roundingRule)
      Implement the XPath round-to-half-even() and round#3 functions
      Specified by:
      round 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
      roundingRule - indicates how the rounding should be done
      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
    • 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
    • asBigInteger

      public BigInteger asBigInteger()
      Get the value as a BigInteger
      Specified by:
      asBigInteger in class IntegerValue
      Returns:
      the value, as a BigInteger