Include tile variant IDs in library.
[lightning.git] / gob.go
1 package main
2
3 import (
4         "bufio"
5         "encoding/gob"
6         "io"
7         _ "net/http/pprof"
8
9         "golang.org/x/crypto/blake2b"
10 )
11
12 type CompactGenome struct {
13         Name     string
14         Variants []tileVariantID
15 }
16
17 type TileVariant struct {
18         Tag      tagID
19         Variant  tileVariantID
20         Blake2b  [blake2b.Size256]byte
21         Sequence []byte
22 }
23
24 type LibraryEntry struct {
25         TagSet         [][]byte
26         CompactGenomes []CompactGenome
27         TileVariants   []TileVariant
28 }
29
30 func ReadCompactGenomes(rdr io.Reader) ([]CompactGenome, error) {
31         dec := gob.NewDecoder(bufio.NewReaderSize(rdr, 1<<26))
32         var ret []CompactGenome
33         for {
34                 var ent LibraryEntry
35                 err := dec.Decode(&ent)
36                 if err == io.EOF {
37                         return ret, nil
38                 } else if err != nil {
39                         return nil, err
40                 }
41                 ret = append(ret, ent.CompactGenomes...)
42         }
43 }