11import NatX "mo:xtended-numbers/NatX" ;
22import FloatX "mo:xtended-numbers/FloatX" ;
3- import Blob "mo:base/Blob" ;
4- import Buffer "mo:base/Buffer" ;
5- import Int "mo:base/Int" ;
6- import Int64 "mo:base/Int64" ;
7- import Iter "mo:base/Iter" ;
8- import Nat "mo:base/Nat" ;
9- import Nat64 "mo:base/Nat64" ;
10- import Nat8 "mo:base/Nat8" ;
11- import Result "mo:base/Result" ;
12- import Text "mo:base/Text" ;
13- import Util "./Util" ;
3+ import Blob "mo:core/Blob" ;
4+ import Int "mo:core/Int" ;
5+ import Int64 "mo:core/Int64" ;
6+ import Iter "mo:core/Iter" ;
7+ import Nat "mo:core/Nat" ;
8+ import Nat64 "mo:core/Nat64" ;
9+ import Nat8 "mo:core/Nat8" ;
10+ import Result "mo:core/Result" ;
11+ import Text "mo:core/Text" ;
12+ import List "mo:core/List" ;
1413import Types "./Types" ;
1514
1615// / CBOR (Concise Binary Object Representation) decoder for Motoko.
@@ -29,7 +28,7 @@ import Types "./Types";
2928// / Example usage:
3029// / ```motoko
3130// / import CBOR "mo:cbor";
32- // / import Result "mo:base /Result";
31+ // / import Result "mo:core /Result";
3332// /
3433// / // Decode CBOR bytes to a value
3534// / let bytes: [Nat8] = [0x18, 0x2a]; // CBOR encoding of integer 42
@@ -64,7 +63,7 @@ module {
6463 // / ```motoko
6564 // / let bytes: [Nat8] = [0xbf, 0x63, 0x46, 0x75, 0x6e, 0xf5, 0x63, 0x41, 0x6d, 0x74, 0x21, 0xff];
6665 // / let cbor: Types.Value = switch(fromBytes(bytes.vals())) {
67- // / case (#err(e)) Debug .trap("Decoding failed: " # debug_show(e));
66+ // / case (#err(e)) Runtime .trap("Decoding failed: " # debug_show(e));
6867 // / case (#ok(c)) c;
6968 // / };
7069 // / ```
@@ -197,28 +196,28 @@ module {
197196 };
198197 case (#ok(#indef)) {
199198 // Loop indefinitely for each array item
200- let buffer = Buffer . Buffer < Types . Value > (1 );
199+ let buffer = List . empty < Types . Value > ();
201200 label l loop {
202201 let cbor_value : Types . Value = switch (decodeInternal(true )) {
203202 case (#err(e)) return #err(e);
204203 case (#ok(#majorType7(#_break))) break l;
205204 case (#ok(v)) v;
206205 };
207- buffer . add(cbor_value);
206+ List . add(buffer, cbor_value);
208207 };
209- return #ok(#majorType4(Buffer . toArray(buffer)));
208+ return #ok(#majorType4(List . toArray(buffer)));
210209 };
211210 case (#err(x)) return #err(x);
212211 };
213- let buffer = Buffer . Buffer < Types . Value > (Nat64 . toNat(array_length) );
214- for (i in Iter . range(1 , Nat64 . toNat(array_length))) {
212+ let buffer = List . empty < Types . Value > ();
213+ for (i in Nat . range(1 , Nat64 . toNat(array_length) + 1 )) {
215214 let cbor_value : Types . Value = switch (decodeInternal(false )) {
216215 case (#err(e)) return #err(e);
217216 case (#ok(v)) v;
218217 };
219- buffer . add(cbor_value);
218+ List . add(buffer, cbor_value);
220219 };
221- #ok(#majorType4(Buffer . toArray(buffer)));
220+ #ok(#majorType4(List . toArray(buffer)));
222221 };
223222
224223 private func parseMajorType5(additionalBits : Nat8 ) : Result . Result < Types . Value , Types . DecodingError > {
@@ -232,28 +231,28 @@ module {
232231 };
233232 case (#ok(#indef)) {
234233 // Loop indefinitely for each array item
235- let buffer = Buffer . Buffer < (Types . Value , Types . Value )> (1 );
234+ let buffer = List . empty < (Types . Value , Types . Value )> ();
236235 label l loop {
237236 let (key, value) = switch (decodeKeyValuePair()) {
238237 case (#err(#unexpectedBreak)) break l;
239238 case (#err(e)) return #err(e);
240239 case (#ok(v)) v;
241240 };
242- buffer . add((key, value));
241+ List . add(buffer, (key, value));
243242 };
244- return #ok(#majorType5(Buffer . toArray(buffer)));
243+ return #ok(#majorType5(List . toArray(buffer)));
245244 };
246245 case (#err(x)) return #err(x);
247246 };
248- let buffer = Buffer . Buffer < (Types . Value , Types . Value )> (Nat64 . toNat(map_size) );
249- for (i in Iter . range(1 , Nat64 . toNat(map_size))) {
247+ let buffer = List . empty < (Types . Value , Types . Value )> ();
248+ for (i in Nat . range(1 , Nat64 . toNat(map_size) + 1 )) {
250249 let (key, value) = switch (decodeKeyValuePair()) {
251250 case (#err(e)) return #err(e);
252251 case (#ok(v)) v;
253252 };
254- buffer . add((key, value));
253+ List . add(buffer, (key, value));
255254 };
256- #ok(#majorType5(Buffer . toArray(buffer)));
255+ #ok(#majorType5(List . toArray(buffer)));
257256 };
258257
259258 private func parseMajorType6(additionalBits : Nat8 ) : Result . Result < Types . Value , Types . DecodingError > {
@@ -315,7 +314,7 @@ module {
315314 let value = switch (readBytes(byteLength)) {
316315 case (null ) return #err(#unexpectedEndOfBytes);
317316 case (?v) {
318- switch (FloatX . decode( Iter . fromArray(v ), precision, #msb)) {
317+ switch (FloatX . fromBytes(v . vals( ), precision, #msb)) {
319318 case (null ) return #err(#invalid("Invalid float value" ));
320319 case (?v) v;
321320 };
@@ -339,20 +338,20 @@ module {
339338 if (n < 1 ) {
340339 return ?[];
341340 };
342- let iter : Iter . Iter < Nat > = Iter . range(1 , n);
343- let buffer = Buffer . Buffer < Nat8 > (n );
341+ let iter : Iter . Iter < Nat > = Nat . range(1 , n + 1 );
342+ let buffer = List . empty < Nat8 > ();
344343 for (i in iter) {
345344 let byte = switch (readByte()) {
346345 case (null ) return null ;
347346 case (?byte) byte;
348347 };
349- buffer . add(byte);
348+ List . add(buffer, byte);
350349 };
351- return ?Buffer . toArray(buffer);
350+ return ?List . toArray(buffer);
352351 };
353352
354353 private func readIndefBytes(chunkedMajorType : ?Nat8 ) : Result . Result < [Nat8 ], Types . DecodingError > {
355- let buffer = Buffer . Buffer < Nat8 > (1 );
354+ let buffer = List . empty < Nat8 > ();
356355 label l loop {
357356 let byte = switch (readByte()) {
358357 case (null ) return #err(#unexpectedEndOfBytes);
@@ -362,7 +361,7 @@ module {
362361 break l; // Reached end of indefinate byte sequence
363362 };
364363 switch (chunkedMajorType) {
365- case (null ) buffer . add(byte); // byte is actual byte value
364+ case (null ) List . add(buffer, byte); // byte is actual byte value
366365 case (?t) {
367366 // byte represents major type/additional bits of next byte chunk
368367 let (majorType, additionalBits) = parseMajorType(byte);
@@ -374,11 +373,11 @@ module {
374373 case (null ) return #err(#unexpectedEndOfBytes);
375374 case (?v) v;
376375 };
377- Util . appendArrayToBuffer (buffer, bytes);
376+ List . addAll (buffer, bytes. vals() );
378377 };
379378 };
380379 };
381- return #ok(Buffer . toArray(buffer));
380+ return #ok(List . toArray(buffer));
382381 };
383382
384383 private func decodeKeyValuePair() : Result . Result < (Types . Value , Types . Value ), Types . DecodingError > {
@@ -397,10 +396,10 @@ module {
397396 let iter = Iter . fromArray(bytes);
398397 // Convert bytes to value
399398 let result : ?Nat64 = switch (bytes. size()) {
400- case (1 ) do ? { NatX . from8To64(NatX . decodeNat8 (iter, #msb)! ) };
401- case (2 ) do ? { NatX . from16To64(NatX . decodeNat16 (iter, #msb)! ) };
402- case (4 ) do ? { NatX . from32To64(NatX . decodeNat32 (iter, #msb)! ) };
403- case (8 ) NatX . decodeNat64 (iter, #msb);
399+ case (1 ) do ? { NatX . from8To64(NatX . fromNat8Bytes (iter, #msb)! ) };
400+ case (2 ) do ? { NatX . from16To64(NatX . fromNat16Bytes (iter, #msb)! ) };
401+ case (4 ) do ? { NatX . from32To64(NatX . fromNat32Bytes (iter, #msb)! ) };
402+ case (8 ) NatX . fromNat64Bytes (iter, #msb);
404403 case (s) return #err(#invalid("Invalid additional bytes size: " # Nat . toText(s)));
405404 };
406405 switch (result) {
0 commit comments