]> gitweb.factorcode.org Git - factor.git/commitdiff
bare: adding support for user types and structs
authorJohn Benediktsson <mrjbq7@gmail.com>
Wed, 15 Jun 2022 18:21:30 +0000 (11:21 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Wed, 15 Jun 2022 18:21:30 +0000 (11:21 -0700)
extra/bare/bare.factor

index 75dbf9565172fd84c21694b738d6d3b90e15923f..de596c52dbba312eef19f3b6e16432f2c2e73b20 100644 (file)
@@ -74,6 +74,13 @@ M: map write-bare
     [ from>> ] [ to>> ] bi [ write-bare ] bi-curry@
     '[ _ _ bi* ] assoc-each ;
 
+! XXX: M: union write-bare
+
+M: user write-bare type>> write-bare ;
+
+M: struct write-bare
+    fields>> [ [ dupd of ] [ write-bare ] bi* ] assoc-each drop ;
+
 GENERIC: read-bare ( schema -- obj )
 
 M: uint read-bare
@@ -130,6 +137,11 @@ M: map read-bare
 M: union read-bare
     [ uint read-bare ] dip members>> value-at read-bare ;
 
+M: user read-bare type>> read-bare ;
+
+M: struct read-bare
+    fields>> [ read-bare ] assoc-map ;
+
 : >bare ( obj schema -- encoded )
     binary [ write-bare ] with-byte-writer ;