Make it less shit (slightly)
This commit is contained in:
parent
b02def4f40
commit
1f4e836828
2 changed files with 16 additions and 15 deletions
|
@ -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) {
|
||||
|
|
|
@ -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))
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue