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 {
52 // len(map[uint16]...) always < math.MaxUint16
53 write16(w, uint16(len(x)))
54 keys := make([]uint16, 0, len(x))
56 keys = append(keys, key)
58 sort.Slice(keys, func(i, j int) bool {
59 i2pos := func(i int) [3]int16 {
60 return Blkpos2Pos([3]int16{}, keys[i])
63 p, q := i2pos(i), i2pos(j)
76 for _, key := range keys {
78 chk(serialize(w, x[key]))
83 map[[3]int16]*NodeMeta {
84 w := zlib.NewWriter(w)
90 if len(x) > math.MaxUint16 {
93 write16(w, uint16(len(x)))
94 keys := make([][3]int16, 0, len(x))
96 keys = append(keys, key)
98 sort.Slice(keys, func(i, j int) bool {
99 p, q := keys[i], keys[j]
112 for _, key := range keys {
113 for _, n := range key {
114 write16(w, uint16(n))
116 chk(serialize(w, x[key]))
123 PointedThing chk(writePointedThing(w, x))
125 []AOMsg { // For AOInitData.Msgs.
126 if len(x) > math.MaxUint8 {
129 write8(w, uint8(len(x)))
130 for _, msg := range x {
132 chk(writeAOMsg(&b, msg))
133 if b.Len() > math.MaxUint32 {
136 write32(w, uint32(b.Len()))
137 _, err := b.WriteTo(w)
142 []NodeDef { // For ToCltNodeDefs.Defs.
143 if len(x) > math.MaxUint16 {
146 write16(w, uint16(len(x)))
151 if b.Len() > math.MaxUint32 {
154 write32(w, uint32(b.Len()))
155 _, err := b.WriteTo(w)