Implement pool_copy_array
[muddle-interpreter.git] / src / alloc.c
index 356a038e9f8587311f17398029eefce1b3ffaaaa..ccd96913fbff18e8b8bbd2ee673086a9f692595f 100644 (file)
@@ -42,6 +42,22 @@ POOL_OBJECT (pool_ptr p)
   return &pool[p];
 }
 
+pool_ptr
+pool_copy_array (const pool_object * objs, uint32_t len)
+{
+  if (!len)
+    return 0;
+  pool_ptr p = pool_alloc (len);
+  for (int i = 0; i < len; i++)
+    {
+      pool[p + i] = (pool_object)
+      {
+      .type = objs[i].type,.rest = p + i + 1,.val = objs[i].val};
+    }
+  pool[p + len - 1].rest = 0;
+  return p;
+}
+
 pool_ptr
 pool_copy_array_rev (const pool_object * objs, uint32_t len)
 {