| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |

| // for details. All rights reserved. Use of this source code is governed by a |

| // BSD-style license that can be found in the LICENSE file. |

| |

| part of fixnum; |

| |

| /** |

| * A fixed-precision integer. |

| */ |

| abstract class intx implements Comparable { |

| |

| // Arithmetic operations. |

| intx operator +(other); |

| intx operator -(other); |

| // The unary '-' operator. Note that -MIN_VALUE will be equal |

| // to MIN_VALUE due to overflow. |

| intx operator -(); |

| intx operator *(other); |

| intx operator %(other); |

| // Truncating division. |

| intx operator ~/(other); |

| intx remainder(other); |

| |

| // Note: no / operator |

| |

| // Bit-operations. |

| intx operator &(other); |

| intx operator |(other); |

| intx operator ^(other); |

| intx operator ~(); |

| intx operator <<(int shiftAmount); |

| intx operator >>(int shiftAmount); |

| intx shiftRightUnsigned(int shiftAmount); |

| |

| // Relational operations, may be applied to intx or int. |

| int compareTo(Comparable other); |

| bool operator ==(other); |

| bool operator <(other); |

| bool operator <=(other); |

| bool operator >(other); |

| bool operator >=(other); |

| |

| // Testers. |

| bool get isEven; |

| bool get isMaxValue; |

| bool get isMinValue; |

| bool get isNegative; |

| bool get isOdd; |

| bool get isZero; |

| |

| int get hashCode; |

| |

| intx abs(); |

| |

| /** |

| * Returns the number of leading zeros in this [intx] as an [int] |

| * between 0 and 64. |

| */ |

| int numberOfLeadingZeros(); |

| |

| /** |

| * Returns the number of trailing zeros in this [intx] as an [int] |

| * between 0 and 64. |

| */ |

| int numberOfTrailingZeros(); |

| |

| /** |

| * Converts this [intx] to a [List] of [int], starting with the least |

| * significant byte. |

| */ |

| List<int> toBytes(); |

| |

| /** |

| * Converts this [intx] to an [int]. On some platforms, inputs with large |

| * absolute values (i.e., > 2^52) may lose some of their low bits. |

| */ |

| int toInt(); |

| |

| /** |

| * Converts an [intx] to 32 bits. Narrower values are sign extended and |

| * wider values have their high bits truncated. |

| */ |

| int32 toInt32(); |

| |

| /** |

| * Converts an [intx] to 64 bits. |

| */ |

| int64 toInt64(); |

| |

| /** |

| * Returns the value of this [intx] as a decimal [String]. |

| */ |

| String toString(); |

| |

| /** |

| * Returns the value of this [intx] as a hexadecimal [String]. |

| */ |

| String toHexString(); |

| |

| /** |

| * Returns the value of this [intx] as a [String] in the given radix. |

| * [radix] must be an integer between 2 and 16, inclusive. |

| */ |

| String toRadixString(int radix); |

| } |