1 func write8(w io.Writer, x uint8) {
2 _, err := w.Write([]byte{x})
6 func write16(w io.Writer, x uint16) {
13 func write32(w io.Writer, x uint32) {
14 buf := make([]byte, 4)
16 _, err := w.Write(buf)
20 func write64(w io.Writer, x uint64) {
21 buf := make([]byte, 8)
23 _, err := w.Write(buf)
27 byte write8(w, uint8(x))
28 uint8 write8(w, uint8(x))
29 uint16 write16(w, uint16(x))
30 uint32 write32(w, uint32(x))
31 uint64 write64(w, uint64(x))
33 int8 write8(w, uint8(x))
34 int16 write16(w, uint16(x))
35 int32 write32(w, uint32(x))
36 int64 write64(w, uint64(x))
38 bool if x { write8(w, 1) } else { write8(w, 0) }
40 float32 write32(w, math.Float32bits(x))
41 float64 write64(w, math.Float64bits(x))
43 AOMsg writeAOMsg(w, x)
45 image/color.NRGBA w.Write([]byte{x.A, x.R, x.G, x.B})
47 map[uint16]*NodeMeta {
48 w := zlib.NewWriter(w)
54 // len(map[uint16]...) always < math.MaxUint16
55 write16(w, uint16(len(x)))
56 keys := make([]uint16, 0, len(x))
58 keys = append(keys, key)
60 sort.Slice(keys, func(i, j int) bool {
61 i2pos := func(i int) [3]int16 {
62 return Blkpos2Pos([3]int16{}, keys[i])
65 p, q := i2pos(i), i2pos(j)
78 for _, key := range keys {
80 chk(serialize(w, x[key]))
87 map[[3]int16]*NodeMeta {
88 w := zlib.NewWriter(w)
94 if len(x) > math.MaxUint16 {
97 write16(w, uint16(len(x)))
98 keys := make([][3]int16, 0, len(x))
100 keys = append(keys, key)
102 sort.Slice(keys, func(i, j int) bool {
103 p, q := keys[i], keys[j]
116 for _, key := range keys {
117 for _, n := range key {
118 write16(w, uint16(n))
120 chk(serialize(w, x[key]))
127 PointedThing chk(writePointedThing(w, x))
129 []AOMsg { // For AOInitData.Msgs.
130 if len(x) > math.MaxUint8 {
133 write8(w, uint8(len(x)))
134 for _, msg := range x {
136 chk(writeAOMsg(&b, msg))
137 if b.Len() > math.MaxUint32 {
140 write32(w, uint32(b.Len()))
141 _, err := b.WriteTo(w)
146 []NodeDef { // For ToCltNodeDefs.Defs.
147 if len(x) > math.MaxUint16 {
150 write16(w, uint16(len(x)))
155 if b.Len() > math.MaxUint32 {
158 write32(w, uint32(b.Len()))
159 _, err := b.WriteTo(w)