diff pkg/mesh/meshserialize.go @ 5692:d920f0fa2f04 sr-v2

User generic serializer for serialization, too.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Mon, 12 Feb 2024 13:53:32 +0100
parents 9d2e74225104
children ef80748ae4f3
line wrap: on
line diff
--- a/pkg/mesh/meshserialize.go	Mon Feb 12 12:48:07 2024 +0100
+++ b/pkg/mesh/meshserialize.go	Mon Feb 12 13:53:32 2024 +0100
@@ -118,15 +118,15 @@
 	}
 }
 
-// deserializer is a generic function to apply a chain of
-// deserializer function to an object given a reader.
-func deserializer[T any](
-	r *bufio.Reader,
+// serializer is a generic function to apply a chain of
+// serializer/deserializer functions to an object given a reader.
+func serializer[T, S any](
+	s S,
 	t T,
-	fns ...func(T, *bufio.Reader) error,
+	fns ...func(T, S) error,
 ) error {
 	for _, fn := range fns {
-		if err := fn(t, r); err != nil {
+		if err := fn(t, s); err != nil {
 			return err
 		}
 	}
@@ -177,3 +177,16 @@
 	log.Infof("EPSG: %d\n", t.EPSG)
 	return nil
 }
+
+func serializeHeader() func(*STRTree, io.Writer) error {
+	return func(_ *STRTree, w io.Writer) error {
+		_, err := w.Write([]byte(magicHeader))
+		return err
+	}
+}
+
+func serializeVersion(version int) func(*STRTree, io.Writer) error {
+	return func(_ *STRTree, w io.Writer) error {
+		return binary.Write(w, binary.LittleEndian, uint32(version))
+	}
+}