Make it less shit (slightly)

This commit is contained in:
Mikko Ahlroth 2024-02-11 00:10:30 +02:00
parent b02def4f40
commit 1f4e836828
2 changed files with 16 additions and 15 deletions

View file

@ -26,8 +26,12 @@ pub fn from_bigint_max(value: BigInt, max max: BigInt) {
interface.from_bigint(value, iface)
}
pub fn to_bigint(uint: RangedInt(overflow_mode)) {
uint.data
pub fn to_bigint(int: RangedInt(overflow_mode)) {
int.data
}
pub fn get_interface(int: RangedInt(overflow_mode)) {
int.interface()
}
pub fn compare(a: RangedInt(overflow_mode), b: RangedInt(overflow_mode)) {
@ -62,22 +66,18 @@ pub fn power(a: RangedInt(overflow_mode), b: RangedInt(overflow_mode)) {
interface.math_op(a, b, a.interface(), bigi.power)
}
pub fn overflow2(
a: RangedInt(Overflowable),
b: RangedInt(Overflowable),
op: fn(RangedInt(Overflowable), RangedInt(Overflowable)) ->
interface.OpResult(RangedInt(Overflowable)),
pub fn overflow(
op: interface.OpResult(RangedInt(Overflowable)),
interface: Interface(RangedInt(Overflowable), Overflowable),
) {
interface.overflow(op(a, b), a.interface())
interface.overflow(op, interface)
}
pub fn eject2(
a: RangedInt(overflow_mode),
b: RangedInt(overflow_mode),
op: fn(RangedInt(overflow_mode), RangedInt(overflow_mode)) ->
interface.OpResult(RangedInt(overflow_mode)),
pub fn eject(
op: interface.OpResult(RangedInt(overflow_mode)),
interface: Interface(RangedInt(overflow_mode), overflow_mode),
) {
interface.eject(op(a, b), a.interface())
interface.eject(op, interface)
}
fn gen_overflowable_interface(min: BigInt, max: BigInt) {

View file

@ -6,6 +6,7 @@ pub fn add_test() {
let assert Ok(a) = generic.from_bigint_min(bigi.zero(), min: bigi.zero())
let assert Ok(b) =
generic.from_bigint_max(bigi.from_int(12), max: bigi.from_int(12))
let c = generic.eject2(a, b, fn(a, b) { generic.add(a, b) })
let interface = generic.get_interface(a)
let c = generic.eject(generic.add(a, b), interface)
should.equal(c, bigi.from_int(12))
}