twonly-app-dependencies/adaptive_number/lib/src/int64.dart
2025-12-07 16:10:41 +01:00

121 lines
2.4 KiB
Dart

import 'package:adaptive_number/src/number.dart';
import 'package:fixnum/fixnum.dart';
class NumberInt64 implements Number {
final Int64 _value;
NumberInt64(this._value);
@override
NumberInt64 operator +(Number value) {
return NumberInt64(_value + (value.val as Int64));
}
@override
NumberInt64 operator -(Number value) {
return NumberInt64(_value - (value.val as Int64));
}
@override
NumberInt64 operator -() {
return NumberInt64(-(val));
}
@override
NumberInt64 operator *(Number value) {
return NumberInt64(_value * (value.val as Int64));
}
@override
NumberInt64 operator &(Number value) {
return NumberInt64(_value & (value.val as Int64));
}
@override
NumberInt64 operator >>(int value) {
return NumberInt64(_value >> value);
}
@override
NumberInt64 operator <<(int value) {
return NumberInt64(_value << value);
}
@override
NumberInt64 operator ^(Number value) {
return NumberInt64(_value ^ (value.val as Int64));
}
@override
NumberInt64 operator |(Number value) {
return NumberInt64(_value | (value.val as Int64));
}
@override
bool operator <(Number value) {
return (intValue < value.intValue);
}
@override
bool operator <=(Number value) {
return (intValue <= value.intValue);
}
@override
bool operator >(Number value) {
return (intValue > value.intValue);
}
@override
bool operator >=(Number value) {
return (intValue >= value.intValue);
}
@override
NumberInt64 operator %(Number value) {
return NumberInt64(_value % (value.val as Int64));
}
@override
Number operator ~/(Number value) {
return NumberInt64(_value ~/ (value.val as Int64));
}
@override
Int64 get val => _value;
@override
int get intValue => _value.toInt();
@override
bool operator ==(Object other) =>
identical(this, other) ||
other is NumberInt64 &&
runtimeType == other.runtimeType &&
_value == other._value;
@override
int get hashCode => _value.hashCode;
@override
String toString() {
return _value.toString();
}
@override
String toRadixString(int radix) {
return _value.toRadixString(radix);
}
@override
NumberInt64 abs() {
return NumberInt64(_value.abs());
}
@override
int compareTo(Number value) {
return _value.compareTo(value.val as Int64);
}
}
Number createNumber(int val) => NumberInt64(Int64(val));