From c85eec0ff8d48a70a4a259d18a290917673b23f5 Mon Sep 17 00:00:00 2001 From: Gekctek Date: Sat, 2 Aug 2025 16:07:10 -0700 Subject: [PATCH 1/2] Updating xtended-numbers to 2.0.0 --- mops.toml | 4 ++-- src/lib.mo | 32 +++++++++++++++++++++----------- 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/mops.toml b/mops.toml index e322c65..2980e01 100644 --- a/mops.toml +++ b/mops.toml @@ -8,7 +8,7 @@ repository = "https://github.com/NatLabs/ByteUtils" [dependencies] base = "0.14.11" -xtended-numbers = "0.4.0" +xtended-numbers = "2.0.0" [dev-dependencies] test = "2.1.1" @@ -18,5 +18,5 @@ augmented-btrees = "0.6.0" itertools = "0.2.2" [toolchain] -moc = "0.14.9" +moc = "0.14.13" wasmtime = "28.0.1" diff --git a/src/lib.mo b/src/lib.mo index 09997cd..85c08d6 100644 --- a/src/lib.mo +++ b/src/lib.mo @@ -57,6 +57,17 @@ module ByteUtils { fromFloat : (Float) -> [Nat8]; }; + type Writable = { + write : (T) -> (); + }; + private func bufferToWritable(buffer : B.Buffer) : Writable { + { + write = func(value : T) { + buffer.add(value); + }; + }; + }; + public module LittleEndian { public func toNat8(bytes : Bytes) : Nat8 { @@ -113,7 +124,7 @@ module ByteUtils { }; public func toFloat(bytes : Bytes) : Float { - let ?fx = FloatX.decode(bytes, #f64, #lsb) else Debug.trap("ByteUtils: failed to decode Float"); + let ?fx = FloatX.fromBytes(bytes, #f64, #lsb) else Debug.trap("ByteUtils: failed to decode Float"); FloatX.toFloat(fx); }; @@ -159,7 +170,7 @@ module ByteUtils { let fx = FloatX.fromFloat(f, #f64); let buffer = B.Buffer(8); - FloatX.encode(buffer, fx, #lsb); + FloatX.toBytesBuffer(bufferToWritable(buffer), fx, #lsb); B.toArray(buffer); }; @@ -218,7 +229,7 @@ module ByteUtils { }; public func toFloat(bytes : Bytes) : Float { - let ?fx = FloatX.decode(bytes, #f64, #msb) else Debug.trap("ByteUtils: failed to decode Float"); + let ?fx = FloatX.fromBytes(bytes, #f64, #msb) else Debug.trap("ByteUtils: failed to decode Float"); FloatX.toFloat(fx); }; @@ -264,7 +275,7 @@ module ByteUtils { let fx = FloatX.fromFloat(f, #f64); let buffer = B.Buffer(8); - FloatX.encode(buffer, fx, #msb); + FloatX.toBytesBuffer(bufferToWritable(buffer), fx, #msb); B.toArray(buffer); }; @@ -327,7 +338,7 @@ module ByteUtils { // IEEE-754 sortable encoding let fx = FloatX.fromFloat(f, #f64); let buffer = B.Buffer(8); - FloatX.encode(buffer, fx, #msb); // Use big-endian + FloatX.toBytesBuffer(bufferToWritable(buffer), fx, #msb); // Use big-endian let bytes = B.toArray(buffer); @@ -446,7 +457,7 @@ module ByteUtils { ); }; - let ?fx = FloatX.decode(decodedBytes.vals(), #f64, #msb) else Debug.trap("ByteUtils: failed to decode Float"); + let ?fx = FloatX.fromBytes(decodedBytes.vals(), #f64, #msb) else Debug.trap("ByteUtils: failed to decode Float"); FloatX.toFloat(fx); }; }; @@ -573,7 +584,7 @@ module ByteUtils { public func addFloat(buffer : B.Buffer, f : Float) { let fx = FloatX.fromFloat(f, #f64); - FloatX.encode(buffer, fx, #lsb); + FloatX.toBytesBuffer(bufferToWritable(buffer), fx, #lsb); }; // Add new write methods (write at specific offset) @@ -629,7 +640,7 @@ module ByteUtils { public func writeFloat(buffer : BufferLike, offset : Nat, f : Float) { let fx = FloatX.fromFloat(f, #f64); let tempBuffer = B.Buffer(8); - FloatX.encode(tempBuffer, fx, #lsb); + FloatX.toBytesBuffer(bufferToWritable(tempBuffer), fx, #lsb); // Copy from temp buffer to target buffer at offset for (i in Iter.range(0, 7)) { @@ -743,7 +754,7 @@ module ByteUtils { public func addFloat(buffer : B.Buffer, f : Float) { let fx = FloatX.fromFloat(f, #f64); - FloatX.encode(buffer, fx, #msb); + FloatX.toBytesBuffer(bufferToWritable(buffer), fx, #msb); }; // Add new write methods (write at specific offset) @@ -799,7 +810,7 @@ module ByteUtils { public func writeFloat(buffer : B.Buffer, offset : Nat, f : Float) { let fx = FloatX.fromFloat(f, #f64); let tempBuffer = B.Buffer(8); - FloatX.encode(tempBuffer, fx, #msb); + FloatX.toBytesBuffer(bufferToWritable(tempBuffer), fx, #msb); // Copy from temp buffer to target buffer at offset for (i in Iter.range(0, 7)) { @@ -1346,5 +1357,4 @@ module ByteUtils { }; }; - }; From 0068f936c249c6d80849ae576a53e809828b60b3 Mon Sep 17 00:00:00 2001 From: Gekctek Date: Sat, 2 Aug 2025 16:17:51 -0700 Subject: [PATCH 2/2] Using proper buffer package --- src/lib.mo | 26 ++++++++------------------ 1 file changed, 8 insertions(+), 18 deletions(-) diff --git a/src/lib.mo b/src/lib.mo index 85c08d6..6965e8b 100644 --- a/src/lib.mo +++ b/src/lib.mo @@ -14,6 +14,7 @@ import Int64 "mo:base/Int64"; import Int "mo:base/Int"; import Nat "mo:base/Nat"; import Debug "mo:base/Debug"; +import BInterface "mo:buffer"; import FloatX "mo:xtended-numbers/FloatX"; @@ -57,17 +58,6 @@ module ByteUtils { fromFloat : (Float) -> [Nat8]; }; - type Writable = { - write : (T) -> (); - }; - private func bufferToWritable(buffer : B.Buffer) : Writable { - { - write = func(value : T) { - buffer.add(value); - }; - }; - }; - public module LittleEndian { public func toNat8(bytes : Bytes) : Nat8 { @@ -170,7 +160,7 @@ module ByteUtils { let fx = FloatX.fromFloat(f, #f64); let buffer = B.Buffer(8); - FloatX.toBytesBuffer(bufferToWritable(buffer), fx, #lsb); + FloatX.toBytesBuffer(BInterface.fromDeprecatedBuffer(buffer), fx, #lsb); B.toArray(buffer); }; @@ -275,7 +265,7 @@ module ByteUtils { let fx = FloatX.fromFloat(f, #f64); let buffer = B.Buffer(8); - FloatX.toBytesBuffer(bufferToWritable(buffer), fx, #msb); + FloatX.toBytesBuffer(BInterface.fromDeprecatedBuffer(buffer), fx, #msb); B.toArray(buffer); }; @@ -338,7 +328,7 @@ module ByteUtils { // IEEE-754 sortable encoding let fx = FloatX.fromFloat(f, #f64); let buffer = B.Buffer(8); - FloatX.toBytesBuffer(bufferToWritable(buffer), fx, #msb); // Use big-endian + FloatX.toBytesBuffer(BInterface.fromDeprecatedBuffer(buffer), fx, #msb); // Use big-endian let bytes = B.toArray(buffer); @@ -584,7 +574,7 @@ module ByteUtils { public func addFloat(buffer : B.Buffer, f : Float) { let fx = FloatX.fromFloat(f, #f64); - FloatX.toBytesBuffer(bufferToWritable(buffer), fx, #lsb); + FloatX.toBytesBuffer(BInterface.fromDeprecatedBuffer(buffer), fx, #lsb); }; // Add new write methods (write at specific offset) @@ -640,7 +630,7 @@ module ByteUtils { public func writeFloat(buffer : BufferLike, offset : Nat, f : Float) { let fx = FloatX.fromFloat(f, #f64); let tempBuffer = B.Buffer(8); - FloatX.toBytesBuffer(bufferToWritable(tempBuffer), fx, #lsb); + FloatX.toBytesBuffer(BInterface.fromDeprecatedBuffer(tempBuffer), fx, #lsb); // Copy from temp buffer to target buffer at offset for (i in Iter.range(0, 7)) { @@ -754,7 +744,7 @@ module ByteUtils { public func addFloat(buffer : B.Buffer, f : Float) { let fx = FloatX.fromFloat(f, #f64); - FloatX.toBytesBuffer(bufferToWritable(buffer), fx, #msb); + FloatX.toBytesBuffer(BInterface.fromDeprecatedBuffer(buffer), fx, #msb); }; // Add new write methods (write at specific offset) @@ -810,7 +800,7 @@ module ByteUtils { public func writeFloat(buffer : B.Buffer, offset : Nat, f : Float) { let fx = FloatX.fromFloat(f, #f64); let tempBuffer = B.Buffer(8); - FloatX.toBytesBuffer(bufferToWritable(tempBuffer), fx, #msb); + FloatX.toBytesBuffer(BInterface.fromDeprecatedBuffer(tempBuffer), fx, #msb); // Copy from temp buffer to target buffer at offset for (i in Iter.range(0, 7)) {