blob: 582fe7246e7ba9486f2d5475edd82002615341f7 [file] [log] [blame]
// 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);
}