summaryrefslogtreecommitdiff
path: root/dynarray.sml
diff options
context:
space:
mode:
authorVladimir Azarov <avm@intermediate-node.net>2025-08-06 05:14:27 +0200
committerVladimir Azarov <avm@intermediate-node.net>2025-08-06 05:14:27 +0200
commit3a3220a049b9fef67ca0f85542654ab0a9de0914 (patch)
tree73a82d2579f74c02fb9a227e66f4ef219d44182f /dynarray.sml
parenta4c60603f61dd1a9f0ce420be9067965586dd694 (diff)
Most of conversion to il
Diffstat (limited to 'dynarray.sml')
-rw-r--r--dynarray.sml10
1 files changed, 9 insertions, 1 deletions
diff --git a/dynarray.sml b/dynarray.sml
index 371362e..d52f148 100644
--- a/dynarray.sml
+++ b/dynarray.sml
@@ -20,7 +20,7 @@ structure Dynarray: DYNARRAY = struct
case Int.compare (len, Array.length arr) of
EQUAL =>
let
- val arr2 = Array.array (len * 2, NONE)
+ val arr2 = Array.array (len * 2 + 1, NONE)
in
Array.copy { src = arr, dst = arr2, di = 0 };
dynarr := (len, arr2);
@@ -33,6 +33,14 @@ structure Dynarray: DYNARRAY = struct
| GREATER => raise Unreachable
end
+ fun pushAndGetId dynarr v =
+ let
+ val (len, _ ) = !dynarr
+ val () = push dynarr v
+ in
+ len
+ end
+
fun get dynarr n =
let
val (len, arr) = !dynarr