Mercurial > gemma
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)) + } +}