From 17a1e499d8d2eb8372d029885aeb17226f58d92d Mon Sep 17 00:00:00 2001
From: Michael Sippel <micha@fragmental.art>
Date: Wed, 19 Mar 2025 17:28:26 +0100
Subject: [PATCH] add lenpfx to valsep morphism

---
 morphisms/value_delim.morphism-base | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/morphisms/value_delim.morphism-base b/morphisms/value_delim.morphism-base
index 1870ff7..cab2c32 100644
--- a/morphisms/value_delim.morphism-base
+++ b/morphisms/value_delim.morphism-base
@@ -69,3 +69,31 @@ morph_seqseq_as_valsep_to_lenpfx (T: Type, Delim: T, EscKey: T)
 
     return 0;
 ```
+
+morph_seqeq_as_lenpfx_to_valsep (T: Type, Delim: T, EscKey: T)
+    < Seq~<LengthPrefix x86.UInt64>
+        <Seq~<LengthPrefix x86.UInt64> T >
+        ~ <RefMut < Seq~<LengthPrefix x86.UInt64> T>>
+        ~ x86.Address
+        ~ x86.UInt64
+    >
+-->   < Seq <Seq T> >
+    ~ < ValueSep T Delim >
+    ~ < Seq~<LengthPrefix x86.UInt64> T >
+```
+    length_prefix_uint8_array_clear( dst );
+
+    for( uint64_t i = 0; i < src->len; ++i ) {
+        LengthPrefixUInt8Array * item = src->items[i];
+
+        for( uint64_t j = 0; j < item->len; ++j ) {
+            length_prefix_uint8_array_push( items->items[j] );
+        }
+
+        if( i+1 < src->len ) {
+            length_prefix_uint8_array_push( Delim );
+        }
+    }
+
+    return 0;
+```