Make the generic rangedint interface untouchable

This commit is contained in:
Mikko Ahlroth 2024-02-11 09:40:27 +02:00
parent 1f4e836828
commit 3a6031482d

View file

@ -1,8 +1,11 @@
import bigi.{type BigInt}
import ranged_int/interface.{type Interface, type Overflowable, Interface}
pub type GenericInterface(overflow_mode) =
Interface(RangedInt(overflow_mode), overflow_mode)
pub opaque type GenericInterface(overflow_mode) {
GenericInterface(
interface: Interface(RangedInt(overflow_mode), overflow_mode),
)
}
pub opaque type RangedInt(overflow_mode) {
RangedInt(
@ -31,7 +34,7 @@ pub fn to_bigint(int: RangedInt(overflow_mode)) {
}
pub fn get_interface(int: RangedInt(overflow_mode)) {
int.interface()
GenericInterface(int.interface())
}
pub fn compare(a: RangedInt(overflow_mode), b: RangedInt(overflow_mode)) {
@ -68,16 +71,16 @@ pub fn power(a: RangedInt(overflow_mode), b: RangedInt(overflow_mode)) {
pub fn overflow(
op: interface.OpResult(RangedInt(Overflowable)),
interface: Interface(RangedInt(Overflowable), Overflowable),
interface: GenericInterface(Overflowable),
) {
interface.overflow(op, interface)
interface.overflow(op, interface.interface)
}
pub fn eject(
op: interface.OpResult(RangedInt(overflow_mode)),
interface: Interface(RangedInt(overflow_mode), overflow_mode),
interface: GenericInterface(overflow_mode),
) {
interface.eject(op, interface)
interface.eject(op, interface.interface)
}
fn gen_overflowable_interface(min: BigInt, max: BigInt) {