blob: fa41a85e09445d31a652af19511def980a4f51fc [file] [log] [blame]
Damien Neilc37adef2019-04-01 13:49:56 -07001// Copyright 2018 The Go Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style.
3// license that can be found in the LICENSE file.
4
5// Code generated by generate-types. DO NOT EDIT.
6
7package impl
8
9import (
10 "math"
Joe Tsaic51e2e02019-07-13 00:44:41 -070011 "unicode/utf8"
Damien Neilc37adef2019-04-01 13:49:56 -070012
13 "google.golang.org/protobuf/internal/encoding/wire"
14 "google.golang.org/protobuf/reflect/protoreflect"
15)
16
17// sizeBool returns the size of wire encoding a bool pointer as a Bool.
Damien Neil316febd2020-02-09 12:26:50 -080018func sizeBool(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -070019 v := *p.Bool()
Damien Neil316febd2020-02-09 12:26:50 -080020 return f.tagsize + wire.SizeVarint(wire.EncodeBool(v))
Damien Neilc37adef2019-04-01 13:49:56 -070021}
22
23// appendBool wire encodes a bool pointer as a Bool.
Damien Neil316febd2020-02-09 12:26:50 -080024func appendBool(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -070025 v := *p.Bool()
Damien Neil316febd2020-02-09 12:26:50 -080026 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -070027 b = wire.AppendVarint(b, wire.EncodeBool(v))
28 return b, nil
29}
30
Damien Neile91877d2019-06-27 10:54:42 -070031// consumeBool wire decodes a bool pointer as a Bool.
Damien Neil316febd2020-02-09 12:26:50 -080032func consumeBool(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -070033 if wtyp != wire.VarintType {
Damien Neilf0831e82020-01-21 14:25:12 -080034 return out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -070035 }
Damien Neiladbbc8e2020-01-24 17:01:14 -080036 var v uint64
37 var n int
38 if len(b) >= 1 && b[0] < 0x80 {
39 v = uint64(b[0])
40 n = 1
41 } else if len(b) >= 2 && b[1] < 128 {
42 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
43 n = 2
44 } else {
45 v, n = wire.ConsumeVarint(b)
46 }
Damien Neile91877d2019-06-27 10:54:42 -070047 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -080048 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -070049 }
50 *p.Bool() = wire.DecodeBool(v)
Damien Neilf0831e82020-01-21 14:25:12 -080051 out.n = n
52 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -070053}
54
Damien Neilc37adef2019-04-01 13:49:56 -070055var coderBool = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -070056 size: sizeBool,
57 marshal: appendBool,
58 unmarshal: consumeBool,
Damien Neilc37adef2019-04-01 13:49:56 -070059}
60
Joe Tsaic51e2e02019-07-13 00:44:41 -070061// sizeBoolNoZero returns the size of wire encoding a bool pointer as a Bool.
Damien Neilc37adef2019-04-01 13:49:56 -070062// The zero value is not encoded.
Damien Neil316febd2020-02-09 12:26:50 -080063func sizeBoolNoZero(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -070064 v := *p.Bool()
65 if v == false {
66 return 0
67 }
Damien Neil316febd2020-02-09 12:26:50 -080068 return f.tagsize + wire.SizeVarint(wire.EncodeBool(v))
Damien Neilc37adef2019-04-01 13:49:56 -070069}
70
Joe Tsaic51e2e02019-07-13 00:44:41 -070071// appendBoolNoZero wire encodes a bool pointer as a Bool.
Damien Neilc37adef2019-04-01 13:49:56 -070072// The zero value is not encoded.
Damien Neil316febd2020-02-09 12:26:50 -080073func appendBoolNoZero(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -070074 v := *p.Bool()
75 if v == false {
76 return b, nil
77 }
Damien Neil316febd2020-02-09 12:26:50 -080078 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -070079 b = wire.AppendVarint(b, wire.EncodeBool(v))
80 return b, nil
81}
82
83var coderBoolNoZero = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -070084 size: sizeBoolNoZero,
85 marshal: appendBoolNoZero,
86 unmarshal: consumeBool,
Damien Neilc37adef2019-04-01 13:49:56 -070087}
88
89// sizeBoolPtr returns the size of wire encoding a *bool pointer as a Bool.
90// It panics if the pointer is nil.
Damien Neil316febd2020-02-09 12:26:50 -080091func sizeBoolPtr(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -070092 v := **p.BoolPtr()
Damien Neil316febd2020-02-09 12:26:50 -080093 return f.tagsize + wire.SizeVarint(wire.EncodeBool(v))
Damien Neilc37adef2019-04-01 13:49:56 -070094}
95
Damien Neile91877d2019-06-27 10:54:42 -070096// appendBoolPtr wire encodes a *bool pointer as a Bool.
Damien Neilc37adef2019-04-01 13:49:56 -070097// It panics if the pointer is nil.
Damien Neil316febd2020-02-09 12:26:50 -080098func appendBoolPtr(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -070099 v := **p.BoolPtr()
Damien Neil316febd2020-02-09 12:26:50 -0800100 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -0700101 b = wire.AppendVarint(b, wire.EncodeBool(v))
102 return b, nil
103}
104
Damien Neile91877d2019-06-27 10:54:42 -0700105// consumeBoolPtr wire decodes a *bool pointer as a Bool.
Damien Neil316febd2020-02-09 12:26:50 -0800106func consumeBoolPtr(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -0700107 if wtyp != wire.VarintType {
Damien Neilf0831e82020-01-21 14:25:12 -0800108 return out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -0700109 }
Damien Neiladbbc8e2020-01-24 17:01:14 -0800110 var v uint64
111 var n int
112 if len(b) >= 1 && b[0] < 0x80 {
113 v = uint64(b[0])
114 n = 1
115 } else if len(b) >= 2 && b[1] < 128 {
116 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
117 n = 2
118 } else {
119 v, n = wire.ConsumeVarint(b)
120 }
Damien Neile91877d2019-06-27 10:54:42 -0700121 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -0800122 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -0700123 }
124 vp := p.BoolPtr()
125 if *vp == nil {
126 *vp = new(bool)
127 }
128 **vp = wire.DecodeBool(v)
Damien Neilf0831e82020-01-21 14:25:12 -0800129 out.n = n
130 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -0700131}
132
Damien Neilc37adef2019-04-01 13:49:56 -0700133var coderBoolPtr = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -0700134 size: sizeBoolPtr,
135 marshal: appendBoolPtr,
136 unmarshal: consumeBoolPtr,
Damien Neilc37adef2019-04-01 13:49:56 -0700137}
138
139// sizeBoolSlice returns the size of wire encoding a []bool pointer as a repeated Bool.
Damien Neil316febd2020-02-09 12:26:50 -0800140func sizeBoolSlice(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -0700141 s := *p.BoolSlice()
142 for _, v := range s {
Damien Neil316febd2020-02-09 12:26:50 -0800143 size += f.tagsize + wire.SizeVarint(wire.EncodeBool(v))
Damien Neilc37adef2019-04-01 13:49:56 -0700144 }
145 return size
146}
147
148// appendBoolSlice encodes a []bool pointer as a repeated Bool.
Damien Neil316febd2020-02-09 12:26:50 -0800149func appendBoolSlice(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -0700150 s := *p.BoolSlice()
151 for _, v := range s {
Damien Neil316febd2020-02-09 12:26:50 -0800152 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -0700153 b = wire.AppendVarint(b, wire.EncodeBool(v))
154 }
155 return b, nil
156}
157
Damien Neile91877d2019-06-27 10:54:42 -0700158// consumeBoolSlice wire decodes a []bool pointer as a repeated Bool.
Damien Neil316febd2020-02-09 12:26:50 -0800159func consumeBoolSlice(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -0700160 sp := p.BoolSlice()
161 if wtyp == wire.BytesType {
162 s := *sp
Damien Neilf0831e82020-01-21 14:25:12 -0800163 b, n := wire.ConsumeBytes(b)
Damien Neile91877d2019-06-27 10:54:42 -0700164 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -0800165 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -0700166 }
167 for len(b) > 0 {
Damien Neiladbbc8e2020-01-24 17:01:14 -0800168 var v uint64
169 var n int
170 if len(b) >= 1 && b[0] < 0x80 {
171 v = uint64(b[0])
172 n = 1
173 } else if len(b) >= 2 && b[1] < 128 {
174 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
175 n = 2
176 } else {
177 v, n = wire.ConsumeVarint(b)
178 }
Damien Neile91877d2019-06-27 10:54:42 -0700179 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -0800180 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -0700181 }
182 s = append(s, wire.DecodeBool(v))
183 b = b[n:]
184 }
185 *sp = s
Damien Neilf0831e82020-01-21 14:25:12 -0800186 out.n = n
187 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -0700188 }
189 if wtyp != wire.VarintType {
Damien Neilf0831e82020-01-21 14:25:12 -0800190 return out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -0700191 }
Damien Neiladbbc8e2020-01-24 17:01:14 -0800192 var v uint64
193 var n int
194 if len(b) >= 1 && b[0] < 0x80 {
195 v = uint64(b[0])
196 n = 1
197 } else if len(b) >= 2 && b[1] < 128 {
198 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
199 n = 2
200 } else {
201 v, n = wire.ConsumeVarint(b)
202 }
Damien Neile91877d2019-06-27 10:54:42 -0700203 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -0800204 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -0700205 }
206 *sp = append(*sp, wire.DecodeBool(v))
Damien Neilf0831e82020-01-21 14:25:12 -0800207 out.n = n
208 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -0700209}
210
Damien Neilc37adef2019-04-01 13:49:56 -0700211var coderBoolSlice = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -0700212 size: sizeBoolSlice,
213 marshal: appendBoolSlice,
214 unmarshal: consumeBoolSlice,
Damien Neilc37adef2019-04-01 13:49:56 -0700215}
216
217// sizeBoolPackedSlice returns the size of wire encoding a []bool pointer as a packed repeated Bool.
Damien Neil316febd2020-02-09 12:26:50 -0800218func sizeBoolPackedSlice(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -0700219 s := *p.BoolSlice()
220 if len(s) == 0 {
221 return 0
222 }
223 n := 0
224 for _, v := range s {
225 n += wire.SizeVarint(wire.EncodeBool(v))
226 }
Damien Neil316febd2020-02-09 12:26:50 -0800227 return f.tagsize + wire.SizeBytes(n)
Damien Neilc37adef2019-04-01 13:49:56 -0700228}
229
230// appendBoolPackedSlice encodes a []bool pointer as a packed repeated Bool.
Damien Neil316febd2020-02-09 12:26:50 -0800231func appendBoolPackedSlice(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -0700232 s := *p.BoolSlice()
233 if len(s) == 0 {
234 return b, nil
235 }
Damien Neil316febd2020-02-09 12:26:50 -0800236 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -0700237 n := 0
238 for _, v := range s {
239 n += wire.SizeVarint(wire.EncodeBool(v))
240 }
241 b = wire.AppendVarint(b, uint64(n))
242 for _, v := range s {
243 b = wire.AppendVarint(b, wire.EncodeBool(v))
244 }
245 return b, nil
246}
247
248var coderBoolPackedSlice = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -0700249 size: sizeBoolPackedSlice,
250 marshal: appendBoolPackedSlice,
251 unmarshal: consumeBoolSlice,
Damien Neilc37adef2019-04-01 13:49:56 -0700252}
253
Damien Neil68b81c32019-08-22 11:41:32 -0700254// sizeBoolValue returns the size of wire encoding a bool value as a Bool.
255func sizeBoolValue(v protoreflect.Value, tagsize int, _ marshalOptions) int {
256 return tagsize + wire.SizeVarint(wire.EncodeBool(v.Bool()))
Damien Neilc37adef2019-04-01 13:49:56 -0700257}
258
Damien Neil68b81c32019-08-22 11:41:32 -0700259// appendBoolValue encodes a bool value as a Bool.
260func appendBoolValue(b []byte, v protoreflect.Value, wiretag uint64, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -0700261 b = wire.AppendVarint(b, wiretag)
Damien Neil68b81c32019-08-22 11:41:32 -0700262 b = wire.AppendVarint(b, wire.EncodeBool(v.Bool()))
Damien Neilc37adef2019-04-01 13:49:56 -0700263 return b, nil
264}
265
Damien Neil68b81c32019-08-22 11:41:32 -0700266// consumeBoolValue decodes a bool value as a Bool.
Damien Neilf0831e82020-01-21 14:25:12 -0800267func consumeBoolValue(b []byte, _ protoreflect.Value, _ wire.Number, wtyp wire.Type, _ unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -0700268 if wtyp != wire.VarintType {
Damien Neilf0831e82020-01-21 14:25:12 -0800269 return protoreflect.Value{}, out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -0700270 }
Damien Neiladbbc8e2020-01-24 17:01:14 -0800271 var v uint64
272 var n int
273 if len(b) >= 1 && b[0] < 0x80 {
274 v = uint64(b[0])
275 n = 1
276 } else if len(b) >= 2 && b[1] < 128 {
277 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
278 n = 2
279 } else {
280 v, n = wire.ConsumeVarint(b)
281 }
Damien Neile91877d2019-06-27 10:54:42 -0700282 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -0800283 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -0700284 }
Damien Neilf0831e82020-01-21 14:25:12 -0800285 out.n = n
286 return protoreflect.ValueOfBool(wire.DecodeBool(v)), out, nil
Damien Neile91877d2019-06-27 10:54:42 -0700287}
288
Damien Neil68b81c32019-08-22 11:41:32 -0700289var coderBoolValue = valueCoderFuncs{
290 size: sizeBoolValue,
291 marshal: appendBoolValue,
292 unmarshal: consumeBoolValue,
Damien Neilc37adef2019-04-01 13:49:56 -0700293}
294
Damien Neil68b81c32019-08-22 11:41:32 -0700295// sizeBoolSliceValue returns the size of wire encoding a []bool value as a repeated Bool.
296func sizeBoolSliceValue(listv protoreflect.Value, tagsize int, _ marshalOptions) (size int) {
297 list := listv.List()
298 for i, llen := 0, list.Len(); i < llen; i++ {
299 v := list.Get(i)
300 size += tagsize + wire.SizeVarint(wire.EncodeBool(v.Bool()))
Damien Neilc37adef2019-04-01 13:49:56 -0700301 }
302 return size
303}
304
Damien Neil68b81c32019-08-22 11:41:32 -0700305// appendBoolSliceValue encodes a []bool value as a repeated Bool.
306func appendBoolSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, _ marshalOptions) ([]byte, error) {
307 list := listv.List()
308 for i, llen := 0, list.Len(); i < llen; i++ {
309 v := list.Get(i)
Damien Neilc37adef2019-04-01 13:49:56 -0700310 b = wire.AppendVarint(b, wiretag)
Damien Neil68b81c32019-08-22 11:41:32 -0700311 b = wire.AppendVarint(b, wire.EncodeBool(v.Bool()))
Damien Neilc37adef2019-04-01 13:49:56 -0700312 }
313 return b, nil
314}
315
Damien Neil68b81c32019-08-22 11:41:32 -0700316// consumeBoolSliceValue wire decodes a []bool value as a repeated Bool.
Damien Neilf0831e82020-01-21 14:25:12 -0800317func consumeBoolSliceValue(b []byte, listv protoreflect.Value, _ wire.Number, wtyp wire.Type, _ unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
Damien Neil68b81c32019-08-22 11:41:32 -0700318 list := listv.List()
Damien Neile91877d2019-06-27 10:54:42 -0700319 if wtyp == wire.BytesType {
Damien Neilf0831e82020-01-21 14:25:12 -0800320 b, n := wire.ConsumeBytes(b)
Damien Neile91877d2019-06-27 10:54:42 -0700321 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -0800322 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -0700323 }
324 for len(b) > 0 {
Damien Neiladbbc8e2020-01-24 17:01:14 -0800325 var v uint64
326 var n int
327 if len(b) >= 1 && b[0] < 0x80 {
328 v = uint64(b[0])
329 n = 1
330 } else if len(b) >= 2 && b[1] < 128 {
331 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
332 n = 2
333 } else {
334 v, n = wire.ConsumeVarint(b)
335 }
Damien Neile91877d2019-06-27 10:54:42 -0700336 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -0800337 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -0700338 }
Damien Neil68b81c32019-08-22 11:41:32 -0700339 list.Append(protoreflect.ValueOfBool(wire.DecodeBool(v)))
Damien Neile91877d2019-06-27 10:54:42 -0700340 b = b[n:]
341 }
Damien Neilf0831e82020-01-21 14:25:12 -0800342 out.n = n
343 return listv, out, nil
Damien Neile91877d2019-06-27 10:54:42 -0700344 }
345 if wtyp != wire.VarintType {
Damien Neilf0831e82020-01-21 14:25:12 -0800346 return protoreflect.Value{}, out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -0700347 }
Damien Neiladbbc8e2020-01-24 17:01:14 -0800348 var v uint64
349 var n int
350 if len(b) >= 1 && b[0] < 0x80 {
351 v = uint64(b[0])
352 n = 1
353 } else if len(b) >= 2 && b[1] < 128 {
354 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
355 n = 2
356 } else {
357 v, n = wire.ConsumeVarint(b)
358 }
Damien Neile91877d2019-06-27 10:54:42 -0700359 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -0800360 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -0700361 }
Damien Neil68b81c32019-08-22 11:41:32 -0700362 list.Append(protoreflect.ValueOfBool(wire.DecodeBool(v)))
Damien Neilf0831e82020-01-21 14:25:12 -0800363 out.n = n
364 return listv, out, nil
Damien Neile91877d2019-06-27 10:54:42 -0700365}
366
Damien Neil68b81c32019-08-22 11:41:32 -0700367var coderBoolSliceValue = valueCoderFuncs{
368 size: sizeBoolSliceValue,
369 marshal: appendBoolSliceValue,
370 unmarshal: consumeBoolSliceValue,
Damien Neilc37adef2019-04-01 13:49:56 -0700371}
372
Damien Neil68b81c32019-08-22 11:41:32 -0700373// sizeBoolPackedSliceValue returns the size of wire encoding a []bool value as a packed repeated Bool.
374func sizeBoolPackedSliceValue(listv protoreflect.Value, tagsize int, _ marshalOptions) (size int) {
375 list := listv.List()
Damien Neil2c0824b2019-12-20 12:21:25 -0800376 llen := list.Len()
377 if llen == 0 {
378 return 0
379 }
Damien Neil7492a092019-07-10 15:23:29 -0700380 n := 0
Damien Neil2c0824b2019-12-20 12:21:25 -0800381 for i, llen := 0, llen; i < llen; i++ {
Damien Neil68b81c32019-08-22 11:41:32 -0700382 v := list.Get(i)
383 n += wire.SizeVarint(wire.EncodeBool(v.Bool()))
Damien Neil7492a092019-07-10 15:23:29 -0700384 }
385 return tagsize + wire.SizeBytes(n)
386}
387
Damien Neil68b81c32019-08-22 11:41:32 -0700388// appendBoolPackedSliceValue encodes a []bool value as a packed repeated Bool.
389func appendBoolPackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, _ marshalOptions) ([]byte, error) {
390 list := listv.List()
391 llen := list.Len()
392 if llen == 0 {
Damien Neil7492a092019-07-10 15:23:29 -0700393 return b, nil
394 }
395 b = wire.AppendVarint(b, wiretag)
396 n := 0
Damien Neil68b81c32019-08-22 11:41:32 -0700397 for i := 0; i < llen; i++ {
398 v := list.Get(i)
399 n += wire.SizeVarint(wire.EncodeBool(v.Bool()))
Damien Neil7492a092019-07-10 15:23:29 -0700400 }
401 b = wire.AppendVarint(b, uint64(n))
Damien Neil68b81c32019-08-22 11:41:32 -0700402 for i := 0; i < llen; i++ {
403 v := list.Get(i)
404 b = wire.AppendVarint(b, wire.EncodeBool(v.Bool()))
Damien Neil7492a092019-07-10 15:23:29 -0700405 }
406 return b, nil
407}
408
Damien Neil68b81c32019-08-22 11:41:32 -0700409var coderBoolPackedSliceValue = valueCoderFuncs{
410 size: sizeBoolPackedSliceValue,
411 marshal: appendBoolPackedSliceValue,
412 unmarshal: consumeBoolSliceValue,
413}
414
415// sizeEnumValue returns the size of wire encoding a value as a Enum.
416func sizeEnumValue(v protoreflect.Value, tagsize int, _ marshalOptions) int {
417 return tagsize + wire.SizeVarint(uint64(v.Enum()))
418}
419
420// appendEnumValue encodes a value as a Enum.
421func appendEnumValue(b []byte, v protoreflect.Value, wiretag uint64, _ marshalOptions) ([]byte, error) {
422 b = wire.AppendVarint(b, wiretag)
423 b = wire.AppendVarint(b, uint64(v.Enum()))
424 return b, nil
425}
426
427// consumeEnumValue decodes a value as a Enum.
Damien Neilf0831e82020-01-21 14:25:12 -0800428func consumeEnumValue(b []byte, _ protoreflect.Value, _ wire.Number, wtyp wire.Type, _ unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
Damien Neil68b81c32019-08-22 11:41:32 -0700429 if wtyp != wire.VarintType {
Damien Neilf0831e82020-01-21 14:25:12 -0800430 return protoreflect.Value{}, out, errUnknown
Damien Neil68b81c32019-08-22 11:41:32 -0700431 }
Damien Neiladbbc8e2020-01-24 17:01:14 -0800432 var v uint64
433 var n int
434 if len(b) >= 1 && b[0] < 0x80 {
435 v = uint64(b[0])
436 n = 1
437 } else if len(b) >= 2 && b[1] < 128 {
438 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
439 n = 2
440 } else {
441 v, n = wire.ConsumeVarint(b)
442 }
Damien Neil68b81c32019-08-22 11:41:32 -0700443 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -0800444 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neil68b81c32019-08-22 11:41:32 -0700445 }
Damien Neilf0831e82020-01-21 14:25:12 -0800446 out.n = n
447 return protoreflect.ValueOfEnum(protoreflect.EnumNumber(v)), out, nil
Damien Neil68b81c32019-08-22 11:41:32 -0700448}
449
450var coderEnumValue = valueCoderFuncs{
451 size: sizeEnumValue,
452 marshal: appendEnumValue,
453 unmarshal: consumeEnumValue,
454}
455
456// sizeEnumSliceValue returns the size of wire encoding a [] value as a repeated Enum.
457func sizeEnumSliceValue(listv protoreflect.Value, tagsize int, _ marshalOptions) (size int) {
458 list := listv.List()
459 for i, llen := 0, list.Len(); i < llen; i++ {
460 v := list.Get(i)
461 size += tagsize + wire.SizeVarint(uint64(v.Enum()))
462 }
463 return size
464}
465
466// appendEnumSliceValue encodes a [] value as a repeated Enum.
467func appendEnumSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, _ marshalOptions) ([]byte, error) {
468 list := listv.List()
469 for i, llen := 0, list.Len(); i < llen; i++ {
470 v := list.Get(i)
471 b = wire.AppendVarint(b, wiretag)
472 b = wire.AppendVarint(b, uint64(v.Enum()))
473 }
474 return b, nil
475}
476
477// consumeEnumSliceValue wire decodes a [] value as a repeated Enum.
Damien Neilf0831e82020-01-21 14:25:12 -0800478func consumeEnumSliceValue(b []byte, listv protoreflect.Value, _ wire.Number, wtyp wire.Type, _ unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
Damien Neil68b81c32019-08-22 11:41:32 -0700479 list := listv.List()
480 if wtyp == wire.BytesType {
Damien Neilf0831e82020-01-21 14:25:12 -0800481 b, n := wire.ConsumeBytes(b)
Damien Neil68b81c32019-08-22 11:41:32 -0700482 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -0800483 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neil68b81c32019-08-22 11:41:32 -0700484 }
485 for len(b) > 0 {
Damien Neiladbbc8e2020-01-24 17:01:14 -0800486 var v uint64
487 var n int
488 if len(b) >= 1 && b[0] < 0x80 {
489 v = uint64(b[0])
490 n = 1
491 } else if len(b) >= 2 && b[1] < 128 {
492 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
493 n = 2
494 } else {
495 v, n = wire.ConsumeVarint(b)
496 }
Damien Neil68b81c32019-08-22 11:41:32 -0700497 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -0800498 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neil68b81c32019-08-22 11:41:32 -0700499 }
500 list.Append(protoreflect.ValueOfEnum(protoreflect.EnumNumber(v)))
501 b = b[n:]
502 }
Damien Neilf0831e82020-01-21 14:25:12 -0800503 out.n = n
504 return listv, out, nil
Damien Neil68b81c32019-08-22 11:41:32 -0700505 }
506 if wtyp != wire.VarintType {
Damien Neilf0831e82020-01-21 14:25:12 -0800507 return protoreflect.Value{}, out, errUnknown
Damien Neil68b81c32019-08-22 11:41:32 -0700508 }
Damien Neiladbbc8e2020-01-24 17:01:14 -0800509 var v uint64
510 var n int
511 if len(b) >= 1 && b[0] < 0x80 {
512 v = uint64(b[0])
513 n = 1
514 } else if len(b) >= 2 && b[1] < 128 {
515 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
516 n = 2
517 } else {
518 v, n = wire.ConsumeVarint(b)
519 }
Damien Neil68b81c32019-08-22 11:41:32 -0700520 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -0800521 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neil68b81c32019-08-22 11:41:32 -0700522 }
523 list.Append(protoreflect.ValueOfEnum(protoreflect.EnumNumber(v)))
Damien Neilf0831e82020-01-21 14:25:12 -0800524 out.n = n
525 return listv, out, nil
Damien Neil68b81c32019-08-22 11:41:32 -0700526}
527
528var coderEnumSliceValue = valueCoderFuncs{
529 size: sizeEnumSliceValue,
530 marshal: appendEnumSliceValue,
531 unmarshal: consumeEnumSliceValue,
532}
533
534// sizeEnumPackedSliceValue returns the size of wire encoding a [] value as a packed repeated Enum.
535func sizeEnumPackedSliceValue(listv protoreflect.Value, tagsize int, _ marshalOptions) (size int) {
536 list := listv.List()
Damien Neil2c0824b2019-12-20 12:21:25 -0800537 llen := list.Len()
538 if llen == 0 {
539 return 0
540 }
Damien Neil68b81c32019-08-22 11:41:32 -0700541 n := 0
Damien Neil2c0824b2019-12-20 12:21:25 -0800542 for i, llen := 0, llen; i < llen; i++ {
Damien Neil68b81c32019-08-22 11:41:32 -0700543 v := list.Get(i)
544 n += wire.SizeVarint(uint64(v.Enum()))
545 }
546 return tagsize + wire.SizeBytes(n)
547}
548
549// appendEnumPackedSliceValue encodes a [] value as a packed repeated Enum.
550func appendEnumPackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, _ marshalOptions) ([]byte, error) {
551 list := listv.List()
552 llen := list.Len()
553 if llen == 0 {
554 return b, nil
555 }
556 b = wire.AppendVarint(b, wiretag)
557 n := 0
558 for i := 0; i < llen; i++ {
559 v := list.Get(i)
560 n += wire.SizeVarint(uint64(v.Enum()))
561 }
562 b = wire.AppendVarint(b, uint64(n))
563 for i := 0; i < llen; i++ {
564 v := list.Get(i)
565 b = wire.AppendVarint(b, uint64(v.Enum()))
566 }
567 return b, nil
568}
569
570var coderEnumPackedSliceValue = valueCoderFuncs{
571 size: sizeEnumPackedSliceValue,
572 marshal: appendEnumPackedSliceValue,
573 unmarshal: consumeEnumSliceValue,
Damien Neil7492a092019-07-10 15:23:29 -0700574}
575
Damien Neilc37adef2019-04-01 13:49:56 -0700576// sizeInt32 returns the size of wire encoding a int32 pointer as a Int32.
Damien Neil316febd2020-02-09 12:26:50 -0800577func sizeInt32(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -0700578 v := *p.Int32()
Damien Neil316febd2020-02-09 12:26:50 -0800579 return f.tagsize + wire.SizeVarint(uint64(v))
Damien Neilc37adef2019-04-01 13:49:56 -0700580}
581
582// appendInt32 wire encodes a int32 pointer as a Int32.
Damien Neil316febd2020-02-09 12:26:50 -0800583func appendInt32(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -0700584 v := *p.Int32()
Damien Neil316febd2020-02-09 12:26:50 -0800585 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -0700586 b = wire.AppendVarint(b, uint64(v))
587 return b, nil
588}
589
Damien Neile91877d2019-06-27 10:54:42 -0700590// consumeInt32 wire decodes a int32 pointer as a Int32.
Damien Neil316febd2020-02-09 12:26:50 -0800591func consumeInt32(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -0700592 if wtyp != wire.VarintType {
Damien Neilf0831e82020-01-21 14:25:12 -0800593 return out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -0700594 }
Damien Neiladbbc8e2020-01-24 17:01:14 -0800595 var v uint64
596 var n int
597 if len(b) >= 1 && b[0] < 0x80 {
598 v = uint64(b[0])
599 n = 1
600 } else if len(b) >= 2 && b[1] < 128 {
601 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
602 n = 2
603 } else {
604 v, n = wire.ConsumeVarint(b)
605 }
Damien Neile91877d2019-06-27 10:54:42 -0700606 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -0800607 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -0700608 }
609 *p.Int32() = int32(v)
Damien Neilf0831e82020-01-21 14:25:12 -0800610 out.n = n
611 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -0700612}
613
Damien Neilc37adef2019-04-01 13:49:56 -0700614var coderInt32 = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -0700615 size: sizeInt32,
616 marshal: appendInt32,
617 unmarshal: consumeInt32,
Damien Neilc37adef2019-04-01 13:49:56 -0700618}
619
Joe Tsaic51e2e02019-07-13 00:44:41 -0700620// sizeInt32NoZero returns the size of wire encoding a int32 pointer as a Int32.
Damien Neilc37adef2019-04-01 13:49:56 -0700621// The zero value is not encoded.
Damien Neil316febd2020-02-09 12:26:50 -0800622func sizeInt32NoZero(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -0700623 v := *p.Int32()
624 if v == 0 {
625 return 0
626 }
Damien Neil316febd2020-02-09 12:26:50 -0800627 return f.tagsize + wire.SizeVarint(uint64(v))
Damien Neilc37adef2019-04-01 13:49:56 -0700628}
629
Joe Tsaic51e2e02019-07-13 00:44:41 -0700630// appendInt32NoZero wire encodes a int32 pointer as a Int32.
Damien Neilc37adef2019-04-01 13:49:56 -0700631// The zero value is not encoded.
Damien Neil316febd2020-02-09 12:26:50 -0800632func appendInt32NoZero(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -0700633 v := *p.Int32()
634 if v == 0 {
635 return b, nil
636 }
Damien Neil316febd2020-02-09 12:26:50 -0800637 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -0700638 b = wire.AppendVarint(b, uint64(v))
639 return b, nil
640}
641
642var coderInt32NoZero = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -0700643 size: sizeInt32NoZero,
644 marshal: appendInt32NoZero,
645 unmarshal: consumeInt32,
Damien Neilc37adef2019-04-01 13:49:56 -0700646}
647
648// sizeInt32Ptr returns the size of wire encoding a *int32 pointer as a Int32.
649// It panics if the pointer is nil.
Damien Neil316febd2020-02-09 12:26:50 -0800650func sizeInt32Ptr(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -0700651 v := **p.Int32Ptr()
Damien Neil316febd2020-02-09 12:26:50 -0800652 return f.tagsize + wire.SizeVarint(uint64(v))
Damien Neilc37adef2019-04-01 13:49:56 -0700653}
654
Damien Neile91877d2019-06-27 10:54:42 -0700655// appendInt32Ptr wire encodes a *int32 pointer as a Int32.
Damien Neilc37adef2019-04-01 13:49:56 -0700656// It panics if the pointer is nil.
Damien Neil316febd2020-02-09 12:26:50 -0800657func appendInt32Ptr(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -0700658 v := **p.Int32Ptr()
Damien Neil316febd2020-02-09 12:26:50 -0800659 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -0700660 b = wire.AppendVarint(b, uint64(v))
661 return b, nil
662}
663
Damien Neile91877d2019-06-27 10:54:42 -0700664// consumeInt32Ptr wire decodes a *int32 pointer as a Int32.
Damien Neil316febd2020-02-09 12:26:50 -0800665func consumeInt32Ptr(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -0700666 if wtyp != wire.VarintType {
Damien Neilf0831e82020-01-21 14:25:12 -0800667 return out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -0700668 }
Damien Neiladbbc8e2020-01-24 17:01:14 -0800669 var v uint64
670 var n int
671 if len(b) >= 1 && b[0] < 0x80 {
672 v = uint64(b[0])
673 n = 1
674 } else if len(b) >= 2 && b[1] < 128 {
675 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
676 n = 2
677 } else {
678 v, n = wire.ConsumeVarint(b)
679 }
Damien Neile91877d2019-06-27 10:54:42 -0700680 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -0800681 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -0700682 }
683 vp := p.Int32Ptr()
684 if *vp == nil {
685 *vp = new(int32)
686 }
687 **vp = int32(v)
Damien Neilf0831e82020-01-21 14:25:12 -0800688 out.n = n
689 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -0700690}
691
Damien Neilc37adef2019-04-01 13:49:56 -0700692var coderInt32Ptr = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -0700693 size: sizeInt32Ptr,
694 marshal: appendInt32Ptr,
695 unmarshal: consumeInt32Ptr,
Damien Neilc37adef2019-04-01 13:49:56 -0700696}
697
698// sizeInt32Slice returns the size of wire encoding a []int32 pointer as a repeated Int32.
Damien Neil316febd2020-02-09 12:26:50 -0800699func sizeInt32Slice(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -0700700 s := *p.Int32Slice()
701 for _, v := range s {
Damien Neil316febd2020-02-09 12:26:50 -0800702 size += f.tagsize + wire.SizeVarint(uint64(v))
Damien Neilc37adef2019-04-01 13:49:56 -0700703 }
704 return size
705}
706
707// appendInt32Slice encodes a []int32 pointer as a repeated Int32.
Damien Neil316febd2020-02-09 12:26:50 -0800708func appendInt32Slice(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -0700709 s := *p.Int32Slice()
710 for _, v := range s {
Damien Neil316febd2020-02-09 12:26:50 -0800711 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -0700712 b = wire.AppendVarint(b, uint64(v))
713 }
714 return b, nil
715}
716
Damien Neile91877d2019-06-27 10:54:42 -0700717// consumeInt32Slice wire decodes a []int32 pointer as a repeated Int32.
Damien Neil316febd2020-02-09 12:26:50 -0800718func consumeInt32Slice(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -0700719 sp := p.Int32Slice()
720 if wtyp == wire.BytesType {
721 s := *sp
Damien Neilf0831e82020-01-21 14:25:12 -0800722 b, n := wire.ConsumeBytes(b)
Damien Neile91877d2019-06-27 10:54:42 -0700723 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -0800724 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -0700725 }
726 for len(b) > 0 {
Damien Neiladbbc8e2020-01-24 17:01:14 -0800727 var v uint64
728 var n int
729 if len(b) >= 1 && b[0] < 0x80 {
730 v = uint64(b[0])
731 n = 1
732 } else if len(b) >= 2 && b[1] < 128 {
733 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
734 n = 2
735 } else {
736 v, n = wire.ConsumeVarint(b)
737 }
Damien Neile91877d2019-06-27 10:54:42 -0700738 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -0800739 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -0700740 }
741 s = append(s, int32(v))
742 b = b[n:]
743 }
744 *sp = s
Damien Neilf0831e82020-01-21 14:25:12 -0800745 out.n = n
746 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -0700747 }
748 if wtyp != wire.VarintType {
Damien Neilf0831e82020-01-21 14:25:12 -0800749 return out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -0700750 }
Damien Neiladbbc8e2020-01-24 17:01:14 -0800751 var v uint64
752 var n int
753 if len(b) >= 1 && b[0] < 0x80 {
754 v = uint64(b[0])
755 n = 1
756 } else if len(b) >= 2 && b[1] < 128 {
757 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
758 n = 2
759 } else {
760 v, n = wire.ConsumeVarint(b)
761 }
Damien Neile91877d2019-06-27 10:54:42 -0700762 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -0800763 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -0700764 }
765 *sp = append(*sp, int32(v))
Damien Neilf0831e82020-01-21 14:25:12 -0800766 out.n = n
767 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -0700768}
769
Damien Neilc37adef2019-04-01 13:49:56 -0700770var coderInt32Slice = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -0700771 size: sizeInt32Slice,
772 marshal: appendInt32Slice,
773 unmarshal: consumeInt32Slice,
Damien Neilc37adef2019-04-01 13:49:56 -0700774}
775
776// sizeInt32PackedSlice returns the size of wire encoding a []int32 pointer as a packed repeated Int32.
Damien Neil316febd2020-02-09 12:26:50 -0800777func sizeInt32PackedSlice(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -0700778 s := *p.Int32Slice()
779 if len(s) == 0 {
780 return 0
781 }
782 n := 0
783 for _, v := range s {
784 n += wire.SizeVarint(uint64(v))
785 }
Damien Neil316febd2020-02-09 12:26:50 -0800786 return f.tagsize + wire.SizeBytes(n)
Damien Neilc37adef2019-04-01 13:49:56 -0700787}
788
789// appendInt32PackedSlice encodes a []int32 pointer as a packed repeated Int32.
Damien Neil316febd2020-02-09 12:26:50 -0800790func appendInt32PackedSlice(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -0700791 s := *p.Int32Slice()
792 if len(s) == 0 {
793 return b, nil
794 }
Damien Neil316febd2020-02-09 12:26:50 -0800795 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -0700796 n := 0
797 for _, v := range s {
798 n += wire.SizeVarint(uint64(v))
799 }
800 b = wire.AppendVarint(b, uint64(n))
801 for _, v := range s {
802 b = wire.AppendVarint(b, uint64(v))
803 }
804 return b, nil
805}
806
807var coderInt32PackedSlice = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -0700808 size: sizeInt32PackedSlice,
809 marshal: appendInt32PackedSlice,
810 unmarshal: consumeInt32Slice,
Damien Neilc37adef2019-04-01 13:49:56 -0700811}
812
Damien Neil68b81c32019-08-22 11:41:32 -0700813// sizeInt32Value returns the size of wire encoding a int32 value as a Int32.
814func sizeInt32Value(v protoreflect.Value, tagsize int, _ marshalOptions) int {
815 return tagsize + wire.SizeVarint(uint64(int32(v.Int())))
Damien Neilc37adef2019-04-01 13:49:56 -0700816}
817
Damien Neil68b81c32019-08-22 11:41:32 -0700818// appendInt32Value encodes a int32 value as a Int32.
819func appendInt32Value(b []byte, v protoreflect.Value, wiretag uint64, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -0700820 b = wire.AppendVarint(b, wiretag)
Damien Neil68b81c32019-08-22 11:41:32 -0700821 b = wire.AppendVarint(b, uint64(int32(v.Int())))
Damien Neilc37adef2019-04-01 13:49:56 -0700822 return b, nil
823}
824
Damien Neil68b81c32019-08-22 11:41:32 -0700825// consumeInt32Value decodes a int32 value as a Int32.
Damien Neilf0831e82020-01-21 14:25:12 -0800826func consumeInt32Value(b []byte, _ protoreflect.Value, _ wire.Number, wtyp wire.Type, _ unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -0700827 if wtyp != wire.VarintType {
Damien Neilf0831e82020-01-21 14:25:12 -0800828 return protoreflect.Value{}, out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -0700829 }
Damien Neiladbbc8e2020-01-24 17:01:14 -0800830 var v uint64
831 var n int
832 if len(b) >= 1 && b[0] < 0x80 {
833 v = uint64(b[0])
834 n = 1
835 } else if len(b) >= 2 && b[1] < 128 {
836 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
837 n = 2
838 } else {
839 v, n = wire.ConsumeVarint(b)
840 }
Damien Neile91877d2019-06-27 10:54:42 -0700841 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -0800842 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -0700843 }
Damien Neilf0831e82020-01-21 14:25:12 -0800844 out.n = n
845 return protoreflect.ValueOfInt32(int32(v)), out, nil
Damien Neile91877d2019-06-27 10:54:42 -0700846}
847
Damien Neil68b81c32019-08-22 11:41:32 -0700848var coderInt32Value = valueCoderFuncs{
849 size: sizeInt32Value,
850 marshal: appendInt32Value,
851 unmarshal: consumeInt32Value,
Damien Neilc37adef2019-04-01 13:49:56 -0700852}
853
Damien Neil68b81c32019-08-22 11:41:32 -0700854// sizeInt32SliceValue returns the size of wire encoding a []int32 value as a repeated Int32.
855func sizeInt32SliceValue(listv protoreflect.Value, tagsize int, _ marshalOptions) (size int) {
856 list := listv.List()
857 for i, llen := 0, list.Len(); i < llen; i++ {
858 v := list.Get(i)
859 size += tagsize + wire.SizeVarint(uint64(int32(v.Int())))
Damien Neilc37adef2019-04-01 13:49:56 -0700860 }
861 return size
862}
863
Damien Neil68b81c32019-08-22 11:41:32 -0700864// appendInt32SliceValue encodes a []int32 value as a repeated Int32.
865func appendInt32SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, _ marshalOptions) ([]byte, error) {
866 list := listv.List()
867 for i, llen := 0, list.Len(); i < llen; i++ {
868 v := list.Get(i)
Damien Neilc37adef2019-04-01 13:49:56 -0700869 b = wire.AppendVarint(b, wiretag)
Damien Neil68b81c32019-08-22 11:41:32 -0700870 b = wire.AppendVarint(b, uint64(int32(v.Int())))
Damien Neilc37adef2019-04-01 13:49:56 -0700871 }
872 return b, nil
873}
874
Damien Neil68b81c32019-08-22 11:41:32 -0700875// consumeInt32SliceValue wire decodes a []int32 value as a repeated Int32.
Damien Neilf0831e82020-01-21 14:25:12 -0800876func consumeInt32SliceValue(b []byte, listv protoreflect.Value, _ wire.Number, wtyp wire.Type, _ unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
Damien Neil68b81c32019-08-22 11:41:32 -0700877 list := listv.List()
Damien Neile91877d2019-06-27 10:54:42 -0700878 if wtyp == wire.BytesType {
Damien Neilf0831e82020-01-21 14:25:12 -0800879 b, n := wire.ConsumeBytes(b)
Damien Neile91877d2019-06-27 10:54:42 -0700880 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -0800881 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -0700882 }
883 for len(b) > 0 {
Damien Neiladbbc8e2020-01-24 17:01:14 -0800884 var v uint64
885 var n int
886 if len(b) >= 1 && b[0] < 0x80 {
887 v = uint64(b[0])
888 n = 1
889 } else if len(b) >= 2 && b[1] < 128 {
890 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
891 n = 2
892 } else {
893 v, n = wire.ConsumeVarint(b)
894 }
Damien Neile91877d2019-06-27 10:54:42 -0700895 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -0800896 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -0700897 }
Damien Neil68b81c32019-08-22 11:41:32 -0700898 list.Append(protoreflect.ValueOfInt32(int32(v)))
Damien Neile91877d2019-06-27 10:54:42 -0700899 b = b[n:]
900 }
Damien Neilf0831e82020-01-21 14:25:12 -0800901 out.n = n
902 return listv, out, nil
Damien Neile91877d2019-06-27 10:54:42 -0700903 }
904 if wtyp != wire.VarintType {
Damien Neilf0831e82020-01-21 14:25:12 -0800905 return protoreflect.Value{}, out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -0700906 }
Damien Neiladbbc8e2020-01-24 17:01:14 -0800907 var v uint64
908 var n int
909 if len(b) >= 1 && b[0] < 0x80 {
910 v = uint64(b[0])
911 n = 1
912 } else if len(b) >= 2 && b[1] < 128 {
913 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
914 n = 2
915 } else {
916 v, n = wire.ConsumeVarint(b)
917 }
Damien Neile91877d2019-06-27 10:54:42 -0700918 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -0800919 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -0700920 }
Damien Neil68b81c32019-08-22 11:41:32 -0700921 list.Append(protoreflect.ValueOfInt32(int32(v)))
Damien Neilf0831e82020-01-21 14:25:12 -0800922 out.n = n
923 return listv, out, nil
Damien Neile91877d2019-06-27 10:54:42 -0700924}
925
Damien Neil68b81c32019-08-22 11:41:32 -0700926var coderInt32SliceValue = valueCoderFuncs{
927 size: sizeInt32SliceValue,
928 marshal: appendInt32SliceValue,
929 unmarshal: consumeInt32SliceValue,
Damien Neilc37adef2019-04-01 13:49:56 -0700930}
931
Damien Neil68b81c32019-08-22 11:41:32 -0700932// sizeInt32PackedSliceValue returns the size of wire encoding a []int32 value as a packed repeated Int32.
933func sizeInt32PackedSliceValue(listv protoreflect.Value, tagsize int, _ marshalOptions) (size int) {
934 list := listv.List()
Damien Neil2c0824b2019-12-20 12:21:25 -0800935 llen := list.Len()
936 if llen == 0 {
937 return 0
938 }
Damien Neil7492a092019-07-10 15:23:29 -0700939 n := 0
Damien Neil2c0824b2019-12-20 12:21:25 -0800940 for i, llen := 0, llen; i < llen; i++ {
Damien Neil68b81c32019-08-22 11:41:32 -0700941 v := list.Get(i)
942 n += wire.SizeVarint(uint64(int32(v.Int())))
Damien Neil7492a092019-07-10 15:23:29 -0700943 }
944 return tagsize + wire.SizeBytes(n)
945}
946
Damien Neil68b81c32019-08-22 11:41:32 -0700947// appendInt32PackedSliceValue encodes a []int32 value as a packed repeated Int32.
948func appendInt32PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, _ marshalOptions) ([]byte, error) {
949 list := listv.List()
950 llen := list.Len()
951 if llen == 0 {
Damien Neil7492a092019-07-10 15:23:29 -0700952 return b, nil
953 }
954 b = wire.AppendVarint(b, wiretag)
955 n := 0
Damien Neil68b81c32019-08-22 11:41:32 -0700956 for i := 0; i < llen; i++ {
957 v := list.Get(i)
958 n += wire.SizeVarint(uint64(int32(v.Int())))
Damien Neil7492a092019-07-10 15:23:29 -0700959 }
960 b = wire.AppendVarint(b, uint64(n))
Damien Neil68b81c32019-08-22 11:41:32 -0700961 for i := 0; i < llen; i++ {
962 v := list.Get(i)
963 b = wire.AppendVarint(b, uint64(int32(v.Int())))
Damien Neil7492a092019-07-10 15:23:29 -0700964 }
965 return b, nil
966}
967
Damien Neil68b81c32019-08-22 11:41:32 -0700968var coderInt32PackedSliceValue = valueCoderFuncs{
969 size: sizeInt32PackedSliceValue,
970 marshal: appendInt32PackedSliceValue,
971 unmarshal: consumeInt32SliceValue,
Damien Neil7492a092019-07-10 15:23:29 -0700972}
973
Damien Neilc37adef2019-04-01 13:49:56 -0700974// sizeSint32 returns the size of wire encoding a int32 pointer as a Sint32.
Damien Neil316febd2020-02-09 12:26:50 -0800975func sizeSint32(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -0700976 v := *p.Int32()
Damien Neil316febd2020-02-09 12:26:50 -0800977 return f.tagsize + wire.SizeVarint(wire.EncodeZigZag(int64(v)))
Damien Neilc37adef2019-04-01 13:49:56 -0700978}
979
980// appendSint32 wire encodes a int32 pointer as a Sint32.
Damien Neil316febd2020-02-09 12:26:50 -0800981func appendSint32(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -0700982 v := *p.Int32()
Damien Neil316febd2020-02-09 12:26:50 -0800983 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -0700984 b = wire.AppendVarint(b, wire.EncodeZigZag(int64(v)))
985 return b, nil
986}
987
Damien Neile91877d2019-06-27 10:54:42 -0700988// consumeSint32 wire decodes a int32 pointer as a Sint32.
Damien Neil316febd2020-02-09 12:26:50 -0800989func consumeSint32(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -0700990 if wtyp != wire.VarintType {
Damien Neilf0831e82020-01-21 14:25:12 -0800991 return out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -0700992 }
Damien Neiladbbc8e2020-01-24 17:01:14 -0800993 var v uint64
994 var n int
995 if len(b) >= 1 && b[0] < 0x80 {
996 v = uint64(b[0])
997 n = 1
998 } else if len(b) >= 2 && b[1] < 128 {
999 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
1000 n = 2
1001 } else {
1002 v, n = wire.ConsumeVarint(b)
1003 }
Damien Neile91877d2019-06-27 10:54:42 -07001004 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08001005 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07001006 }
1007 *p.Int32() = int32(wire.DecodeZigZag(v & math.MaxUint32))
Damien Neilf0831e82020-01-21 14:25:12 -08001008 out.n = n
1009 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -07001010}
1011
Damien Neilc37adef2019-04-01 13:49:56 -07001012var coderSint32 = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07001013 size: sizeSint32,
1014 marshal: appendSint32,
1015 unmarshal: consumeSint32,
Damien Neilc37adef2019-04-01 13:49:56 -07001016}
1017
Joe Tsaic51e2e02019-07-13 00:44:41 -07001018// sizeSint32NoZero returns the size of wire encoding a int32 pointer as a Sint32.
Damien Neilc37adef2019-04-01 13:49:56 -07001019// The zero value is not encoded.
Damien Neil316febd2020-02-09 12:26:50 -08001020func sizeSint32NoZero(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07001021 v := *p.Int32()
1022 if v == 0 {
1023 return 0
1024 }
Damien Neil316febd2020-02-09 12:26:50 -08001025 return f.tagsize + wire.SizeVarint(wire.EncodeZigZag(int64(v)))
Damien Neilc37adef2019-04-01 13:49:56 -07001026}
1027
Joe Tsaic51e2e02019-07-13 00:44:41 -07001028// appendSint32NoZero wire encodes a int32 pointer as a Sint32.
Damien Neilc37adef2019-04-01 13:49:56 -07001029// The zero value is not encoded.
Damien Neil316febd2020-02-09 12:26:50 -08001030func appendSint32NoZero(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07001031 v := *p.Int32()
1032 if v == 0 {
1033 return b, nil
1034 }
Damien Neil316febd2020-02-09 12:26:50 -08001035 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07001036 b = wire.AppendVarint(b, wire.EncodeZigZag(int64(v)))
1037 return b, nil
1038}
1039
1040var coderSint32NoZero = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07001041 size: sizeSint32NoZero,
1042 marshal: appendSint32NoZero,
1043 unmarshal: consumeSint32,
Damien Neilc37adef2019-04-01 13:49:56 -07001044}
1045
1046// sizeSint32Ptr returns the size of wire encoding a *int32 pointer as a Sint32.
1047// It panics if the pointer is nil.
Damien Neil316febd2020-02-09 12:26:50 -08001048func sizeSint32Ptr(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07001049 v := **p.Int32Ptr()
Damien Neil316febd2020-02-09 12:26:50 -08001050 return f.tagsize + wire.SizeVarint(wire.EncodeZigZag(int64(v)))
Damien Neilc37adef2019-04-01 13:49:56 -07001051}
1052
Damien Neile91877d2019-06-27 10:54:42 -07001053// appendSint32Ptr wire encodes a *int32 pointer as a Sint32.
Damien Neilc37adef2019-04-01 13:49:56 -07001054// It panics if the pointer is nil.
Damien Neil316febd2020-02-09 12:26:50 -08001055func appendSint32Ptr(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07001056 v := **p.Int32Ptr()
Damien Neil316febd2020-02-09 12:26:50 -08001057 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07001058 b = wire.AppendVarint(b, wire.EncodeZigZag(int64(v)))
1059 return b, nil
1060}
1061
Damien Neile91877d2019-06-27 10:54:42 -07001062// consumeSint32Ptr wire decodes a *int32 pointer as a Sint32.
Damien Neil316febd2020-02-09 12:26:50 -08001063func consumeSint32Ptr(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07001064 if wtyp != wire.VarintType {
Damien Neilf0831e82020-01-21 14:25:12 -08001065 return out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07001066 }
Damien Neiladbbc8e2020-01-24 17:01:14 -08001067 var v uint64
1068 var n int
1069 if len(b) >= 1 && b[0] < 0x80 {
1070 v = uint64(b[0])
1071 n = 1
1072 } else if len(b) >= 2 && b[1] < 128 {
1073 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
1074 n = 2
1075 } else {
1076 v, n = wire.ConsumeVarint(b)
1077 }
Damien Neile91877d2019-06-27 10:54:42 -07001078 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08001079 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07001080 }
1081 vp := p.Int32Ptr()
1082 if *vp == nil {
1083 *vp = new(int32)
1084 }
1085 **vp = int32(wire.DecodeZigZag(v & math.MaxUint32))
Damien Neilf0831e82020-01-21 14:25:12 -08001086 out.n = n
1087 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -07001088}
1089
Damien Neilc37adef2019-04-01 13:49:56 -07001090var coderSint32Ptr = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07001091 size: sizeSint32Ptr,
1092 marshal: appendSint32Ptr,
1093 unmarshal: consumeSint32Ptr,
Damien Neilc37adef2019-04-01 13:49:56 -07001094}
1095
1096// sizeSint32Slice returns the size of wire encoding a []int32 pointer as a repeated Sint32.
Damien Neil316febd2020-02-09 12:26:50 -08001097func sizeSint32Slice(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07001098 s := *p.Int32Slice()
1099 for _, v := range s {
Damien Neil316febd2020-02-09 12:26:50 -08001100 size += f.tagsize + wire.SizeVarint(wire.EncodeZigZag(int64(v)))
Damien Neilc37adef2019-04-01 13:49:56 -07001101 }
1102 return size
1103}
1104
1105// appendSint32Slice encodes a []int32 pointer as a repeated Sint32.
Damien Neil316febd2020-02-09 12:26:50 -08001106func appendSint32Slice(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07001107 s := *p.Int32Slice()
1108 for _, v := range s {
Damien Neil316febd2020-02-09 12:26:50 -08001109 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07001110 b = wire.AppendVarint(b, wire.EncodeZigZag(int64(v)))
1111 }
1112 return b, nil
1113}
1114
Damien Neile91877d2019-06-27 10:54:42 -07001115// consumeSint32Slice wire decodes a []int32 pointer as a repeated Sint32.
Damien Neil316febd2020-02-09 12:26:50 -08001116func consumeSint32Slice(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07001117 sp := p.Int32Slice()
1118 if wtyp == wire.BytesType {
1119 s := *sp
Damien Neilf0831e82020-01-21 14:25:12 -08001120 b, n := wire.ConsumeBytes(b)
Damien Neile91877d2019-06-27 10:54:42 -07001121 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08001122 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07001123 }
1124 for len(b) > 0 {
Damien Neiladbbc8e2020-01-24 17:01:14 -08001125 var v uint64
1126 var n int
1127 if len(b) >= 1 && b[0] < 0x80 {
1128 v = uint64(b[0])
1129 n = 1
1130 } else if len(b) >= 2 && b[1] < 128 {
1131 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
1132 n = 2
1133 } else {
1134 v, n = wire.ConsumeVarint(b)
1135 }
Damien Neile91877d2019-06-27 10:54:42 -07001136 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08001137 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07001138 }
1139 s = append(s, int32(wire.DecodeZigZag(v&math.MaxUint32)))
1140 b = b[n:]
1141 }
1142 *sp = s
Damien Neilf0831e82020-01-21 14:25:12 -08001143 out.n = n
1144 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -07001145 }
1146 if wtyp != wire.VarintType {
Damien Neilf0831e82020-01-21 14:25:12 -08001147 return out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07001148 }
Damien Neiladbbc8e2020-01-24 17:01:14 -08001149 var v uint64
1150 var n int
1151 if len(b) >= 1 && b[0] < 0x80 {
1152 v = uint64(b[0])
1153 n = 1
1154 } else if len(b) >= 2 && b[1] < 128 {
1155 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
1156 n = 2
1157 } else {
1158 v, n = wire.ConsumeVarint(b)
1159 }
Damien Neile91877d2019-06-27 10:54:42 -07001160 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08001161 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07001162 }
1163 *sp = append(*sp, int32(wire.DecodeZigZag(v&math.MaxUint32)))
Damien Neilf0831e82020-01-21 14:25:12 -08001164 out.n = n
1165 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -07001166}
1167
Damien Neilc37adef2019-04-01 13:49:56 -07001168var coderSint32Slice = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07001169 size: sizeSint32Slice,
1170 marshal: appendSint32Slice,
1171 unmarshal: consumeSint32Slice,
Damien Neilc37adef2019-04-01 13:49:56 -07001172}
1173
1174// sizeSint32PackedSlice returns the size of wire encoding a []int32 pointer as a packed repeated Sint32.
Damien Neil316febd2020-02-09 12:26:50 -08001175func sizeSint32PackedSlice(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07001176 s := *p.Int32Slice()
1177 if len(s) == 0 {
1178 return 0
1179 }
1180 n := 0
1181 for _, v := range s {
1182 n += wire.SizeVarint(wire.EncodeZigZag(int64(v)))
1183 }
Damien Neil316febd2020-02-09 12:26:50 -08001184 return f.tagsize + wire.SizeBytes(n)
Damien Neilc37adef2019-04-01 13:49:56 -07001185}
1186
1187// appendSint32PackedSlice encodes a []int32 pointer as a packed repeated Sint32.
Damien Neil316febd2020-02-09 12:26:50 -08001188func appendSint32PackedSlice(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07001189 s := *p.Int32Slice()
1190 if len(s) == 0 {
1191 return b, nil
1192 }
Damien Neil316febd2020-02-09 12:26:50 -08001193 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07001194 n := 0
1195 for _, v := range s {
1196 n += wire.SizeVarint(wire.EncodeZigZag(int64(v)))
1197 }
1198 b = wire.AppendVarint(b, uint64(n))
1199 for _, v := range s {
1200 b = wire.AppendVarint(b, wire.EncodeZigZag(int64(v)))
1201 }
1202 return b, nil
1203}
1204
1205var coderSint32PackedSlice = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07001206 size: sizeSint32PackedSlice,
1207 marshal: appendSint32PackedSlice,
1208 unmarshal: consumeSint32Slice,
Damien Neilc37adef2019-04-01 13:49:56 -07001209}
1210
Damien Neil68b81c32019-08-22 11:41:32 -07001211// sizeSint32Value returns the size of wire encoding a int32 value as a Sint32.
1212func sizeSint32Value(v protoreflect.Value, tagsize int, _ marshalOptions) int {
1213 return tagsize + wire.SizeVarint(wire.EncodeZigZag(int64(int32(v.Int()))))
Damien Neilc37adef2019-04-01 13:49:56 -07001214}
1215
Damien Neil68b81c32019-08-22 11:41:32 -07001216// appendSint32Value encodes a int32 value as a Sint32.
1217func appendSint32Value(b []byte, v protoreflect.Value, wiretag uint64, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07001218 b = wire.AppendVarint(b, wiretag)
Damien Neil68b81c32019-08-22 11:41:32 -07001219 b = wire.AppendVarint(b, wire.EncodeZigZag(int64(int32(v.Int()))))
Damien Neilc37adef2019-04-01 13:49:56 -07001220 return b, nil
1221}
1222
Damien Neil68b81c32019-08-22 11:41:32 -07001223// consumeSint32Value decodes a int32 value as a Sint32.
Damien Neilf0831e82020-01-21 14:25:12 -08001224func consumeSint32Value(b []byte, _ protoreflect.Value, _ wire.Number, wtyp wire.Type, _ unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07001225 if wtyp != wire.VarintType {
Damien Neilf0831e82020-01-21 14:25:12 -08001226 return protoreflect.Value{}, out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07001227 }
Damien Neiladbbc8e2020-01-24 17:01:14 -08001228 var v uint64
1229 var n int
1230 if len(b) >= 1 && b[0] < 0x80 {
1231 v = uint64(b[0])
1232 n = 1
1233 } else if len(b) >= 2 && b[1] < 128 {
1234 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
1235 n = 2
1236 } else {
1237 v, n = wire.ConsumeVarint(b)
1238 }
Damien Neile91877d2019-06-27 10:54:42 -07001239 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08001240 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07001241 }
Damien Neilf0831e82020-01-21 14:25:12 -08001242 out.n = n
1243 return protoreflect.ValueOfInt32(int32(wire.DecodeZigZag(v & math.MaxUint32))), out, nil
Damien Neile91877d2019-06-27 10:54:42 -07001244}
1245
Damien Neil68b81c32019-08-22 11:41:32 -07001246var coderSint32Value = valueCoderFuncs{
1247 size: sizeSint32Value,
1248 marshal: appendSint32Value,
1249 unmarshal: consumeSint32Value,
Damien Neilc37adef2019-04-01 13:49:56 -07001250}
1251
Damien Neil68b81c32019-08-22 11:41:32 -07001252// sizeSint32SliceValue returns the size of wire encoding a []int32 value as a repeated Sint32.
1253func sizeSint32SliceValue(listv protoreflect.Value, tagsize int, _ marshalOptions) (size int) {
1254 list := listv.List()
1255 for i, llen := 0, list.Len(); i < llen; i++ {
1256 v := list.Get(i)
1257 size += tagsize + wire.SizeVarint(wire.EncodeZigZag(int64(int32(v.Int()))))
Damien Neilc37adef2019-04-01 13:49:56 -07001258 }
1259 return size
1260}
1261
Damien Neil68b81c32019-08-22 11:41:32 -07001262// appendSint32SliceValue encodes a []int32 value as a repeated Sint32.
1263func appendSint32SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, _ marshalOptions) ([]byte, error) {
1264 list := listv.List()
1265 for i, llen := 0, list.Len(); i < llen; i++ {
1266 v := list.Get(i)
Damien Neilc37adef2019-04-01 13:49:56 -07001267 b = wire.AppendVarint(b, wiretag)
Damien Neil68b81c32019-08-22 11:41:32 -07001268 b = wire.AppendVarint(b, wire.EncodeZigZag(int64(int32(v.Int()))))
Damien Neilc37adef2019-04-01 13:49:56 -07001269 }
1270 return b, nil
1271}
1272
Damien Neil68b81c32019-08-22 11:41:32 -07001273// consumeSint32SliceValue wire decodes a []int32 value as a repeated Sint32.
Damien Neilf0831e82020-01-21 14:25:12 -08001274func consumeSint32SliceValue(b []byte, listv protoreflect.Value, _ wire.Number, wtyp wire.Type, _ unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
Damien Neil68b81c32019-08-22 11:41:32 -07001275 list := listv.List()
Damien Neile91877d2019-06-27 10:54:42 -07001276 if wtyp == wire.BytesType {
Damien Neilf0831e82020-01-21 14:25:12 -08001277 b, n := wire.ConsumeBytes(b)
Damien Neile91877d2019-06-27 10:54:42 -07001278 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08001279 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07001280 }
1281 for len(b) > 0 {
Damien Neiladbbc8e2020-01-24 17:01:14 -08001282 var v uint64
1283 var n int
1284 if len(b) >= 1 && b[0] < 0x80 {
1285 v = uint64(b[0])
1286 n = 1
1287 } else if len(b) >= 2 && b[1] < 128 {
1288 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
1289 n = 2
1290 } else {
1291 v, n = wire.ConsumeVarint(b)
1292 }
Damien Neile91877d2019-06-27 10:54:42 -07001293 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08001294 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07001295 }
Damien Neil68b81c32019-08-22 11:41:32 -07001296 list.Append(protoreflect.ValueOfInt32(int32(wire.DecodeZigZag(v & math.MaxUint32))))
Damien Neile91877d2019-06-27 10:54:42 -07001297 b = b[n:]
1298 }
Damien Neilf0831e82020-01-21 14:25:12 -08001299 out.n = n
1300 return listv, out, nil
Damien Neile91877d2019-06-27 10:54:42 -07001301 }
1302 if wtyp != wire.VarintType {
Damien Neilf0831e82020-01-21 14:25:12 -08001303 return protoreflect.Value{}, out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07001304 }
Damien Neiladbbc8e2020-01-24 17:01:14 -08001305 var v uint64
1306 var n int
1307 if len(b) >= 1 && b[0] < 0x80 {
1308 v = uint64(b[0])
1309 n = 1
1310 } else if len(b) >= 2 && b[1] < 128 {
1311 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
1312 n = 2
1313 } else {
1314 v, n = wire.ConsumeVarint(b)
1315 }
Damien Neile91877d2019-06-27 10:54:42 -07001316 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08001317 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07001318 }
Damien Neil68b81c32019-08-22 11:41:32 -07001319 list.Append(protoreflect.ValueOfInt32(int32(wire.DecodeZigZag(v & math.MaxUint32))))
Damien Neilf0831e82020-01-21 14:25:12 -08001320 out.n = n
1321 return listv, out, nil
Damien Neile91877d2019-06-27 10:54:42 -07001322}
1323
Damien Neil68b81c32019-08-22 11:41:32 -07001324var coderSint32SliceValue = valueCoderFuncs{
1325 size: sizeSint32SliceValue,
1326 marshal: appendSint32SliceValue,
1327 unmarshal: consumeSint32SliceValue,
Damien Neilc37adef2019-04-01 13:49:56 -07001328}
1329
Damien Neil68b81c32019-08-22 11:41:32 -07001330// sizeSint32PackedSliceValue returns the size of wire encoding a []int32 value as a packed repeated Sint32.
1331func sizeSint32PackedSliceValue(listv protoreflect.Value, tagsize int, _ marshalOptions) (size int) {
1332 list := listv.List()
Damien Neil2c0824b2019-12-20 12:21:25 -08001333 llen := list.Len()
1334 if llen == 0 {
1335 return 0
1336 }
Damien Neil7492a092019-07-10 15:23:29 -07001337 n := 0
Damien Neil2c0824b2019-12-20 12:21:25 -08001338 for i, llen := 0, llen; i < llen; i++ {
Damien Neil68b81c32019-08-22 11:41:32 -07001339 v := list.Get(i)
1340 n += wire.SizeVarint(wire.EncodeZigZag(int64(int32(v.Int()))))
Damien Neil7492a092019-07-10 15:23:29 -07001341 }
1342 return tagsize + wire.SizeBytes(n)
1343}
1344
Damien Neil68b81c32019-08-22 11:41:32 -07001345// appendSint32PackedSliceValue encodes a []int32 value as a packed repeated Sint32.
1346func appendSint32PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, _ marshalOptions) ([]byte, error) {
1347 list := listv.List()
1348 llen := list.Len()
1349 if llen == 0 {
Damien Neil7492a092019-07-10 15:23:29 -07001350 return b, nil
1351 }
1352 b = wire.AppendVarint(b, wiretag)
1353 n := 0
Damien Neil68b81c32019-08-22 11:41:32 -07001354 for i := 0; i < llen; i++ {
1355 v := list.Get(i)
1356 n += wire.SizeVarint(wire.EncodeZigZag(int64(int32(v.Int()))))
Damien Neil7492a092019-07-10 15:23:29 -07001357 }
1358 b = wire.AppendVarint(b, uint64(n))
Damien Neil68b81c32019-08-22 11:41:32 -07001359 for i := 0; i < llen; i++ {
1360 v := list.Get(i)
1361 b = wire.AppendVarint(b, wire.EncodeZigZag(int64(int32(v.Int()))))
Damien Neil7492a092019-07-10 15:23:29 -07001362 }
1363 return b, nil
1364}
1365
Damien Neil68b81c32019-08-22 11:41:32 -07001366var coderSint32PackedSliceValue = valueCoderFuncs{
1367 size: sizeSint32PackedSliceValue,
1368 marshal: appendSint32PackedSliceValue,
1369 unmarshal: consumeSint32SliceValue,
Damien Neil7492a092019-07-10 15:23:29 -07001370}
1371
Damien Neilc37adef2019-04-01 13:49:56 -07001372// sizeUint32 returns the size of wire encoding a uint32 pointer as a Uint32.
Damien Neil316febd2020-02-09 12:26:50 -08001373func sizeUint32(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07001374 v := *p.Uint32()
Damien Neil316febd2020-02-09 12:26:50 -08001375 return f.tagsize + wire.SizeVarint(uint64(v))
Damien Neilc37adef2019-04-01 13:49:56 -07001376}
1377
1378// appendUint32 wire encodes a uint32 pointer as a Uint32.
Damien Neil316febd2020-02-09 12:26:50 -08001379func appendUint32(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07001380 v := *p.Uint32()
Damien Neil316febd2020-02-09 12:26:50 -08001381 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07001382 b = wire.AppendVarint(b, uint64(v))
1383 return b, nil
1384}
1385
Damien Neile91877d2019-06-27 10:54:42 -07001386// consumeUint32 wire decodes a uint32 pointer as a Uint32.
Damien Neil316febd2020-02-09 12:26:50 -08001387func consumeUint32(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07001388 if wtyp != wire.VarintType {
Damien Neilf0831e82020-01-21 14:25:12 -08001389 return out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07001390 }
Damien Neiladbbc8e2020-01-24 17:01:14 -08001391 var v uint64
1392 var n int
1393 if len(b) >= 1 && b[0] < 0x80 {
1394 v = uint64(b[0])
1395 n = 1
1396 } else if len(b) >= 2 && b[1] < 128 {
1397 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
1398 n = 2
1399 } else {
1400 v, n = wire.ConsumeVarint(b)
1401 }
Damien Neile91877d2019-06-27 10:54:42 -07001402 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08001403 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07001404 }
1405 *p.Uint32() = uint32(v)
Damien Neilf0831e82020-01-21 14:25:12 -08001406 out.n = n
1407 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -07001408}
1409
Damien Neilc37adef2019-04-01 13:49:56 -07001410var coderUint32 = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07001411 size: sizeUint32,
1412 marshal: appendUint32,
1413 unmarshal: consumeUint32,
Damien Neilc37adef2019-04-01 13:49:56 -07001414}
1415
Joe Tsaic51e2e02019-07-13 00:44:41 -07001416// sizeUint32NoZero returns the size of wire encoding a uint32 pointer as a Uint32.
Damien Neilc37adef2019-04-01 13:49:56 -07001417// The zero value is not encoded.
Damien Neil316febd2020-02-09 12:26:50 -08001418func sizeUint32NoZero(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07001419 v := *p.Uint32()
1420 if v == 0 {
1421 return 0
1422 }
Damien Neil316febd2020-02-09 12:26:50 -08001423 return f.tagsize + wire.SizeVarint(uint64(v))
Damien Neilc37adef2019-04-01 13:49:56 -07001424}
1425
Joe Tsaic51e2e02019-07-13 00:44:41 -07001426// appendUint32NoZero wire encodes a uint32 pointer as a Uint32.
Damien Neilc37adef2019-04-01 13:49:56 -07001427// The zero value is not encoded.
Damien Neil316febd2020-02-09 12:26:50 -08001428func appendUint32NoZero(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07001429 v := *p.Uint32()
1430 if v == 0 {
1431 return b, nil
1432 }
Damien Neil316febd2020-02-09 12:26:50 -08001433 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07001434 b = wire.AppendVarint(b, uint64(v))
1435 return b, nil
1436}
1437
1438var coderUint32NoZero = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07001439 size: sizeUint32NoZero,
1440 marshal: appendUint32NoZero,
1441 unmarshal: consumeUint32,
Damien Neilc37adef2019-04-01 13:49:56 -07001442}
1443
1444// sizeUint32Ptr returns the size of wire encoding a *uint32 pointer as a Uint32.
1445// It panics if the pointer is nil.
Damien Neil316febd2020-02-09 12:26:50 -08001446func sizeUint32Ptr(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07001447 v := **p.Uint32Ptr()
Damien Neil316febd2020-02-09 12:26:50 -08001448 return f.tagsize + wire.SizeVarint(uint64(v))
Damien Neilc37adef2019-04-01 13:49:56 -07001449}
1450
Damien Neile91877d2019-06-27 10:54:42 -07001451// appendUint32Ptr wire encodes a *uint32 pointer as a Uint32.
Damien Neilc37adef2019-04-01 13:49:56 -07001452// It panics if the pointer is nil.
Damien Neil316febd2020-02-09 12:26:50 -08001453func appendUint32Ptr(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07001454 v := **p.Uint32Ptr()
Damien Neil316febd2020-02-09 12:26:50 -08001455 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07001456 b = wire.AppendVarint(b, uint64(v))
1457 return b, nil
1458}
1459
Damien Neile91877d2019-06-27 10:54:42 -07001460// consumeUint32Ptr wire decodes a *uint32 pointer as a Uint32.
Damien Neil316febd2020-02-09 12:26:50 -08001461func consumeUint32Ptr(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07001462 if wtyp != wire.VarintType {
Damien Neilf0831e82020-01-21 14:25:12 -08001463 return out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07001464 }
Damien Neiladbbc8e2020-01-24 17:01:14 -08001465 var v uint64
1466 var n int
1467 if len(b) >= 1 && b[0] < 0x80 {
1468 v = uint64(b[0])
1469 n = 1
1470 } else if len(b) >= 2 && b[1] < 128 {
1471 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
1472 n = 2
1473 } else {
1474 v, n = wire.ConsumeVarint(b)
1475 }
Damien Neile91877d2019-06-27 10:54:42 -07001476 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08001477 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07001478 }
1479 vp := p.Uint32Ptr()
1480 if *vp == nil {
1481 *vp = new(uint32)
1482 }
1483 **vp = uint32(v)
Damien Neilf0831e82020-01-21 14:25:12 -08001484 out.n = n
1485 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -07001486}
1487
Damien Neilc37adef2019-04-01 13:49:56 -07001488var coderUint32Ptr = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07001489 size: sizeUint32Ptr,
1490 marshal: appendUint32Ptr,
1491 unmarshal: consumeUint32Ptr,
Damien Neilc37adef2019-04-01 13:49:56 -07001492}
1493
1494// sizeUint32Slice returns the size of wire encoding a []uint32 pointer as a repeated Uint32.
Damien Neil316febd2020-02-09 12:26:50 -08001495func sizeUint32Slice(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07001496 s := *p.Uint32Slice()
1497 for _, v := range s {
Damien Neil316febd2020-02-09 12:26:50 -08001498 size += f.tagsize + wire.SizeVarint(uint64(v))
Damien Neilc37adef2019-04-01 13:49:56 -07001499 }
1500 return size
1501}
1502
1503// appendUint32Slice encodes a []uint32 pointer as a repeated Uint32.
Damien Neil316febd2020-02-09 12:26:50 -08001504func appendUint32Slice(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07001505 s := *p.Uint32Slice()
1506 for _, v := range s {
Damien Neil316febd2020-02-09 12:26:50 -08001507 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07001508 b = wire.AppendVarint(b, uint64(v))
1509 }
1510 return b, nil
1511}
1512
Damien Neile91877d2019-06-27 10:54:42 -07001513// consumeUint32Slice wire decodes a []uint32 pointer as a repeated Uint32.
Damien Neil316febd2020-02-09 12:26:50 -08001514func consumeUint32Slice(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07001515 sp := p.Uint32Slice()
1516 if wtyp == wire.BytesType {
1517 s := *sp
Damien Neilf0831e82020-01-21 14:25:12 -08001518 b, n := wire.ConsumeBytes(b)
Damien Neile91877d2019-06-27 10:54:42 -07001519 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08001520 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07001521 }
1522 for len(b) > 0 {
Damien Neiladbbc8e2020-01-24 17:01:14 -08001523 var v uint64
1524 var n int
1525 if len(b) >= 1 && b[0] < 0x80 {
1526 v = uint64(b[0])
1527 n = 1
1528 } else if len(b) >= 2 && b[1] < 128 {
1529 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
1530 n = 2
1531 } else {
1532 v, n = wire.ConsumeVarint(b)
1533 }
Damien Neile91877d2019-06-27 10:54:42 -07001534 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08001535 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07001536 }
1537 s = append(s, uint32(v))
1538 b = b[n:]
1539 }
1540 *sp = s
Damien Neilf0831e82020-01-21 14:25:12 -08001541 out.n = n
1542 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -07001543 }
1544 if wtyp != wire.VarintType {
Damien Neilf0831e82020-01-21 14:25:12 -08001545 return out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07001546 }
Damien Neiladbbc8e2020-01-24 17:01:14 -08001547 var v uint64
1548 var n int
1549 if len(b) >= 1 && b[0] < 0x80 {
1550 v = uint64(b[0])
1551 n = 1
1552 } else if len(b) >= 2 && b[1] < 128 {
1553 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
1554 n = 2
1555 } else {
1556 v, n = wire.ConsumeVarint(b)
1557 }
Damien Neile91877d2019-06-27 10:54:42 -07001558 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08001559 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07001560 }
1561 *sp = append(*sp, uint32(v))
Damien Neilf0831e82020-01-21 14:25:12 -08001562 out.n = n
1563 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -07001564}
1565
Damien Neilc37adef2019-04-01 13:49:56 -07001566var coderUint32Slice = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07001567 size: sizeUint32Slice,
1568 marshal: appendUint32Slice,
1569 unmarshal: consumeUint32Slice,
Damien Neilc37adef2019-04-01 13:49:56 -07001570}
1571
1572// sizeUint32PackedSlice returns the size of wire encoding a []uint32 pointer as a packed repeated Uint32.
Damien Neil316febd2020-02-09 12:26:50 -08001573func sizeUint32PackedSlice(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07001574 s := *p.Uint32Slice()
1575 if len(s) == 0 {
1576 return 0
1577 }
1578 n := 0
1579 for _, v := range s {
1580 n += wire.SizeVarint(uint64(v))
1581 }
Damien Neil316febd2020-02-09 12:26:50 -08001582 return f.tagsize + wire.SizeBytes(n)
Damien Neilc37adef2019-04-01 13:49:56 -07001583}
1584
1585// appendUint32PackedSlice encodes a []uint32 pointer as a packed repeated Uint32.
Damien Neil316febd2020-02-09 12:26:50 -08001586func appendUint32PackedSlice(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07001587 s := *p.Uint32Slice()
1588 if len(s) == 0 {
1589 return b, nil
1590 }
Damien Neil316febd2020-02-09 12:26:50 -08001591 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07001592 n := 0
1593 for _, v := range s {
1594 n += wire.SizeVarint(uint64(v))
1595 }
1596 b = wire.AppendVarint(b, uint64(n))
1597 for _, v := range s {
1598 b = wire.AppendVarint(b, uint64(v))
1599 }
1600 return b, nil
1601}
1602
1603var coderUint32PackedSlice = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07001604 size: sizeUint32PackedSlice,
1605 marshal: appendUint32PackedSlice,
1606 unmarshal: consumeUint32Slice,
Damien Neilc37adef2019-04-01 13:49:56 -07001607}
1608
Damien Neil68b81c32019-08-22 11:41:32 -07001609// sizeUint32Value returns the size of wire encoding a uint32 value as a Uint32.
1610func sizeUint32Value(v protoreflect.Value, tagsize int, _ marshalOptions) int {
1611 return tagsize + wire.SizeVarint(uint64(uint32(v.Uint())))
Damien Neilc37adef2019-04-01 13:49:56 -07001612}
1613
Damien Neil68b81c32019-08-22 11:41:32 -07001614// appendUint32Value encodes a uint32 value as a Uint32.
1615func appendUint32Value(b []byte, v protoreflect.Value, wiretag uint64, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07001616 b = wire.AppendVarint(b, wiretag)
Damien Neil68b81c32019-08-22 11:41:32 -07001617 b = wire.AppendVarint(b, uint64(uint32(v.Uint())))
Damien Neilc37adef2019-04-01 13:49:56 -07001618 return b, nil
1619}
1620
Damien Neil68b81c32019-08-22 11:41:32 -07001621// consumeUint32Value decodes a uint32 value as a Uint32.
Damien Neilf0831e82020-01-21 14:25:12 -08001622func consumeUint32Value(b []byte, _ protoreflect.Value, _ wire.Number, wtyp wire.Type, _ unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07001623 if wtyp != wire.VarintType {
Damien Neilf0831e82020-01-21 14:25:12 -08001624 return protoreflect.Value{}, out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07001625 }
Damien Neiladbbc8e2020-01-24 17:01:14 -08001626 var v uint64
1627 var n int
1628 if len(b) >= 1 && b[0] < 0x80 {
1629 v = uint64(b[0])
1630 n = 1
1631 } else if len(b) >= 2 && b[1] < 128 {
1632 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
1633 n = 2
1634 } else {
1635 v, n = wire.ConsumeVarint(b)
1636 }
Damien Neile91877d2019-06-27 10:54:42 -07001637 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08001638 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07001639 }
Damien Neilf0831e82020-01-21 14:25:12 -08001640 out.n = n
1641 return protoreflect.ValueOfUint32(uint32(v)), out, nil
Damien Neile91877d2019-06-27 10:54:42 -07001642}
1643
Damien Neil68b81c32019-08-22 11:41:32 -07001644var coderUint32Value = valueCoderFuncs{
1645 size: sizeUint32Value,
1646 marshal: appendUint32Value,
1647 unmarshal: consumeUint32Value,
Damien Neilc37adef2019-04-01 13:49:56 -07001648}
1649
Damien Neil68b81c32019-08-22 11:41:32 -07001650// sizeUint32SliceValue returns the size of wire encoding a []uint32 value as a repeated Uint32.
1651func sizeUint32SliceValue(listv protoreflect.Value, tagsize int, _ marshalOptions) (size int) {
1652 list := listv.List()
1653 for i, llen := 0, list.Len(); i < llen; i++ {
1654 v := list.Get(i)
1655 size += tagsize + wire.SizeVarint(uint64(uint32(v.Uint())))
Damien Neilc37adef2019-04-01 13:49:56 -07001656 }
1657 return size
1658}
1659
Damien Neil68b81c32019-08-22 11:41:32 -07001660// appendUint32SliceValue encodes a []uint32 value as a repeated Uint32.
1661func appendUint32SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, _ marshalOptions) ([]byte, error) {
1662 list := listv.List()
1663 for i, llen := 0, list.Len(); i < llen; i++ {
1664 v := list.Get(i)
Damien Neilc37adef2019-04-01 13:49:56 -07001665 b = wire.AppendVarint(b, wiretag)
Damien Neil68b81c32019-08-22 11:41:32 -07001666 b = wire.AppendVarint(b, uint64(uint32(v.Uint())))
Damien Neilc37adef2019-04-01 13:49:56 -07001667 }
1668 return b, nil
1669}
1670
Damien Neil68b81c32019-08-22 11:41:32 -07001671// consumeUint32SliceValue wire decodes a []uint32 value as a repeated Uint32.
Damien Neilf0831e82020-01-21 14:25:12 -08001672func consumeUint32SliceValue(b []byte, listv protoreflect.Value, _ wire.Number, wtyp wire.Type, _ unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
Damien Neil68b81c32019-08-22 11:41:32 -07001673 list := listv.List()
Damien Neile91877d2019-06-27 10:54:42 -07001674 if wtyp == wire.BytesType {
Damien Neilf0831e82020-01-21 14:25:12 -08001675 b, n := wire.ConsumeBytes(b)
Damien Neile91877d2019-06-27 10:54:42 -07001676 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08001677 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07001678 }
1679 for len(b) > 0 {
Damien Neiladbbc8e2020-01-24 17:01:14 -08001680 var v uint64
1681 var n int
1682 if len(b) >= 1 && b[0] < 0x80 {
1683 v = uint64(b[0])
1684 n = 1
1685 } else if len(b) >= 2 && b[1] < 128 {
1686 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
1687 n = 2
1688 } else {
1689 v, n = wire.ConsumeVarint(b)
1690 }
Damien Neile91877d2019-06-27 10:54:42 -07001691 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08001692 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07001693 }
Damien Neil68b81c32019-08-22 11:41:32 -07001694 list.Append(protoreflect.ValueOfUint32(uint32(v)))
Damien Neile91877d2019-06-27 10:54:42 -07001695 b = b[n:]
1696 }
Damien Neilf0831e82020-01-21 14:25:12 -08001697 out.n = n
1698 return listv, out, nil
Damien Neile91877d2019-06-27 10:54:42 -07001699 }
1700 if wtyp != wire.VarintType {
Damien Neilf0831e82020-01-21 14:25:12 -08001701 return protoreflect.Value{}, out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07001702 }
Damien Neiladbbc8e2020-01-24 17:01:14 -08001703 var v uint64
1704 var n int
1705 if len(b) >= 1 && b[0] < 0x80 {
1706 v = uint64(b[0])
1707 n = 1
1708 } else if len(b) >= 2 && b[1] < 128 {
1709 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
1710 n = 2
1711 } else {
1712 v, n = wire.ConsumeVarint(b)
1713 }
Damien Neile91877d2019-06-27 10:54:42 -07001714 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08001715 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07001716 }
Damien Neil68b81c32019-08-22 11:41:32 -07001717 list.Append(protoreflect.ValueOfUint32(uint32(v)))
Damien Neilf0831e82020-01-21 14:25:12 -08001718 out.n = n
1719 return listv, out, nil
Damien Neile91877d2019-06-27 10:54:42 -07001720}
1721
Damien Neil68b81c32019-08-22 11:41:32 -07001722var coderUint32SliceValue = valueCoderFuncs{
1723 size: sizeUint32SliceValue,
1724 marshal: appendUint32SliceValue,
1725 unmarshal: consumeUint32SliceValue,
Damien Neilc37adef2019-04-01 13:49:56 -07001726}
1727
Damien Neil68b81c32019-08-22 11:41:32 -07001728// sizeUint32PackedSliceValue returns the size of wire encoding a []uint32 value as a packed repeated Uint32.
1729func sizeUint32PackedSliceValue(listv protoreflect.Value, tagsize int, _ marshalOptions) (size int) {
1730 list := listv.List()
Damien Neil2c0824b2019-12-20 12:21:25 -08001731 llen := list.Len()
1732 if llen == 0 {
1733 return 0
1734 }
Damien Neil7492a092019-07-10 15:23:29 -07001735 n := 0
Damien Neil2c0824b2019-12-20 12:21:25 -08001736 for i, llen := 0, llen; i < llen; i++ {
Damien Neil68b81c32019-08-22 11:41:32 -07001737 v := list.Get(i)
1738 n += wire.SizeVarint(uint64(uint32(v.Uint())))
Damien Neil7492a092019-07-10 15:23:29 -07001739 }
1740 return tagsize + wire.SizeBytes(n)
1741}
1742
Damien Neil68b81c32019-08-22 11:41:32 -07001743// appendUint32PackedSliceValue encodes a []uint32 value as a packed repeated Uint32.
1744func appendUint32PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, _ marshalOptions) ([]byte, error) {
1745 list := listv.List()
1746 llen := list.Len()
1747 if llen == 0 {
Damien Neil7492a092019-07-10 15:23:29 -07001748 return b, nil
1749 }
1750 b = wire.AppendVarint(b, wiretag)
1751 n := 0
Damien Neil68b81c32019-08-22 11:41:32 -07001752 for i := 0; i < llen; i++ {
1753 v := list.Get(i)
1754 n += wire.SizeVarint(uint64(uint32(v.Uint())))
Damien Neil7492a092019-07-10 15:23:29 -07001755 }
1756 b = wire.AppendVarint(b, uint64(n))
Damien Neil68b81c32019-08-22 11:41:32 -07001757 for i := 0; i < llen; i++ {
1758 v := list.Get(i)
1759 b = wire.AppendVarint(b, uint64(uint32(v.Uint())))
Damien Neil7492a092019-07-10 15:23:29 -07001760 }
1761 return b, nil
1762}
1763
Damien Neil68b81c32019-08-22 11:41:32 -07001764var coderUint32PackedSliceValue = valueCoderFuncs{
1765 size: sizeUint32PackedSliceValue,
1766 marshal: appendUint32PackedSliceValue,
1767 unmarshal: consumeUint32SliceValue,
Damien Neil7492a092019-07-10 15:23:29 -07001768}
1769
Damien Neilc37adef2019-04-01 13:49:56 -07001770// sizeInt64 returns the size of wire encoding a int64 pointer as a Int64.
Damien Neil316febd2020-02-09 12:26:50 -08001771func sizeInt64(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07001772 v := *p.Int64()
Damien Neil316febd2020-02-09 12:26:50 -08001773 return f.tagsize + wire.SizeVarint(uint64(v))
Damien Neilc37adef2019-04-01 13:49:56 -07001774}
1775
1776// appendInt64 wire encodes a int64 pointer as a Int64.
Damien Neil316febd2020-02-09 12:26:50 -08001777func appendInt64(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07001778 v := *p.Int64()
Damien Neil316febd2020-02-09 12:26:50 -08001779 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07001780 b = wire.AppendVarint(b, uint64(v))
1781 return b, nil
1782}
1783
Damien Neile91877d2019-06-27 10:54:42 -07001784// consumeInt64 wire decodes a int64 pointer as a Int64.
Damien Neil316febd2020-02-09 12:26:50 -08001785func consumeInt64(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07001786 if wtyp != wire.VarintType {
Damien Neilf0831e82020-01-21 14:25:12 -08001787 return out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07001788 }
Damien Neiladbbc8e2020-01-24 17:01:14 -08001789 var v uint64
1790 var n int
1791 if len(b) >= 1 && b[0] < 0x80 {
1792 v = uint64(b[0])
1793 n = 1
1794 } else if len(b) >= 2 && b[1] < 128 {
1795 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
1796 n = 2
1797 } else {
1798 v, n = wire.ConsumeVarint(b)
1799 }
Damien Neile91877d2019-06-27 10:54:42 -07001800 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08001801 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07001802 }
1803 *p.Int64() = int64(v)
Damien Neilf0831e82020-01-21 14:25:12 -08001804 out.n = n
1805 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -07001806}
1807
Damien Neilc37adef2019-04-01 13:49:56 -07001808var coderInt64 = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07001809 size: sizeInt64,
1810 marshal: appendInt64,
1811 unmarshal: consumeInt64,
Damien Neilc37adef2019-04-01 13:49:56 -07001812}
1813
Joe Tsaic51e2e02019-07-13 00:44:41 -07001814// sizeInt64NoZero returns the size of wire encoding a int64 pointer as a Int64.
Damien Neilc37adef2019-04-01 13:49:56 -07001815// The zero value is not encoded.
Damien Neil316febd2020-02-09 12:26:50 -08001816func sizeInt64NoZero(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07001817 v := *p.Int64()
1818 if v == 0 {
1819 return 0
1820 }
Damien Neil316febd2020-02-09 12:26:50 -08001821 return f.tagsize + wire.SizeVarint(uint64(v))
Damien Neilc37adef2019-04-01 13:49:56 -07001822}
1823
Joe Tsaic51e2e02019-07-13 00:44:41 -07001824// appendInt64NoZero wire encodes a int64 pointer as a Int64.
Damien Neilc37adef2019-04-01 13:49:56 -07001825// The zero value is not encoded.
Damien Neil316febd2020-02-09 12:26:50 -08001826func appendInt64NoZero(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07001827 v := *p.Int64()
1828 if v == 0 {
1829 return b, nil
1830 }
Damien Neil316febd2020-02-09 12:26:50 -08001831 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07001832 b = wire.AppendVarint(b, uint64(v))
1833 return b, nil
1834}
1835
1836var coderInt64NoZero = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07001837 size: sizeInt64NoZero,
1838 marshal: appendInt64NoZero,
1839 unmarshal: consumeInt64,
Damien Neilc37adef2019-04-01 13:49:56 -07001840}
1841
1842// sizeInt64Ptr returns the size of wire encoding a *int64 pointer as a Int64.
1843// It panics if the pointer is nil.
Damien Neil316febd2020-02-09 12:26:50 -08001844func sizeInt64Ptr(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07001845 v := **p.Int64Ptr()
Damien Neil316febd2020-02-09 12:26:50 -08001846 return f.tagsize + wire.SizeVarint(uint64(v))
Damien Neilc37adef2019-04-01 13:49:56 -07001847}
1848
Damien Neile91877d2019-06-27 10:54:42 -07001849// appendInt64Ptr wire encodes a *int64 pointer as a Int64.
Damien Neilc37adef2019-04-01 13:49:56 -07001850// It panics if the pointer is nil.
Damien Neil316febd2020-02-09 12:26:50 -08001851func appendInt64Ptr(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07001852 v := **p.Int64Ptr()
Damien Neil316febd2020-02-09 12:26:50 -08001853 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07001854 b = wire.AppendVarint(b, uint64(v))
1855 return b, nil
1856}
1857
Damien Neile91877d2019-06-27 10:54:42 -07001858// consumeInt64Ptr wire decodes a *int64 pointer as a Int64.
Damien Neil316febd2020-02-09 12:26:50 -08001859func consumeInt64Ptr(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07001860 if wtyp != wire.VarintType {
Damien Neilf0831e82020-01-21 14:25:12 -08001861 return out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07001862 }
Damien Neiladbbc8e2020-01-24 17:01:14 -08001863 var v uint64
1864 var n int
1865 if len(b) >= 1 && b[0] < 0x80 {
1866 v = uint64(b[0])
1867 n = 1
1868 } else if len(b) >= 2 && b[1] < 128 {
1869 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
1870 n = 2
1871 } else {
1872 v, n = wire.ConsumeVarint(b)
1873 }
Damien Neile91877d2019-06-27 10:54:42 -07001874 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08001875 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07001876 }
1877 vp := p.Int64Ptr()
1878 if *vp == nil {
1879 *vp = new(int64)
1880 }
1881 **vp = int64(v)
Damien Neilf0831e82020-01-21 14:25:12 -08001882 out.n = n
1883 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -07001884}
1885
Damien Neilc37adef2019-04-01 13:49:56 -07001886var coderInt64Ptr = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07001887 size: sizeInt64Ptr,
1888 marshal: appendInt64Ptr,
1889 unmarshal: consumeInt64Ptr,
Damien Neilc37adef2019-04-01 13:49:56 -07001890}
1891
1892// sizeInt64Slice returns the size of wire encoding a []int64 pointer as a repeated Int64.
Damien Neil316febd2020-02-09 12:26:50 -08001893func sizeInt64Slice(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07001894 s := *p.Int64Slice()
1895 for _, v := range s {
Damien Neil316febd2020-02-09 12:26:50 -08001896 size += f.tagsize + wire.SizeVarint(uint64(v))
Damien Neilc37adef2019-04-01 13:49:56 -07001897 }
1898 return size
1899}
1900
1901// appendInt64Slice encodes a []int64 pointer as a repeated Int64.
Damien Neil316febd2020-02-09 12:26:50 -08001902func appendInt64Slice(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07001903 s := *p.Int64Slice()
1904 for _, v := range s {
Damien Neil316febd2020-02-09 12:26:50 -08001905 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07001906 b = wire.AppendVarint(b, uint64(v))
1907 }
1908 return b, nil
1909}
1910
Damien Neile91877d2019-06-27 10:54:42 -07001911// consumeInt64Slice wire decodes a []int64 pointer as a repeated Int64.
Damien Neil316febd2020-02-09 12:26:50 -08001912func consumeInt64Slice(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07001913 sp := p.Int64Slice()
1914 if wtyp == wire.BytesType {
1915 s := *sp
Damien Neilf0831e82020-01-21 14:25:12 -08001916 b, n := wire.ConsumeBytes(b)
Damien Neile91877d2019-06-27 10:54:42 -07001917 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08001918 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07001919 }
1920 for len(b) > 0 {
Damien Neiladbbc8e2020-01-24 17:01:14 -08001921 var v uint64
1922 var n int
1923 if len(b) >= 1 && b[0] < 0x80 {
1924 v = uint64(b[0])
1925 n = 1
1926 } else if len(b) >= 2 && b[1] < 128 {
1927 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
1928 n = 2
1929 } else {
1930 v, n = wire.ConsumeVarint(b)
1931 }
Damien Neile91877d2019-06-27 10:54:42 -07001932 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08001933 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07001934 }
1935 s = append(s, int64(v))
1936 b = b[n:]
1937 }
1938 *sp = s
Damien Neilf0831e82020-01-21 14:25:12 -08001939 out.n = n
1940 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -07001941 }
1942 if wtyp != wire.VarintType {
Damien Neilf0831e82020-01-21 14:25:12 -08001943 return out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07001944 }
Damien Neiladbbc8e2020-01-24 17:01:14 -08001945 var v uint64
1946 var n int
1947 if len(b) >= 1 && b[0] < 0x80 {
1948 v = uint64(b[0])
1949 n = 1
1950 } else if len(b) >= 2 && b[1] < 128 {
1951 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
1952 n = 2
1953 } else {
1954 v, n = wire.ConsumeVarint(b)
1955 }
Damien Neile91877d2019-06-27 10:54:42 -07001956 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08001957 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07001958 }
1959 *sp = append(*sp, int64(v))
Damien Neilf0831e82020-01-21 14:25:12 -08001960 out.n = n
1961 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -07001962}
1963
Damien Neilc37adef2019-04-01 13:49:56 -07001964var coderInt64Slice = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07001965 size: sizeInt64Slice,
1966 marshal: appendInt64Slice,
1967 unmarshal: consumeInt64Slice,
Damien Neilc37adef2019-04-01 13:49:56 -07001968}
1969
1970// sizeInt64PackedSlice returns the size of wire encoding a []int64 pointer as a packed repeated Int64.
Damien Neil316febd2020-02-09 12:26:50 -08001971func sizeInt64PackedSlice(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07001972 s := *p.Int64Slice()
1973 if len(s) == 0 {
1974 return 0
1975 }
1976 n := 0
1977 for _, v := range s {
1978 n += wire.SizeVarint(uint64(v))
1979 }
Damien Neil316febd2020-02-09 12:26:50 -08001980 return f.tagsize + wire.SizeBytes(n)
Damien Neilc37adef2019-04-01 13:49:56 -07001981}
1982
1983// appendInt64PackedSlice encodes a []int64 pointer as a packed repeated Int64.
Damien Neil316febd2020-02-09 12:26:50 -08001984func appendInt64PackedSlice(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07001985 s := *p.Int64Slice()
1986 if len(s) == 0 {
1987 return b, nil
1988 }
Damien Neil316febd2020-02-09 12:26:50 -08001989 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07001990 n := 0
1991 for _, v := range s {
1992 n += wire.SizeVarint(uint64(v))
1993 }
1994 b = wire.AppendVarint(b, uint64(n))
1995 for _, v := range s {
1996 b = wire.AppendVarint(b, uint64(v))
1997 }
1998 return b, nil
1999}
2000
2001var coderInt64PackedSlice = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07002002 size: sizeInt64PackedSlice,
2003 marshal: appendInt64PackedSlice,
2004 unmarshal: consumeInt64Slice,
Damien Neilc37adef2019-04-01 13:49:56 -07002005}
2006
Damien Neil68b81c32019-08-22 11:41:32 -07002007// sizeInt64Value returns the size of wire encoding a int64 value as a Int64.
2008func sizeInt64Value(v protoreflect.Value, tagsize int, _ marshalOptions) int {
2009 return tagsize + wire.SizeVarint(uint64(v.Int()))
Damien Neilc37adef2019-04-01 13:49:56 -07002010}
2011
Damien Neil68b81c32019-08-22 11:41:32 -07002012// appendInt64Value encodes a int64 value as a Int64.
2013func appendInt64Value(b []byte, v protoreflect.Value, wiretag uint64, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07002014 b = wire.AppendVarint(b, wiretag)
Damien Neil68b81c32019-08-22 11:41:32 -07002015 b = wire.AppendVarint(b, uint64(v.Int()))
Damien Neilc37adef2019-04-01 13:49:56 -07002016 return b, nil
2017}
2018
Damien Neil68b81c32019-08-22 11:41:32 -07002019// consumeInt64Value decodes a int64 value as a Int64.
Damien Neilf0831e82020-01-21 14:25:12 -08002020func consumeInt64Value(b []byte, _ protoreflect.Value, _ wire.Number, wtyp wire.Type, _ unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07002021 if wtyp != wire.VarintType {
Damien Neilf0831e82020-01-21 14:25:12 -08002022 return protoreflect.Value{}, out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07002023 }
Damien Neiladbbc8e2020-01-24 17:01:14 -08002024 var v uint64
2025 var n int
2026 if len(b) >= 1 && b[0] < 0x80 {
2027 v = uint64(b[0])
2028 n = 1
2029 } else if len(b) >= 2 && b[1] < 128 {
2030 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
2031 n = 2
2032 } else {
2033 v, n = wire.ConsumeVarint(b)
2034 }
Damien Neile91877d2019-06-27 10:54:42 -07002035 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08002036 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07002037 }
Damien Neilf0831e82020-01-21 14:25:12 -08002038 out.n = n
2039 return protoreflect.ValueOfInt64(int64(v)), out, nil
Damien Neile91877d2019-06-27 10:54:42 -07002040}
2041
Damien Neil68b81c32019-08-22 11:41:32 -07002042var coderInt64Value = valueCoderFuncs{
2043 size: sizeInt64Value,
2044 marshal: appendInt64Value,
2045 unmarshal: consumeInt64Value,
Damien Neilc37adef2019-04-01 13:49:56 -07002046}
2047
Damien Neil68b81c32019-08-22 11:41:32 -07002048// sizeInt64SliceValue returns the size of wire encoding a []int64 value as a repeated Int64.
2049func sizeInt64SliceValue(listv protoreflect.Value, tagsize int, _ marshalOptions) (size int) {
2050 list := listv.List()
2051 for i, llen := 0, list.Len(); i < llen; i++ {
2052 v := list.Get(i)
2053 size += tagsize + wire.SizeVarint(uint64(v.Int()))
Damien Neilc37adef2019-04-01 13:49:56 -07002054 }
2055 return size
2056}
2057
Damien Neil68b81c32019-08-22 11:41:32 -07002058// appendInt64SliceValue encodes a []int64 value as a repeated Int64.
2059func appendInt64SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, _ marshalOptions) ([]byte, error) {
2060 list := listv.List()
2061 for i, llen := 0, list.Len(); i < llen; i++ {
2062 v := list.Get(i)
Damien Neilc37adef2019-04-01 13:49:56 -07002063 b = wire.AppendVarint(b, wiretag)
Damien Neil68b81c32019-08-22 11:41:32 -07002064 b = wire.AppendVarint(b, uint64(v.Int()))
Damien Neilc37adef2019-04-01 13:49:56 -07002065 }
2066 return b, nil
2067}
2068
Damien Neil68b81c32019-08-22 11:41:32 -07002069// consumeInt64SliceValue wire decodes a []int64 value as a repeated Int64.
Damien Neilf0831e82020-01-21 14:25:12 -08002070func consumeInt64SliceValue(b []byte, listv protoreflect.Value, _ wire.Number, wtyp wire.Type, _ unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
Damien Neil68b81c32019-08-22 11:41:32 -07002071 list := listv.List()
Damien Neile91877d2019-06-27 10:54:42 -07002072 if wtyp == wire.BytesType {
Damien Neilf0831e82020-01-21 14:25:12 -08002073 b, n := wire.ConsumeBytes(b)
Damien Neile91877d2019-06-27 10:54:42 -07002074 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08002075 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07002076 }
2077 for len(b) > 0 {
Damien Neiladbbc8e2020-01-24 17:01:14 -08002078 var v uint64
2079 var n int
2080 if len(b) >= 1 && b[0] < 0x80 {
2081 v = uint64(b[0])
2082 n = 1
2083 } else if len(b) >= 2 && b[1] < 128 {
2084 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
2085 n = 2
2086 } else {
2087 v, n = wire.ConsumeVarint(b)
2088 }
Damien Neile91877d2019-06-27 10:54:42 -07002089 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08002090 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07002091 }
Damien Neil68b81c32019-08-22 11:41:32 -07002092 list.Append(protoreflect.ValueOfInt64(int64(v)))
Damien Neile91877d2019-06-27 10:54:42 -07002093 b = b[n:]
2094 }
Damien Neilf0831e82020-01-21 14:25:12 -08002095 out.n = n
2096 return listv, out, nil
Damien Neile91877d2019-06-27 10:54:42 -07002097 }
2098 if wtyp != wire.VarintType {
Damien Neilf0831e82020-01-21 14:25:12 -08002099 return protoreflect.Value{}, out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07002100 }
Damien Neiladbbc8e2020-01-24 17:01:14 -08002101 var v uint64
2102 var n int
2103 if len(b) >= 1 && b[0] < 0x80 {
2104 v = uint64(b[0])
2105 n = 1
2106 } else if len(b) >= 2 && b[1] < 128 {
2107 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
2108 n = 2
2109 } else {
2110 v, n = wire.ConsumeVarint(b)
2111 }
Damien Neile91877d2019-06-27 10:54:42 -07002112 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08002113 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07002114 }
Damien Neil68b81c32019-08-22 11:41:32 -07002115 list.Append(protoreflect.ValueOfInt64(int64(v)))
Damien Neilf0831e82020-01-21 14:25:12 -08002116 out.n = n
2117 return listv, out, nil
Damien Neile91877d2019-06-27 10:54:42 -07002118}
2119
Damien Neil68b81c32019-08-22 11:41:32 -07002120var coderInt64SliceValue = valueCoderFuncs{
2121 size: sizeInt64SliceValue,
2122 marshal: appendInt64SliceValue,
2123 unmarshal: consumeInt64SliceValue,
Damien Neilc37adef2019-04-01 13:49:56 -07002124}
2125
Damien Neil68b81c32019-08-22 11:41:32 -07002126// sizeInt64PackedSliceValue returns the size of wire encoding a []int64 value as a packed repeated Int64.
2127func sizeInt64PackedSliceValue(listv protoreflect.Value, tagsize int, _ marshalOptions) (size int) {
2128 list := listv.List()
Damien Neil2c0824b2019-12-20 12:21:25 -08002129 llen := list.Len()
2130 if llen == 0 {
2131 return 0
2132 }
Damien Neil7492a092019-07-10 15:23:29 -07002133 n := 0
Damien Neil2c0824b2019-12-20 12:21:25 -08002134 for i, llen := 0, llen; i < llen; i++ {
Damien Neil68b81c32019-08-22 11:41:32 -07002135 v := list.Get(i)
2136 n += wire.SizeVarint(uint64(v.Int()))
Damien Neil7492a092019-07-10 15:23:29 -07002137 }
2138 return tagsize + wire.SizeBytes(n)
2139}
2140
Damien Neil68b81c32019-08-22 11:41:32 -07002141// appendInt64PackedSliceValue encodes a []int64 value as a packed repeated Int64.
2142func appendInt64PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, _ marshalOptions) ([]byte, error) {
2143 list := listv.List()
2144 llen := list.Len()
2145 if llen == 0 {
Damien Neil7492a092019-07-10 15:23:29 -07002146 return b, nil
2147 }
2148 b = wire.AppendVarint(b, wiretag)
2149 n := 0
Damien Neil68b81c32019-08-22 11:41:32 -07002150 for i := 0; i < llen; i++ {
2151 v := list.Get(i)
2152 n += wire.SizeVarint(uint64(v.Int()))
Damien Neil7492a092019-07-10 15:23:29 -07002153 }
2154 b = wire.AppendVarint(b, uint64(n))
Damien Neil68b81c32019-08-22 11:41:32 -07002155 for i := 0; i < llen; i++ {
2156 v := list.Get(i)
2157 b = wire.AppendVarint(b, uint64(v.Int()))
Damien Neil7492a092019-07-10 15:23:29 -07002158 }
2159 return b, nil
2160}
2161
Damien Neil68b81c32019-08-22 11:41:32 -07002162var coderInt64PackedSliceValue = valueCoderFuncs{
2163 size: sizeInt64PackedSliceValue,
2164 marshal: appendInt64PackedSliceValue,
2165 unmarshal: consumeInt64SliceValue,
Damien Neil7492a092019-07-10 15:23:29 -07002166}
2167
Damien Neilc37adef2019-04-01 13:49:56 -07002168// sizeSint64 returns the size of wire encoding a int64 pointer as a Sint64.
Damien Neil316febd2020-02-09 12:26:50 -08002169func sizeSint64(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07002170 v := *p.Int64()
Damien Neil316febd2020-02-09 12:26:50 -08002171 return f.tagsize + wire.SizeVarint(wire.EncodeZigZag(v))
Damien Neilc37adef2019-04-01 13:49:56 -07002172}
2173
2174// appendSint64 wire encodes a int64 pointer as a Sint64.
Damien Neil316febd2020-02-09 12:26:50 -08002175func appendSint64(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07002176 v := *p.Int64()
Damien Neil316febd2020-02-09 12:26:50 -08002177 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07002178 b = wire.AppendVarint(b, wire.EncodeZigZag(v))
2179 return b, nil
2180}
2181
Damien Neile91877d2019-06-27 10:54:42 -07002182// consumeSint64 wire decodes a int64 pointer as a Sint64.
Damien Neil316febd2020-02-09 12:26:50 -08002183func consumeSint64(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07002184 if wtyp != wire.VarintType {
Damien Neilf0831e82020-01-21 14:25:12 -08002185 return out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07002186 }
Damien Neiladbbc8e2020-01-24 17:01:14 -08002187 var v uint64
2188 var n int
2189 if len(b) >= 1 && b[0] < 0x80 {
2190 v = uint64(b[0])
2191 n = 1
2192 } else if len(b) >= 2 && b[1] < 128 {
2193 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
2194 n = 2
2195 } else {
2196 v, n = wire.ConsumeVarint(b)
2197 }
Damien Neile91877d2019-06-27 10:54:42 -07002198 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08002199 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07002200 }
2201 *p.Int64() = wire.DecodeZigZag(v)
Damien Neilf0831e82020-01-21 14:25:12 -08002202 out.n = n
2203 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -07002204}
2205
Damien Neilc37adef2019-04-01 13:49:56 -07002206var coderSint64 = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07002207 size: sizeSint64,
2208 marshal: appendSint64,
2209 unmarshal: consumeSint64,
Damien Neilc37adef2019-04-01 13:49:56 -07002210}
2211
Joe Tsaic51e2e02019-07-13 00:44:41 -07002212// sizeSint64NoZero returns the size of wire encoding a int64 pointer as a Sint64.
Damien Neilc37adef2019-04-01 13:49:56 -07002213// The zero value is not encoded.
Damien Neil316febd2020-02-09 12:26:50 -08002214func sizeSint64NoZero(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07002215 v := *p.Int64()
2216 if v == 0 {
2217 return 0
2218 }
Damien Neil316febd2020-02-09 12:26:50 -08002219 return f.tagsize + wire.SizeVarint(wire.EncodeZigZag(v))
Damien Neilc37adef2019-04-01 13:49:56 -07002220}
2221
Joe Tsaic51e2e02019-07-13 00:44:41 -07002222// appendSint64NoZero wire encodes a int64 pointer as a Sint64.
Damien Neilc37adef2019-04-01 13:49:56 -07002223// The zero value is not encoded.
Damien Neil316febd2020-02-09 12:26:50 -08002224func appendSint64NoZero(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07002225 v := *p.Int64()
2226 if v == 0 {
2227 return b, nil
2228 }
Damien Neil316febd2020-02-09 12:26:50 -08002229 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07002230 b = wire.AppendVarint(b, wire.EncodeZigZag(v))
2231 return b, nil
2232}
2233
2234var coderSint64NoZero = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07002235 size: sizeSint64NoZero,
2236 marshal: appendSint64NoZero,
2237 unmarshal: consumeSint64,
Damien Neilc37adef2019-04-01 13:49:56 -07002238}
2239
2240// sizeSint64Ptr returns the size of wire encoding a *int64 pointer as a Sint64.
2241// It panics if the pointer is nil.
Damien Neil316febd2020-02-09 12:26:50 -08002242func sizeSint64Ptr(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07002243 v := **p.Int64Ptr()
Damien Neil316febd2020-02-09 12:26:50 -08002244 return f.tagsize + wire.SizeVarint(wire.EncodeZigZag(v))
Damien Neilc37adef2019-04-01 13:49:56 -07002245}
2246
Damien Neile91877d2019-06-27 10:54:42 -07002247// appendSint64Ptr wire encodes a *int64 pointer as a Sint64.
Damien Neilc37adef2019-04-01 13:49:56 -07002248// It panics if the pointer is nil.
Damien Neil316febd2020-02-09 12:26:50 -08002249func appendSint64Ptr(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07002250 v := **p.Int64Ptr()
Damien Neil316febd2020-02-09 12:26:50 -08002251 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07002252 b = wire.AppendVarint(b, wire.EncodeZigZag(v))
2253 return b, nil
2254}
2255
Damien Neile91877d2019-06-27 10:54:42 -07002256// consumeSint64Ptr wire decodes a *int64 pointer as a Sint64.
Damien Neil316febd2020-02-09 12:26:50 -08002257func consumeSint64Ptr(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07002258 if wtyp != wire.VarintType {
Damien Neilf0831e82020-01-21 14:25:12 -08002259 return out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07002260 }
Damien Neiladbbc8e2020-01-24 17:01:14 -08002261 var v uint64
2262 var n int
2263 if len(b) >= 1 && b[0] < 0x80 {
2264 v = uint64(b[0])
2265 n = 1
2266 } else if len(b) >= 2 && b[1] < 128 {
2267 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
2268 n = 2
2269 } else {
2270 v, n = wire.ConsumeVarint(b)
2271 }
Damien Neile91877d2019-06-27 10:54:42 -07002272 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08002273 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07002274 }
2275 vp := p.Int64Ptr()
2276 if *vp == nil {
2277 *vp = new(int64)
2278 }
2279 **vp = wire.DecodeZigZag(v)
Damien Neilf0831e82020-01-21 14:25:12 -08002280 out.n = n
2281 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -07002282}
2283
Damien Neilc37adef2019-04-01 13:49:56 -07002284var coderSint64Ptr = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07002285 size: sizeSint64Ptr,
2286 marshal: appendSint64Ptr,
2287 unmarshal: consumeSint64Ptr,
Damien Neilc37adef2019-04-01 13:49:56 -07002288}
2289
2290// sizeSint64Slice returns the size of wire encoding a []int64 pointer as a repeated Sint64.
Damien Neil316febd2020-02-09 12:26:50 -08002291func sizeSint64Slice(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07002292 s := *p.Int64Slice()
2293 for _, v := range s {
Damien Neil316febd2020-02-09 12:26:50 -08002294 size += f.tagsize + wire.SizeVarint(wire.EncodeZigZag(v))
Damien Neilc37adef2019-04-01 13:49:56 -07002295 }
2296 return size
2297}
2298
2299// appendSint64Slice encodes a []int64 pointer as a repeated Sint64.
Damien Neil316febd2020-02-09 12:26:50 -08002300func appendSint64Slice(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07002301 s := *p.Int64Slice()
2302 for _, v := range s {
Damien Neil316febd2020-02-09 12:26:50 -08002303 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07002304 b = wire.AppendVarint(b, wire.EncodeZigZag(v))
2305 }
2306 return b, nil
2307}
2308
Damien Neile91877d2019-06-27 10:54:42 -07002309// consumeSint64Slice wire decodes a []int64 pointer as a repeated Sint64.
Damien Neil316febd2020-02-09 12:26:50 -08002310func consumeSint64Slice(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07002311 sp := p.Int64Slice()
2312 if wtyp == wire.BytesType {
2313 s := *sp
Damien Neilf0831e82020-01-21 14:25:12 -08002314 b, n := wire.ConsumeBytes(b)
Damien Neile91877d2019-06-27 10:54:42 -07002315 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08002316 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07002317 }
2318 for len(b) > 0 {
Damien Neiladbbc8e2020-01-24 17:01:14 -08002319 var v uint64
2320 var n int
2321 if len(b) >= 1 && b[0] < 0x80 {
2322 v = uint64(b[0])
2323 n = 1
2324 } else if len(b) >= 2 && b[1] < 128 {
2325 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
2326 n = 2
2327 } else {
2328 v, n = wire.ConsumeVarint(b)
2329 }
Damien Neile91877d2019-06-27 10:54:42 -07002330 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08002331 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07002332 }
2333 s = append(s, wire.DecodeZigZag(v))
2334 b = b[n:]
2335 }
2336 *sp = s
Damien Neilf0831e82020-01-21 14:25:12 -08002337 out.n = n
2338 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -07002339 }
2340 if wtyp != wire.VarintType {
Damien Neilf0831e82020-01-21 14:25:12 -08002341 return out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07002342 }
Damien Neiladbbc8e2020-01-24 17:01:14 -08002343 var v uint64
2344 var n int
2345 if len(b) >= 1 && b[0] < 0x80 {
2346 v = uint64(b[0])
2347 n = 1
2348 } else if len(b) >= 2 && b[1] < 128 {
2349 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
2350 n = 2
2351 } else {
2352 v, n = wire.ConsumeVarint(b)
2353 }
Damien Neile91877d2019-06-27 10:54:42 -07002354 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08002355 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07002356 }
2357 *sp = append(*sp, wire.DecodeZigZag(v))
Damien Neilf0831e82020-01-21 14:25:12 -08002358 out.n = n
2359 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -07002360}
2361
Damien Neilc37adef2019-04-01 13:49:56 -07002362var coderSint64Slice = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07002363 size: sizeSint64Slice,
2364 marshal: appendSint64Slice,
2365 unmarshal: consumeSint64Slice,
Damien Neilc37adef2019-04-01 13:49:56 -07002366}
2367
2368// sizeSint64PackedSlice returns the size of wire encoding a []int64 pointer as a packed repeated Sint64.
Damien Neil316febd2020-02-09 12:26:50 -08002369func sizeSint64PackedSlice(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07002370 s := *p.Int64Slice()
2371 if len(s) == 0 {
2372 return 0
2373 }
2374 n := 0
2375 for _, v := range s {
2376 n += wire.SizeVarint(wire.EncodeZigZag(v))
2377 }
Damien Neil316febd2020-02-09 12:26:50 -08002378 return f.tagsize + wire.SizeBytes(n)
Damien Neilc37adef2019-04-01 13:49:56 -07002379}
2380
2381// appendSint64PackedSlice encodes a []int64 pointer as a packed repeated Sint64.
Damien Neil316febd2020-02-09 12:26:50 -08002382func appendSint64PackedSlice(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07002383 s := *p.Int64Slice()
2384 if len(s) == 0 {
2385 return b, nil
2386 }
Damien Neil316febd2020-02-09 12:26:50 -08002387 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07002388 n := 0
2389 for _, v := range s {
2390 n += wire.SizeVarint(wire.EncodeZigZag(v))
2391 }
2392 b = wire.AppendVarint(b, uint64(n))
2393 for _, v := range s {
2394 b = wire.AppendVarint(b, wire.EncodeZigZag(v))
2395 }
2396 return b, nil
2397}
2398
2399var coderSint64PackedSlice = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07002400 size: sizeSint64PackedSlice,
2401 marshal: appendSint64PackedSlice,
2402 unmarshal: consumeSint64Slice,
Damien Neilc37adef2019-04-01 13:49:56 -07002403}
2404
Damien Neil68b81c32019-08-22 11:41:32 -07002405// sizeSint64Value returns the size of wire encoding a int64 value as a Sint64.
2406func sizeSint64Value(v protoreflect.Value, tagsize int, _ marshalOptions) int {
2407 return tagsize + wire.SizeVarint(wire.EncodeZigZag(v.Int()))
Damien Neilc37adef2019-04-01 13:49:56 -07002408}
2409
Damien Neil68b81c32019-08-22 11:41:32 -07002410// appendSint64Value encodes a int64 value as a Sint64.
2411func appendSint64Value(b []byte, v protoreflect.Value, wiretag uint64, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07002412 b = wire.AppendVarint(b, wiretag)
Damien Neil68b81c32019-08-22 11:41:32 -07002413 b = wire.AppendVarint(b, wire.EncodeZigZag(v.Int()))
Damien Neilc37adef2019-04-01 13:49:56 -07002414 return b, nil
2415}
2416
Damien Neil68b81c32019-08-22 11:41:32 -07002417// consumeSint64Value decodes a int64 value as a Sint64.
Damien Neilf0831e82020-01-21 14:25:12 -08002418func consumeSint64Value(b []byte, _ protoreflect.Value, _ wire.Number, wtyp wire.Type, _ unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07002419 if wtyp != wire.VarintType {
Damien Neilf0831e82020-01-21 14:25:12 -08002420 return protoreflect.Value{}, out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07002421 }
Damien Neiladbbc8e2020-01-24 17:01:14 -08002422 var v uint64
2423 var n int
2424 if len(b) >= 1 && b[0] < 0x80 {
2425 v = uint64(b[0])
2426 n = 1
2427 } else if len(b) >= 2 && b[1] < 128 {
2428 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
2429 n = 2
2430 } else {
2431 v, n = wire.ConsumeVarint(b)
2432 }
Damien Neile91877d2019-06-27 10:54:42 -07002433 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08002434 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07002435 }
Damien Neilf0831e82020-01-21 14:25:12 -08002436 out.n = n
2437 return protoreflect.ValueOfInt64(wire.DecodeZigZag(v)), out, nil
Damien Neile91877d2019-06-27 10:54:42 -07002438}
2439
Damien Neil68b81c32019-08-22 11:41:32 -07002440var coderSint64Value = valueCoderFuncs{
2441 size: sizeSint64Value,
2442 marshal: appendSint64Value,
2443 unmarshal: consumeSint64Value,
Damien Neilc37adef2019-04-01 13:49:56 -07002444}
2445
Damien Neil68b81c32019-08-22 11:41:32 -07002446// sizeSint64SliceValue returns the size of wire encoding a []int64 value as a repeated Sint64.
2447func sizeSint64SliceValue(listv protoreflect.Value, tagsize int, _ marshalOptions) (size int) {
2448 list := listv.List()
2449 for i, llen := 0, list.Len(); i < llen; i++ {
2450 v := list.Get(i)
2451 size += tagsize + wire.SizeVarint(wire.EncodeZigZag(v.Int()))
Damien Neilc37adef2019-04-01 13:49:56 -07002452 }
2453 return size
2454}
2455
Damien Neil68b81c32019-08-22 11:41:32 -07002456// appendSint64SliceValue encodes a []int64 value as a repeated Sint64.
2457func appendSint64SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, _ marshalOptions) ([]byte, error) {
2458 list := listv.List()
2459 for i, llen := 0, list.Len(); i < llen; i++ {
2460 v := list.Get(i)
Damien Neilc37adef2019-04-01 13:49:56 -07002461 b = wire.AppendVarint(b, wiretag)
Damien Neil68b81c32019-08-22 11:41:32 -07002462 b = wire.AppendVarint(b, wire.EncodeZigZag(v.Int()))
Damien Neilc37adef2019-04-01 13:49:56 -07002463 }
2464 return b, nil
2465}
2466
Damien Neil68b81c32019-08-22 11:41:32 -07002467// consumeSint64SliceValue wire decodes a []int64 value as a repeated Sint64.
Damien Neilf0831e82020-01-21 14:25:12 -08002468func consumeSint64SliceValue(b []byte, listv protoreflect.Value, _ wire.Number, wtyp wire.Type, _ unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
Damien Neil68b81c32019-08-22 11:41:32 -07002469 list := listv.List()
Damien Neile91877d2019-06-27 10:54:42 -07002470 if wtyp == wire.BytesType {
Damien Neilf0831e82020-01-21 14:25:12 -08002471 b, n := wire.ConsumeBytes(b)
Damien Neile91877d2019-06-27 10:54:42 -07002472 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08002473 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07002474 }
2475 for len(b) > 0 {
Damien Neiladbbc8e2020-01-24 17:01:14 -08002476 var v uint64
2477 var n int
2478 if len(b) >= 1 && b[0] < 0x80 {
2479 v = uint64(b[0])
2480 n = 1
2481 } else if len(b) >= 2 && b[1] < 128 {
2482 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
2483 n = 2
2484 } else {
2485 v, n = wire.ConsumeVarint(b)
2486 }
Damien Neile91877d2019-06-27 10:54:42 -07002487 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08002488 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07002489 }
Damien Neil68b81c32019-08-22 11:41:32 -07002490 list.Append(protoreflect.ValueOfInt64(wire.DecodeZigZag(v)))
Damien Neile91877d2019-06-27 10:54:42 -07002491 b = b[n:]
2492 }
Damien Neilf0831e82020-01-21 14:25:12 -08002493 out.n = n
2494 return listv, out, nil
Damien Neile91877d2019-06-27 10:54:42 -07002495 }
2496 if wtyp != wire.VarintType {
Damien Neilf0831e82020-01-21 14:25:12 -08002497 return protoreflect.Value{}, out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07002498 }
Damien Neiladbbc8e2020-01-24 17:01:14 -08002499 var v uint64
2500 var n int
2501 if len(b) >= 1 && b[0] < 0x80 {
2502 v = uint64(b[0])
2503 n = 1
2504 } else if len(b) >= 2 && b[1] < 128 {
2505 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
2506 n = 2
2507 } else {
2508 v, n = wire.ConsumeVarint(b)
2509 }
Damien Neile91877d2019-06-27 10:54:42 -07002510 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08002511 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07002512 }
Damien Neil68b81c32019-08-22 11:41:32 -07002513 list.Append(protoreflect.ValueOfInt64(wire.DecodeZigZag(v)))
Damien Neilf0831e82020-01-21 14:25:12 -08002514 out.n = n
2515 return listv, out, nil
Damien Neile91877d2019-06-27 10:54:42 -07002516}
2517
Damien Neil68b81c32019-08-22 11:41:32 -07002518var coderSint64SliceValue = valueCoderFuncs{
2519 size: sizeSint64SliceValue,
2520 marshal: appendSint64SliceValue,
2521 unmarshal: consumeSint64SliceValue,
Damien Neilc37adef2019-04-01 13:49:56 -07002522}
2523
Damien Neil68b81c32019-08-22 11:41:32 -07002524// sizeSint64PackedSliceValue returns the size of wire encoding a []int64 value as a packed repeated Sint64.
2525func sizeSint64PackedSliceValue(listv protoreflect.Value, tagsize int, _ marshalOptions) (size int) {
2526 list := listv.List()
Damien Neil2c0824b2019-12-20 12:21:25 -08002527 llen := list.Len()
2528 if llen == 0 {
2529 return 0
2530 }
Damien Neil7492a092019-07-10 15:23:29 -07002531 n := 0
Damien Neil2c0824b2019-12-20 12:21:25 -08002532 for i, llen := 0, llen; i < llen; i++ {
Damien Neil68b81c32019-08-22 11:41:32 -07002533 v := list.Get(i)
2534 n += wire.SizeVarint(wire.EncodeZigZag(v.Int()))
Damien Neil7492a092019-07-10 15:23:29 -07002535 }
2536 return tagsize + wire.SizeBytes(n)
2537}
2538
Damien Neil68b81c32019-08-22 11:41:32 -07002539// appendSint64PackedSliceValue encodes a []int64 value as a packed repeated Sint64.
2540func appendSint64PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, _ marshalOptions) ([]byte, error) {
2541 list := listv.List()
2542 llen := list.Len()
2543 if llen == 0 {
Damien Neil7492a092019-07-10 15:23:29 -07002544 return b, nil
2545 }
2546 b = wire.AppendVarint(b, wiretag)
2547 n := 0
Damien Neil68b81c32019-08-22 11:41:32 -07002548 for i := 0; i < llen; i++ {
2549 v := list.Get(i)
2550 n += wire.SizeVarint(wire.EncodeZigZag(v.Int()))
Damien Neil7492a092019-07-10 15:23:29 -07002551 }
2552 b = wire.AppendVarint(b, uint64(n))
Damien Neil68b81c32019-08-22 11:41:32 -07002553 for i := 0; i < llen; i++ {
2554 v := list.Get(i)
2555 b = wire.AppendVarint(b, wire.EncodeZigZag(v.Int()))
Damien Neil7492a092019-07-10 15:23:29 -07002556 }
2557 return b, nil
2558}
2559
Damien Neil68b81c32019-08-22 11:41:32 -07002560var coderSint64PackedSliceValue = valueCoderFuncs{
2561 size: sizeSint64PackedSliceValue,
2562 marshal: appendSint64PackedSliceValue,
2563 unmarshal: consumeSint64SliceValue,
Damien Neil7492a092019-07-10 15:23:29 -07002564}
2565
Damien Neilc37adef2019-04-01 13:49:56 -07002566// sizeUint64 returns the size of wire encoding a uint64 pointer as a Uint64.
Damien Neil316febd2020-02-09 12:26:50 -08002567func sizeUint64(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07002568 v := *p.Uint64()
Damien Neil316febd2020-02-09 12:26:50 -08002569 return f.tagsize + wire.SizeVarint(v)
Damien Neilc37adef2019-04-01 13:49:56 -07002570}
2571
2572// appendUint64 wire encodes a uint64 pointer as a Uint64.
Damien Neil316febd2020-02-09 12:26:50 -08002573func appendUint64(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07002574 v := *p.Uint64()
Damien Neil316febd2020-02-09 12:26:50 -08002575 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07002576 b = wire.AppendVarint(b, v)
2577 return b, nil
2578}
2579
Damien Neile91877d2019-06-27 10:54:42 -07002580// consumeUint64 wire decodes a uint64 pointer as a Uint64.
Damien Neil316febd2020-02-09 12:26:50 -08002581func consumeUint64(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07002582 if wtyp != wire.VarintType {
Damien Neilf0831e82020-01-21 14:25:12 -08002583 return out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07002584 }
Damien Neiladbbc8e2020-01-24 17:01:14 -08002585 var v uint64
2586 var n int
2587 if len(b) >= 1 && b[0] < 0x80 {
2588 v = uint64(b[0])
2589 n = 1
2590 } else if len(b) >= 2 && b[1] < 128 {
2591 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
2592 n = 2
2593 } else {
2594 v, n = wire.ConsumeVarint(b)
2595 }
Damien Neile91877d2019-06-27 10:54:42 -07002596 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08002597 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07002598 }
2599 *p.Uint64() = v
Damien Neilf0831e82020-01-21 14:25:12 -08002600 out.n = n
2601 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -07002602}
2603
Damien Neilc37adef2019-04-01 13:49:56 -07002604var coderUint64 = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07002605 size: sizeUint64,
2606 marshal: appendUint64,
2607 unmarshal: consumeUint64,
Damien Neilc37adef2019-04-01 13:49:56 -07002608}
2609
Joe Tsaic51e2e02019-07-13 00:44:41 -07002610// sizeUint64NoZero returns the size of wire encoding a uint64 pointer as a Uint64.
Damien Neilc37adef2019-04-01 13:49:56 -07002611// The zero value is not encoded.
Damien Neil316febd2020-02-09 12:26:50 -08002612func sizeUint64NoZero(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07002613 v := *p.Uint64()
2614 if v == 0 {
2615 return 0
2616 }
Damien Neil316febd2020-02-09 12:26:50 -08002617 return f.tagsize + wire.SizeVarint(v)
Damien Neilc37adef2019-04-01 13:49:56 -07002618}
2619
Joe Tsaic51e2e02019-07-13 00:44:41 -07002620// appendUint64NoZero wire encodes a uint64 pointer as a Uint64.
Damien Neilc37adef2019-04-01 13:49:56 -07002621// The zero value is not encoded.
Damien Neil316febd2020-02-09 12:26:50 -08002622func appendUint64NoZero(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07002623 v := *p.Uint64()
2624 if v == 0 {
2625 return b, nil
2626 }
Damien Neil316febd2020-02-09 12:26:50 -08002627 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07002628 b = wire.AppendVarint(b, v)
2629 return b, nil
2630}
2631
2632var coderUint64NoZero = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07002633 size: sizeUint64NoZero,
2634 marshal: appendUint64NoZero,
2635 unmarshal: consumeUint64,
Damien Neilc37adef2019-04-01 13:49:56 -07002636}
2637
2638// sizeUint64Ptr returns the size of wire encoding a *uint64 pointer as a Uint64.
2639// It panics if the pointer is nil.
Damien Neil316febd2020-02-09 12:26:50 -08002640func sizeUint64Ptr(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07002641 v := **p.Uint64Ptr()
Damien Neil316febd2020-02-09 12:26:50 -08002642 return f.tagsize + wire.SizeVarint(v)
Damien Neilc37adef2019-04-01 13:49:56 -07002643}
2644
Damien Neile91877d2019-06-27 10:54:42 -07002645// appendUint64Ptr wire encodes a *uint64 pointer as a Uint64.
Damien Neilc37adef2019-04-01 13:49:56 -07002646// It panics if the pointer is nil.
Damien Neil316febd2020-02-09 12:26:50 -08002647func appendUint64Ptr(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07002648 v := **p.Uint64Ptr()
Damien Neil316febd2020-02-09 12:26:50 -08002649 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07002650 b = wire.AppendVarint(b, v)
2651 return b, nil
2652}
2653
Damien Neile91877d2019-06-27 10:54:42 -07002654// consumeUint64Ptr wire decodes a *uint64 pointer as a Uint64.
Damien Neil316febd2020-02-09 12:26:50 -08002655func consumeUint64Ptr(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07002656 if wtyp != wire.VarintType {
Damien Neilf0831e82020-01-21 14:25:12 -08002657 return out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07002658 }
Damien Neiladbbc8e2020-01-24 17:01:14 -08002659 var v uint64
2660 var n int
2661 if len(b) >= 1 && b[0] < 0x80 {
2662 v = uint64(b[0])
2663 n = 1
2664 } else if len(b) >= 2 && b[1] < 128 {
2665 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
2666 n = 2
2667 } else {
2668 v, n = wire.ConsumeVarint(b)
2669 }
Damien Neile91877d2019-06-27 10:54:42 -07002670 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08002671 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07002672 }
2673 vp := p.Uint64Ptr()
2674 if *vp == nil {
2675 *vp = new(uint64)
2676 }
2677 **vp = v
Damien Neilf0831e82020-01-21 14:25:12 -08002678 out.n = n
2679 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -07002680}
2681
Damien Neilc37adef2019-04-01 13:49:56 -07002682var coderUint64Ptr = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07002683 size: sizeUint64Ptr,
2684 marshal: appendUint64Ptr,
2685 unmarshal: consumeUint64Ptr,
Damien Neilc37adef2019-04-01 13:49:56 -07002686}
2687
2688// sizeUint64Slice returns the size of wire encoding a []uint64 pointer as a repeated Uint64.
Damien Neil316febd2020-02-09 12:26:50 -08002689func sizeUint64Slice(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07002690 s := *p.Uint64Slice()
2691 for _, v := range s {
Damien Neil316febd2020-02-09 12:26:50 -08002692 size += f.tagsize + wire.SizeVarint(v)
Damien Neilc37adef2019-04-01 13:49:56 -07002693 }
2694 return size
2695}
2696
2697// appendUint64Slice encodes a []uint64 pointer as a repeated Uint64.
Damien Neil316febd2020-02-09 12:26:50 -08002698func appendUint64Slice(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07002699 s := *p.Uint64Slice()
2700 for _, v := range s {
Damien Neil316febd2020-02-09 12:26:50 -08002701 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07002702 b = wire.AppendVarint(b, v)
2703 }
2704 return b, nil
2705}
2706
Damien Neile91877d2019-06-27 10:54:42 -07002707// consumeUint64Slice wire decodes a []uint64 pointer as a repeated Uint64.
Damien Neil316febd2020-02-09 12:26:50 -08002708func consumeUint64Slice(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07002709 sp := p.Uint64Slice()
2710 if wtyp == wire.BytesType {
2711 s := *sp
Damien Neilf0831e82020-01-21 14:25:12 -08002712 b, n := wire.ConsumeBytes(b)
Damien Neile91877d2019-06-27 10:54:42 -07002713 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08002714 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07002715 }
2716 for len(b) > 0 {
Damien Neiladbbc8e2020-01-24 17:01:14 -08002717 var v uint64
2718 var n int
2719 if len(b) >= 1 && b[0] < 0x80 {
2720 v = uint64(b[0])
2721 n = 1
2722 } else if len(b) >= 2 && b[1] < 128 {
2723 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
2724 n = 2
2725 } else {
2726 v, n = wire.ConsumeVarint(b)
2727 }
Damien Neile91877d2019-06-27 10:54:42 -07002728 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08002729 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07002730 }
2731 s = append(s, v)
2732 b = b[n:]
2733 }
2734 *sp = s
Damien Neilf0831e82020-01-21 14:25:12 -08002735 out.n = n
2736 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -07002737 }
2738 if wtyp != wire.VarintType {
Damien Neilf0831e82020-01-21 14:25:12 -08002739 return out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07002740 }
Damien Neiladbbc8e2020-01-24 17:01:14 -08002741 var v uint64
2742 var n int
2743 if len(b) >= 1 && b[0] < 0x80 {
2744 v = uint64(b[0])
2745 n = 1
2746 } else if len(b) >= 2 && b[1] < 128 {
2747 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
2748 n = 2
2749 } else {
2750 v, n = wire.ConsumeVarint(b)
2751 }
Damien Neile91877d2019-06-27 10:54:42 -07002752 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08002753 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07002754 }
2755 *sp = append(*sp, v)
Damien Neilf0831e82020-01-21 14:25:12 -08002756 out.n = n
2757 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -07002758}
2759
Damien Neilc37adef2019-04-01 13:49:56 -07002760var coderUint64Slice = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07002761 size: sizeUint64Slice,
2762 marshal: appendUint64Slice,
2763 unmarshal: consumeUint64Slice,
Damien Neilc37adef2019-04-01 13:49:56 -07002764}
2765
2766// sizeUint64PackedSlice returns the size of wire encoding a []uint64 pointer as a packed repeated Uint64.
Damien Neil316febd2020-02-09 12:26:50 -08002767func sizeUint64PackedSlice(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07002768 s := *p.Uint64Slice()
2769 if len(s) == 0 {
2770 return 0
2771 }
2772 n := 0
2773 for _, v := range s {
2774 n += wire.SizeVarint(v)
2775 }
Damien Neil316febd2020-02-09 12:26:50 -08002776 return f.tagsize + wire.SizeBytes(n)
Damien Neilc37adef2019-04-01 13:49:56 -07002777}
2778
2779// appendUint64PackedSlice encodes a []uint64 pointer as a packed repeated Uint64.
Damien Neil316febd2020-02-09 12:26:50 -08002780func appendUint64PackedSlice(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07002781 s := *p.Uint64Slice()
2782 if len(s) == 0 {
2783 return b, nil
2784 }
Damien Neil316febd2020-02-09 12:26:50 -08002785 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07002786 n := 0
2787 for _, v := range s {
2788 n += wire.SizeVarint(v)
2789 }
2790 b = wire.AppendVarint(b, uint64(n))
2791 for _, v := range s {
2792 b = wire.AppendVarint(b, v)
2793 }
2794 return b, nil
2795}
2796
2797var coderUint64PackedSlice = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07002798 size: sizeUint64PackedSlice,
2799 marshal: appendUint64PackedSlice,
2800 unmarshal: consumeUint64Slice,
Damien Neilc37adef2019-04-01 13:49:56 -07002801}
2802
Damien Neil68b81c32019-08-22 11:41:32 -07002803// sizeUint64Value returns the size of wire encoding a uint64 value as a Uint64.
2804func sizeUint64Value(v protoreflect.Value, tagsize int, _ marshalOptions) int {
2805 return tagsize + wire.SizeVarint(v.Uint())
Damien Neilc37adef2019-04-01 13:49:56 -07002806}
2807
Damien Neil68b81c32019-08-22 11:41:32 -07002808// appendUint64Value encodes a uint64 value as a Uint64.
2809func appendUint64Value(b []byte, v protoreflect.Value, wiretag uint64, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07002810 b = wire.AppendVarint(b, wiretag)
Damien Neil68b81c32019-08-22 11:41:32 -07002811 b = wire.AppendVarint(b, v.Uint())
Damien Neilc37adef2019-04-01 13:49:56 -07002812 return b, nil
2813}
2814
Damien Neil68b81c32019-08-22 11:41:32 -07002815// consumeUint64Value decodes a uint64 value as a Uint64.
Damien Neilf0831e82020-01-21 14:25:12 -08002816func consumeUint64Value(b []byte, _ protoreflect.Value, _ wire.Number, wtyp wire.Type, _ unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07002817 if wtyp != wire.VarintType {
Damien Neilf0831e82020-01-21 14:25:12 -08002818 return protoreflect.Value{}, out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07002819 }
Damien Neiladbbc8e2020-01-24 17:01:14 -08002820 var v uint64
2821 var n int
2822 if len(b) >= 1 && b[0] < 0x80 {
2823 v = uint64(b[0])
2824 n = 1
2825 } else if len(b) >= 2 && b[1] < 128 {
2826 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
2827 n = 2
2828 } else {
2829 v, n = wire.ConsumeVarint(b)
2830 }
Damien Neile91877d2019-06-27 10:54:42 -07002831 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08002832 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07002833 }
Damien Neilf0831e82020-01-21 14:25:12 -08002834 out.n = n
2835 return protoreflect.ValueOfUint64(v), out, nil
Damien Neile91877d2019-06-27 10:54:42 -07002836}
2837
Damien Neil68b81c32019-08-22 11:41:32 -07002838var coderUint64Value = valueCoderFuncs{
2839 size: sizeUint64Value,
2840 marshal: appendUint64Value,
2841 unmarshal: consumeUint64Value,
Damien Neilc37adef2019-04-01 13:49:56 -07002842}
2843
Damien Neil68b81c32019-08-22 11:41:32 -07002844// sizeUint64SliceValue returns the size of wire encoding a []uint64 value as a repeated Uint64.
2845func sizeUint64SliceValue(listv protoreflect.Value, tagsize int, _ marshalOptions) (size int) {
2846 list := listv.List()
2847 for i, llen := 0, list.Len(); i < llen; i++ {
2848 v := list.Get(i)
2849 size += tagsize + wire.SizeVarint(v.Uint())
Damien Neilc37adef2019-04-01 13:49:56 -07002850 }
2851 return size
2852}
2853
Damien Neil68b81c32019-08-22 11:41:32 -07002854// appendUint64SliceValue encodes a []uint64 value as a repeated Uint64.
2855func appendUint64SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, _ marshalOptions) ([]byte, error) {
2856 list := listv.List()
2857 for i, llen := 0, list.Len(); i < llen; i++ {
2858 v := list.Get(i)
Damien Neilc37adef2019-04-01 13:49:56 -07002859 b = wire.AppendVarint(b, wiretag)
Damien Neil68b81c32019-08-22 11:41:32 -07002860 b = wire.AppendVarint(b, v.Uint())
Damien Neilc37adef2019-04-01 13:49:56 -07002861 }
2862 return b, nil
2863}
2864
Damien Neil68b81c32019-08-22 11:41:32 -07002865// consumeUint64SliceValue wire decodes a []uint64 value as a repeated Uint64.
Damien Neilf0831e82020-01-21 14:25:12 -08002866func consumeUint64SliceValue(b []byte, listv protoreflect.Value, _ wire.Number, wtyp wire.Type, _ unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
Damien Neil68b81c32019-08-22 11:41:32 -07002867 list := listv.List()
Damien Neile91877d2019-06-27 10:54:42 -07002868 if wtyp == wire.BytesType {
Damien Neilf0831e82020-01-21 14:25:12 -08002869 b, n := wire.ConsumeBytes(b)
Damien Neile91877d2019-06-27 10:54:42 -07002870 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08002871 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07002872 }
2873 for len(b) > 0 {
Damien Neiladbbc8e2020-01-24 17:01:14 -08002874 var v uint64
2875 var n int
2876 if len(b) >= 1 && b[0] < 0x80 {
2877 v = uint64(b[0])
2878 n = 1
2879 } else if len(b) >= 2 && b[1] < 128 {
2880 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
2881 n = 2
2882 } else {
2883 v, n = wire.ConsumeVarint(b)
2884 }
Damien Neile91877d2019-06-27 10:54:42 -07002885 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08002886 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07002887 }
Damien Neil68b81c32019-08-22 11:41:32 -07002888 list.Append(protoreflect.ValueOfUint64(v))
Damien Neile91877d2019-06-27 10:54:42 -07002889 b = b[n:]
2890 }
Damien Neilf0831e82020-01-21 14:25:12 -08002891 out.n = n
2892 return listv, out, nil
Damien Neile91877d2019-06-27 10:54:42 -07002893 }
2894 if wtyp != wire.VarintType {
Damien Neilf0831e82020-01-21 14:25:12 -08002895 return protoreflect.Value{}, out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07002896 }
Damien Neiladbbc8e2020-01-24 17:01:14 -08002897 var v uint64
2898 var n int
2899 if len(b) >= 1 && b[0] < 0x80 {
2900 v = uint64(b[0])
2901 n = 1
2902 } else if len(b) >= 2 && b[1] < 128 {
2903 v = uint64(b[0]&0x7f) + uint64(b[1])<<7
2904 n = 2
2905 } else {
2906 v, n = wire.ConsumeVarint(b)
2907 }
Damien Neile91877d2019-06-27 10:54:42 -07002908 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08002909 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07002910 }
Damien Neil68b81c32019-08-22 11:41:32 -07002911 list.Append(protoreflect.ValueOfUint64(v))
Damien Neilf0831e82020-01-21 14:25:12 -08002912 out.n = n
2913 return listv, out, nil
Damien Neile91877d2019-06-27 10:54:42 -07002914}
2915
Damien Neil68b81c32019-08-22 11:41:32 -07002916var coderUint64SliceValue = valueCoderFuncs{
2917 size: sizeUint64SliceValue,
2918 marshal: appendUint64SliceValue,
2919 unmarshal: consumeUint64SliceValue,
Damien Neilc37adef2019-04-01 13:49:56 -07002920}
2921
Damien Neil68b81c32019-08-22 11:41:32 -07002922// sizeUint64PackedSliceValue returns the size of wire encoding a []uint64 value as a packed repeated Uint64.
2923func sizeUint64PackedSliceValue(listv protoreflect.Value, tagsize int, _ marshalOptions) (size int) {
2924 list := listv.List()
Damien Neil2c0824b2019-12-20 12:21:25 -08002925 llen := list.Len()
2926 if llen == 0 {
2927 return 0
2928 }
Damien Neil7492a092019-07-10 15:23:29 -07002929 n := 0
Damien Neil2c0824b2019-12-20 12:21:25 -08002930 for i, llen := 0, llen; i < llen; i++ {
Damien Neil68b81c32019-08-22 11:41:32 -07002931 v := list.Get(i)
2932 n += wire.SizeVarint(v.Uint())
Damien Neil7492a092019-07-10 15:23:29 -07002933 }
2934 return tagsize + wire.SizeBytes(n)
2935}
2936
Damien Neil68b81c32019-08-22 11:41:32 -07002937// appendUint64PackedSliceValue encodes a []uint64 value as a packed repeated Uint64.
2938func appendUint64PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, _ marshalOptions) ([]byte, error) {
2939 list := listv.List()
2940 llen := list.Len()
2941 if llen == 0 {
Damien Neil7492a092019-07-10 15:23:29 -07002942 return b, nil
2943 }
2944 b = wire.AppendVarint(b, wiretag)
2945 n := 0
Damien Neil68b81c32019-08-22 11:41:32 -07002946 for i := 0; i < llen; i++ {
2947 v := list.Get(i)
2948 n += wire.SizeVarint(v.Uint())
Damien Neil7492a092019-07-10 15:23:29 -07002949 }
2950 b = wire.AppendVarint(b, uint64(n))
Damien Neil68b81c32019-08-22 11:41:32 -07002951 for i := 0; i < llen; i++ {
2952 v := list.Get(i)
2953 b = wire.AppendVarint(b, v.Uint())
Damien Neil7492a092019-07-10 15:23:29 -07002954 }
2955 return b, nil
2956}
2957
Damien Neil68b81c32019-08-22 11:41:32 -07002958var coderUint64PackedSliceValue = valueCoderFuncs{
2959 size: sizeUint64PackedSliceValue,
2960 marshal: appendUint64PackedSliceValue,
2961 unmarshal: consumeUint64SliceValue,
Damien Neil7492a092019-07-10 15:23:29 -07002962}
2963
Damien Neilc37adef2019-04-01 13:49:56 -07002964// sizeSfixed32 returns the size of wire encoding a int32 pointer as a Sfixed32.
Damien Neil316febd2020-02-09 12:26:50 -08002965func sizeSfixed32(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07002966
Damien Neil316febd2020-02-09 12:26:50 -08002967 return f.tagsize + wire.SizeFixed32()
Damien Neilc37adef2019-04-01 13:49:56 -07002968}
2969
2970// appendSfixed32 wire encodes a int32 pointer as a Sfixed32.
Damien Neil316febd2020-02-09 12:26:50 -08002971func appendSfixed32(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07002972 v := *p.Int32()
Damien Neil316febd2020-02-09 12:26:50 -08002973 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07002974 b = wire.AppendFixed32(b, uint32(v))
2975 return b, nil
2976}
2977
Damien Neile91877d2019-06-27 10:54:42 -07002978// consumeSfixed32 wire decodes a int32 pointer as a Sfixed32.
Damien Neil316febd2020-02-09 12:26:50 -08002979func consumeSfixed32(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07002980 if wtyp != wire.Fixed32Type {
Damien Neilf0831e82020-01-21 14:25:12 -08002981 return out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07002982 }
2983 v, n := wire.ConsumeFixed32(b)
2984 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08002985 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07002986 }
2987 *p.Int32() = int32(v)
Damien Neilf0831e82020-01-21 14:25:12 -08002988 out.n = n
2989 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -07002990}
2991
Damien Neilc37adef2019-04-01 13:49:56 -07002992var coderSfixed32 = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07002993 size: sizeSfixed32,
2994 marshal: appendSfixed32,
2995 unmarshal: consumeSfixed32,
Damien Neilc37adef2019-04-01 13:49:56 -07002996}
2997
Joe Tsaic51e2e02019-07-13 00:44:41 -07002998// sizeSfixed32NoZero returns the size of wire encoding a int32 pointer as a Sfixed32.
Damien Neilc37adef2019-04-01 13:49:56 -07002999// The zero value is not encoded.
Damien Neil316febd2020-02-09 12:26:50 -08003000func sizeSfixed32NoZero(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07003001 v := *p.Int32()
3002 if v == 0 {
3003 return 0
3004 }
Damien Neil316febd2020-02-09 12:26:50 -08003005 return f.tagsize + wire.SizeFixed32()
Damien Neilc37adef2019-04-01 13:49:56 -07003006}
3007
Joe Tsaic51e2e02019-07-13 00:44:41 -07003008// appendSfixed32NoZero wire encodes a int32 pointer as a Sfixed32.
Damien Neilc37adef2019-04-01 13:49:56 -07003009// The zero value is not encoded.
Damien Neil316febd2020-02-09 12:26:50 -08003010func appendSfixed32NoZero(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07003011 v := *p.Int32()
3012 if v == 0 {
3013 return b, nil
3014 }
Damien Neil316febd2020-02-09 12:26:50 -08003015 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07003016 b = wire.AppendFixed32(b, uint32(v))
3017 return b, nil
3018}
3019
3020var coderSfixed32NoZero = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07003021 size: sizeSfixed32NoZero,
3022 marshal: appendSfixed32NoZero,
3023 unmarshal: consumeSfixed32,
Damien Neilc37adef2019-04-01 13:49:56 -07003024}
3025
3026// sizeSfixed32Ptr returns the size of wire encoding a *int32 pointer as a Sfixed32.
3027// It panics if the pointer is nil.
Damien Neil316febd2020-02-09 12:26:50 -08003028func sizeSfixed32Ptr(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
3029 return f.tagsize + wire.SizeFixed32()
Damien Neilc37adef2019-04-01 13:49:56 -07003030}
3031
Damien Neile91877d2019-06-27 10:54:42 -07003032// appendSfixed32Ptr wire encodes a *int32 pointer as a Sfixed32.
Damien Neilc37adef2019-04-01 13:49:56 -07003033// It panics if the pointer is nil.
Damien Neil316febd2020-02-09 12:26:50 -08003034func appendSfixed32Ptr(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07003035 v := **p.Int32Ptr()
Damien Neil316febd2020-02-09 12:26:50 -08003036 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07003037 b = wire.AppendFixed32(b, uint32(v))
3038 return b, nil
3039}
3040
Damien Neile91877d2019-06-27 10:54:42 -07003041// consumeSfixed32Ptr wire decodes a *int32 pointer as a Sfixed32.
Damien Neil316febd2020-02-09 12:26:50 -08003042func consumeSfixed32Ptr(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07003043 if wtyp != wire.Fixed32Type {
Damien Neilf0831e82020-01-21 14:25:12 -08003044 return out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07003045 }
3046 v, n := wire.ConsumeFixed32(b)
3047 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08003048 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07003049 }
3050 vp := p.Int32Ptr()
3051 if *vp == nil {
3052 *vp = new(int32)
3053 }
3054 **vp = int32(v)
Damien Neilf0831e82020-01-21 14:25:12 -08003055 out.n = n
3056 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -07003057}
3058
Damien Neilc37adef2019-04-01 13:49:56 -07003059var coderSfixed32Ptr = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07003060 size: sizeSfixed32Ptr,
3061 marshal: appendSfixed32Ptr,
3062 unmarshal: consumeSfixed32Ptr,
Damien Neilc37adef2019-04-01 13:49:56 -07003063}
3064
3065// sizeSfixed32Slice returns the size of wire encoding a []int32 pointer as a repeated Sfixed32.
Damien Neil316febd2020-02-09 12:26:50 -08003066func sizeSfixed32Slice(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07003067 s := *p.Int32Slice()
Damien Neil316febd2020-02-09 12:26:50 -08003068 size = len(s) * (f.tagsize + wire.SizeFixed32())
Damien Neilc37adef2019-04-01 13:49:56 -07003069 return size
3070}
3071
3072// appendSfixed32Slice encodes a []int32 pointer as a repeated Sfixed32.
Damien Neil316febd2020-02-09 12:26:50 -08003073func appendSfixed32Slice(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07003074 s := *p.Int32Slice()
3075 for _, v := range s {
Damien Neil316febd2020-02-09 12:26:50 -08003076 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07003077 b = wire.AppendFixed32(b, uint32(v))
3078 }
3079 return b, nil
3080}
3081
Damien Neile91877d2019-06-27 10:54:42 -07003082// consumeSfixed32Slice wire decodes a []int32 pointer as a repeated Sfixed32.
Damien Neil316febd2020-02-09 12:26:50 -08003083func consumeSfixed32Slice(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07003084 sp := p.Int32Slice()
3085 if wtyp == wire.BytesType {
3086 s := *sp
Damien Neilf0831e82020-01-21 14:25:12 -08003087 b, n := wire.ConsumeBytes(b)
Damien Neile91877d2019-06-27 10:54:42 -07003088 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08003089 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07003090 }
3091 for len(b) > 0 {
3092 v, n := wire.ConsumeFixed32(b)
3093 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08003094 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07003095 }
3096 s = append(s, int32(v))
3097 b = b[n:]
3098 }
3099 *sp = s
Damien Neilf0831e82020-01-21 14:25:12 -08003100 out.n = n
3101 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -07003102 }
3103 if wtyp != wire.Fixed32Type {
Damien Neilf0831e82020-01-21 14:25:12 -08003104 return out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07003105 }
3106 v, n := wire.ConsumeFixed32(b)
3107 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08003108 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07003109 }
3110 *sp = append(*sp, int32(v))
Damien Neilf0831e82020-01-21 14:25:12 -08003111 out.n = n
3112 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -07003113}
3114
Damien Neilc37adef2019-04-01 13:49:56 -07003115var coderSfixed32Slice = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07003116 size: sizeSfixed32Slice,
3117 marshal: appendSfixed32Slice,
3118 unmarshal: consumeSfixed32Slice,
Damien Neilc37adef2019-04-01 13:49:56 -07003119}
3120
3121// sizeSfixed32PackedSlice returns the size of wire encoding a []int32 pointer as a packed repeated Sfixed32.
Damien Neil316febd2020-02-09 12:26:50 -08003122func sizeSfixed32PackedSlice(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07003123 s := *p.Int32Slice()
3124 if len(s) == 0 {
3125 return 0
3126 }
3127 n := len(s) * wire.SizeFixed32()
Damien Neil316febd2020-02-09 12:26:50 -08003128 return f.tagsize + wire.SizeBytes(n)
Damien Neilc37adef2019-04-01 13:49:56 -07003129}
3130
3131// appendSfixed32PackedSlice encodes a []int32 pointer as a packed repeated Sfixed32.
Damien Neil316febd2020-02-09 12:26:50 -08003132func appendSfixed32PackedSlice(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07003133 s := *p.Int32Slice()
3134 if len(s) == 0 {
3135 return b, nil
3136 }
Damien Neil316febd2020-02-09 12:26:50 -08003137 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07003138 n := len(s) * wire.SizeFixed32()
3139 b = wire.AppendVarint(b, uint64(n))
3140 for _, v := range s {
3141 b = wire.AppendFixed32(b, uint32(v))
3142 }
3143 return b, nil
3144}
3145
3146var coderSfixed32PackedSlice = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07003147 size: sizeSfixed32PackedSlice,
3148 marshal: appendSfixed32PackedSlice,
3149 unmarshal: consumeSfixed32Slice,
Damien Neilc37adef2019-04-01 13:49:56 -07003150}
3151
Damien Neil68b81c32019-08-22 11:41:32 -07003152// sizeSfixed32Value returns the size of wire encoding a int32 value as a Sfixed32.
3153func sizeSfixed32Value(v protoreflect.Value, tagsize int, _ marshalOptions) int {
Damien Neilc37adef2019-04-01 13:49:56 -07003154 return tagsize + wire.SizeFixed32()
3155}
3156
Damien Neil68b81c32019-08-22 11:41:32 -07003157// appendSfixed32Value encodes a int32 value as a Sfixed32.
3158func appendSfixed32Value(b []byte, v protoreflect.Value, wiretag uint64, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07003159 b = wire.AppendVarint(b, wiretag)
Damien Neil68b81c32019-08-22 11:41:32 -07003160 b = wire.AppendFixed32(b, uint32(v.Int()))
Damien Neilc37adef2019-04-01 13:49:56 -07003161 return b, nil
3162}
3163
Damien Neil68b81c32019-08-22 11:41:32 -07003164// consumeSfixed32Value decodes a int32 value as a Sfixed32.
Damien Neilf0831e82020-01-21 14:25:12 -08003165func consumeSfixed32Value(b []byte, _ protoreflect.Value, _ wire.Number, wtyp wire.Type, _ unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07003166 if wtyp != wire.Fixed32Type {
Damien Neilf0831e82020-01-21 14:25:12 -08003167 return protoreflect.Value{}, out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07003168 }
3169 v, n := wire.ConsumeFixed32(b)
3170 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08003171 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07003172 }
Damien Neilf0831e82020-01-21 14:25:12 -08003173 out.n = n
3174 return protoreflect.ValueOfInt32(int32(v)), out, nil
Damien Neile91877d2019-06-27 10:54:42 -07003175}
3176
Damien Neil68b81c32019-08-22 11:41:32 -07003177var coderSfixed32Value = valueCoderFuncs{
3178 size: sizeSfixed32Value,
3179 marshal: appendSfixed32Value,
3180 unmarshal: consumeSfixed32Value,
Damien Neilc37adef2019-04-01 13:49:56 -07003181}
3182
Damien Neil68b81c32019-08-22 11:41:32 -07003183// sizeSfixed32SliceValue returns the size of wire encoding a []int32 value as a repeated Sfixed32.
3184func sizeSfixed32SliceValue(listv protoreflect.Value, tagsize int, _ marshalOptions) (size int) {
3185 list := listv.List()
3186 size = list.Len() * (tagsize + wire.SizeFixed32())
Damien Neilc37adef2019-04-01 13:49:56 -07003187 return size
3188}
3189
Damien Neil68b81c32019-08-22 11:41:32 -07003190// appendSfixed32SliceValue encodes a []int32 value as a repeated Sfixed32.
3191func appendSfixed32SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, _ marshalOptions) ([]byte, error) {
3192 list := listv.List()
3193 for i, llen := 0, list.Len(); i < llen; i++ {
3194 v := list.Get(i)
Damien Neilc37adef2019-04-01 13:49:56 -07003195 b = wire.AppendVarint(b, wiretag)
Damien Neil68b81c32019-08-22 11:41:32 -07003196 b = wire.AppendFixed32(b, uint32(v.Int()))
Damien Neilc37adef2019-04-01 13:49:56 -07003197 }
3198 return b, nil
3199}
3200
Damien Neil68b81c32019-08-22 11:41:32 -07003201// consumeSfixed32SliceValue wire decodes a []int32 value as a repeated Sfixed32.
Damien Neilf0831e82020-01-21 14:25:12 -08003202func consumeSfixed32SliceValue(b []byte, listv protoreflect.Value, _ wire.Number, wtyp wire.Type, _ unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
Damien Neil68b81c32019-08-22 11:41:32 -07003203 list := listv.List()
Damien Neile91877d2019-06-27 10:54:42 -07003204 if wtyp == wire.BytesType {
Damien Neilf0831e82020-01-21 14:25:12 -08003205 b, n := wire.ConsumeBytes(b)
Damien Neile91877d2019-06-27 10:54:42 -07003206 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08003207 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07003208 }
3209 for len(b) > 0 {
3210 v, n := wire.ConsumeFixed32(b)
3211 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08003212 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07003213 }
Damien Neil68b81c32019-08-22 11:41:32 -07003214 list.Append(protoreflect.ValueOfInt32(int32(v)))
Damien Neile91877d2019-06-27 10:54:42 -07003215 b = b[n:]
3216 }
Damien Neilf0831e82020-01-21 14:25:12 -08003217 out.n = n
3218 return listv, out, nil
Damien Neile91877d2019-06-27 10:54:42 -07003219 }
3220 if wtyp != wire.Fixed32Type {
Damien Neilf0831e82020-01-21 14:25:12 -08003221 return protoreflect.Value{}, out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07003222 }
3223 v, n := wire.ConsumeFixed32(b)
3224 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08003225 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07003226 }
Damien Neil68b81c32019-08-22 11:41:32 -07003227 list.Append(protoreflect.ValueOfInt32(int32(v)))
Damien Neilf0831e82020-01-21 14:25:12 -08003228 out.n = n
3229 return listv, out, nil
Damien Neile91877d2019-06-27 10:54:42 -07003230}
3231
Damien Neil68b81c32019-08-22 11:41:32 -07003232var coderSfixed32SliceValue = valueCoderFuncs{
3233 size: sizeSfixed32SliceValue,
3234 marshal: appendSfixed32SliceValue,
3235 unmarshal: consumeSfixed32SliceValue,
Damien Neilc37adef2019-04-01 13:49:56 -07003236}
3237
Damien Neil68b81c32019-08-22 11:41:32 -07003238// sizeSfixed32PackedSliceValue returns the size of wire encoding a []int32 value as a packed repeated Sfixed32.
3239func sizeSfixed32PackedSliceValue(listv protoreflect.Value, tagsize int, _ marshalOptions) (size int) {
3240 list := listv.List()
Damien Neil2c0824b2019-12-20 12:21:25 -08003241 llen := list.Len()
3242 if llen == 0 {
3243 return 0
3244 }
3245 n := llen * wire.SizeFixed32()
Damien Neil7492a092019-07-10 15:23:29 -07003246 return tagsize + wire.SizeBytes(n)
3247}
3248
Damien Neil68b81c32019-08-22 11:41:32 -07003249// appendSfixed32PackedSliceValue encodes a []int32 value as a packed repeated Sfixed32.
3250func appendSfixed32PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, _ marshalOptions) ([]byte, error) {
3251 list := listv.List()
3252 llen := list.Len()
3253 if llen == 0 {
Damien Neil7492a092019-07-10 15:23:29 -07003254 return b, nil
3255 }
3256 b = wire.AppendVarint(b, wiretag)
Damien Neil68b81c32019-08-22 11:41:32 -07003257 n := llen * wire.SizeFixed32()
Damien Neil7492a092019-07-10 15:23:29 -07003258 b = wire.AppendVarint(b, uint64(n))
Damien Neil68b81c32019-08-22 11:41:32 -07003259 for i := 0; i < llen; i++ {
3260 v := list.Get(i)
3261 b = wire.AppendFixed32(b, uint32(v.Int()))
Damien Neil7492a092019-07-10 15:23:29 -07003262 }
3263 return b, nil
3264}
3265
Damien Neil68b81c32019-08-22 11:41:32 -07003266var coderSfixed32PackedSliceValue = valueCoderFuncs{
3267 size: sizeSfixed32PackedSliceValue,
3268 marshal: appendSfixed32PackedSliceValue,
3269 unmarshal: consumeSfixed32SliceValue,
Damien Neil7492a092019-07-10 15:23:29 -07003270}
3271
Damien Neilc37adef2019-04-01 13:49:56 -07003272// sizeFixed32 returns the size of wire encoding a uint32 pointer as a Fixed32.
Damien Neil316febd2020-02-09 12:26:50 -08003273func sizeFixed32(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07003274
Damien Neil316febd2020-02-09 12:26:50 -08003275 return f.tagsize + wire.SizeFixed32()
Damien Neilc37adef2019-04-01 13:49:56 -07003276}
3277
3278// appendFixed32 wire encodes a uint32 pointer as a Fixed32.
Damien Neil316febd2020-02-09 12:26:50 -08003279func appendFixed32(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07003280 v := *p.Uint32()
Damien Neil316febd2020-02-09 12:26:50 -08003281 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07003282 b = wire.AppendFixed32(b, v)
3283 return b, nil
3284}
3285
Damien Neile91877d2019-06-27 10:54:42 -07003286// consumeFixed32 wire decodes a uint32 pointer as a Fixed32.
Damien Neil316febd2020-02-09 12:26:50 -08003287func consumeFixed32(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07003288 if wtyp != wire.Fixed32Type {
Damien Neilf0831e82020-01-21 14:25:12 -08003289 return out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07003290 }
3291 v, n := wire.ConsumeFixed32(b)
3292 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08003293 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07003294 }
3295 *p.Uint32() = v
Damien Neilf0831e82020-01-21 14:25:12 -08003296 out.n = n
3297 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -07003298}
3299
Damien Neilc37adef2019-04-01 13:49:56 -07003300var coderFixed32 = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07003301 size: sizeFixed32,
3302 marshal: appendFixed32,
3303 unmarshal: consumeFixed32,
Damien Neilc37adef2019-04-01 13:49:56 -07003304}
3305
Joe Tsaic51e2e02019-07-13 00:44:41 -07003306// sizeFixed32NoZero returns the size of wire encoding a uint32 pointer as a Fixed32.
Damien Neilc37adef2019-04-01 13:49:56 -07003307// The zero value is not encoded.
Damien Neil316febd2020-02-09 12:26:50 -08003308func sizeFixed32NoZero(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07003309 v := *p.Uint32()
3310 if v == 0 {
3311 return 0
3312 }
Damien Neil316febd2020-02-09 12:26:50 -08003313 return f.tagsize + wire.SizeFixed32()
Damien Neilc37adef2019-04-01 13:49:56 -07003314}
3315
Joe Tsaic51e2e02019-07-13 00:44:41 -07003316// appendFixed32NoZero wire encodes a uint32 pointer as a Fixed32.
Damien Neilc37adef2019-04-01 13:49:56 -07003317// The zero value is not encoded.
Damien Neil316febd2020-02-09 12:26:50 -08003318func appendFixed32NoZero(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07003319 v := *p.Uint32()
3320 if v == 0 {
3321 return b, nil
3322 }
Damien Neil316febd2020-02-09 12:26:50 -08003323 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07003324 b = wire.AppendFixed32(b, v)
3325 return b, nil
3326}
3327
3328var coderFixed32NoZero = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07003329 size: sizeFixed32NoZero,
3330 marshal: appendFixed32NoZero,
3331 unmarshal: consumeFixed32,
Damien Neilc37adef2019-04-01 13:49:56 -07003332}
3333
3334// sizeFixed32Ptr returns the size of wire encoding a *uint32 pointer as a Fixed32.
3335// It panics if the pointer is nil.
Damien Neil316febd2020-02-09 12:26:50 -08003336func sizeFixed32Ptr(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
3337 return f.tagsize + wire.SizeFixed32()
Damien Neilc37adef2019-04-01 13:49:56 -07003338}
3339
Damien Neile91877d2019-06-27 10:54:42 -07003340// appendFixed32Ptr wire encodes a *uint32 pointer as a Fixed32.
Damien Neilc37adef2019-04-01 13:49:56 -07003341// It panics if the pointer is nil.
Damien Neil316febd2020-02-09 12:26:50 -08003342func appendFixed32Ptr(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07003343 v := **p.Uint32Ptr()
Damien Neil316febd2020-02-09 12:26:50 -08003344 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07003345 b = wire.AppendFixed32(b, v)
3346 return b, nil
3347}
3348
Damien Neile91877d2019-06-27 10:54:42 -07003349// consumeFixed32Ptr wire decodes a *uint32 pointer as a Fixed32.
Damien Neil316febd2020-02-09 12:26:50 -08003350func consumeFixed32Ptr(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07003351 if wtyp != wire.Fixed32Type {
Damien Neilf0831e82020-01-21 14:25:12 -08003352 return out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07003353 }
3354 v, n := wire.ConsumeFixed32(b)
3355 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08003356 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07003357 }
3358 vp := p.Uint32Ptr()
3359 if *vp == nil {
3360 *vp = new(uint32)
3361 }
3362 **vp = v
Damien Neilf0831e82020-01-21 14:25:12 -08003363 out.n = n
3364 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -07003365}
3366
Damien Neilc37adef2019-04-01 13:49:56 -07003367var coderFixed32Ptr = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07003368 size: sizeFixed32Ptr,
3369 marshal: appendFixed32Ptr,
3370 unmarshal: consumeFixed32Ptr,
Damien Neilc37adef2019-04-01 13:49:56 -07003371}
3372
3373// sizeFixed32Slice returns the size of wire encoding a []uint32 pointer as a repeated Fixed32.
Damien Neil316febd2020-02-09 12:26:50 -08003374func sizeFixed32Slice(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07003375 s := *p.Uint32Slice()
Damien Neil316febd2020-02-09 12:26:50 -08003376 size = len(s) * (f.tagsize + wire.SizeFixed32())
Damien Neilc37adef2019-04-01 13:49:56 -07003377 return size
3378}
3379
3380// appendFixed32Slice encodes a []uint32 pointer as a repeated Fixed32.
Damien Neil316febd2020-02-09 12:26:50 -08003381func appendFixed32Slice(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07003382 s := *p.Uint32Slice()
3383 for _, v := range s {
Damien Neil316febd2020-02-09 12:26:50 -08003384 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07003385 b = wire.AppendFixed32(b, v)
3386 }
3387 return b, nil
3388}
3389
Damien Neile91877d2019-06-27 10:54:42 -07003390// consumeFixed32Slice wire decodes a []uint32 pointer as a repeated Fixed32.
Damien Neil316febd2020-02-09 12:26:50 -08003391func consumeFixed32Slice(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07003392 sp := p.Uint32Slice()
3393 if wtyp == wire.BytesType {
3394 s := *sp
Damien Neilf0831e82020-01-21 14:25:12 -08003395 b, n := wire.ConsumeBytes(b)
Damien Neile91877d2019-06-27 10:54:42 -07003396 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08003397 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07003398 }
3399 for len(b) > 0 {
3400 v, n := wire.ConsumeFixed32(b)
3401 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08003402 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07003403 }
3404 s = append(s, v)
3405 b = b[n:]
3406 }
3407 *sp = s
Damien Neilf0831e82020-01-21 14:25:12 -08003408 out.n = n
3409 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -07003410 }
3411 if wtyp != wire.Fixed32Type {
Damien Neilf0831e82020-01-21 14:25:12 -08003412 return out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07003413 }
3414 v, n := wire.ConsumeFixed32(b)
3415 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08003416 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07003417 }
3418 *sp = append(*sp, v)
Damien Neilf0831e82020-01-21 14:25:12 -08003419 out.n = n
3420 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -07003421}
3422
Damien Neilc37adef2019-04-01 13:49:56 -07003423var coderFixed32Slice = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07003424 size: sizeFixed32Slice,
3425 marshal: appendFixed32Slice,
3426 unmarshal: consumeFixed32Slice,
Damien Neilc37adef2019-04-01 13:49:56 -07003427}
3428
3429// sizeFixed32PackedSlice returns the size of wire encoding a []uint32 pointer as a packed repeated Fixed32.
Damien Neil316febd2020-02-09 12:26:50 -08003430func sizeFixed32PackedSlice(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07003431 s := *p.Uint32Slice()
3432 if len(s) == 0 {
3433 return 0
3434 }
3435 n := len(s) * wire.SizeFixed32()
Damien Neil316febd2020-02-09 12:26:50 -08003436 return f.tagsize + wire.SizeBytes(n)
Damien Neilc37adef2019-04-01 13:49:56 -07003437}
3438
3439// appendFixed32PackedSlice encodes a []uint32 pointer as a packed repeated Fixed32.
Damien Neil316febd2020-02-09 12:26:50 -08003440func appendFixed32PackedSlice(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07003441 s := *p.Uint32Slice()
3442 if len(s) == 0 {
3443 return b, nil
3444 }
Damien Neil316febd2020-02-09 12:26:50 -08003445 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07003446 n := len(s) * wire.SizeFixed32()
3447 b = wire.AppendVarint(b, uint64(n))
3448 for _, v := range s {
3449 b = wire.AppendFixed32(b, v)
3450 }
3451 return b, nil
3452}
3453
3454var coderFixed32PackedSlice = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07003455 size: sizeFixed32PackedSlice,
3456 marshal: appendFixed32PackedSlice,
3457 unmarshal: consumeFixed32Slice,
Damien Neilc37adef2019-04-01 13:49:56 -07003458}
3459
Damien Neil68b81c32019-08-22 11:41:32 -07003460// sizeFixed32Value returns the size of wire encoding a uint32 value as a Fixed32.
3461func sizeFixed32Value(v protoreflect.Value, tagsize int, _ marshalOptions) int {
Damien Neilc37adef2019-04-01 13:49:56 -07003462 return tagsize + wire.SizeFixed32()
3463}
3464
Damien Neil68b81c32019-08-22 11:41:32 -07003465// appendFixed32Value encodes a uint32 value as a Fixed32.
3466func appendFixed32Value(b []byte, v protoreflect.Value, wiretag uint64, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07003467 b = wire.AppendVarint(b, wiretag)
Damien Neil68b81c32019-08-22 11:41:32 -07003468 b = wire.AppendFixed32(b, uint32(v.Uint()))
Damien Neilc37adef2019-04-01 13:49:56 -07003469 return b, nil
3470}
3471
Damien Neil68b81c32019-08-22 11:41:32 -07003472// consumeFixed32Value decodes a uint32 value as a Fixed32.
Damien Neilf0831e82020-01-21 14:25:12 -08003473func consumeFixed32Value(b []byte, _ protoreflect.Value, _ wire.Number, wtyp wire.Type, _ unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07003474 if wtyp != wire.Fixed32Type {
Damien Neilf0831e82020-01-21 14:25:12 -08003475 return protoreflect.Value{}, out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07003476 }
3477 v, n := wire.ConsumeFixed32(b)
3478 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08003479 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07003480 }
Damien Neilf0831e82020-01-21 14:25:12 -08003481 out.n = n
3482 return protoreflect.ValueOfUint32(uint32(v)), out, nil
Damien Neile91877d2019-06-27 10:54:42 -07003483}
3484
Damien Neil68b81c32019-08-22 11:41:32 -07003485var coderFixed32Value = valueCoderFuncs{
3486 size: sizeFixed32Value,
3487 marshal: appendFixed32Value,
3488 unmarshal: consumeFixed32Value,
Damien Neilc37adef2019-04-01 13:49:56 -07003489}
3490
Damien Neil68b81c32019-08-22 11:41:32 -07003491// sizeFixed32SliceValue returns the size of wire encoding a []uint32 value as a repeated Fixed32.
3492func sizeFixed32SliceValue(listv protoreflect.Value, tagsize int, _ marshalOptions) (size int) {
3493 list := listv.List()
3494 size = list.Len() * (tagsize + wire.SizeFixed32())
Damien Neilc37adef2019-04-01 13:49:56 -07003495 return size
3496}
3497
Damien Neil68b81c32019-08-22 11:41:32 -07003498// appendFixed32SliceValue encodes a []uint32 value as a repeated Fixed32.
3499func appendFixed32SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, _ marshalOptions) ([]byte, error) {
3500 list := listv.List()
3501 for i, llen := 0, list.Len(); i < llen; i++ {
3502 v := list.Get(i)
Damien Neilc37adef2019-04-01 13:49:56 -07003503 b = wire.AppendVarint(b, wiretag)
Damien Neil68b81c32019-08-22 11:41:32 -07003504 b = wire.AppendFixed32(b, uint32(v.Uint()))
Damien Neilc37adef2019-04-01 13:49:56 -07003505 }
3506 return b, nil
3507}
3508
Damien Neil68b81c32019-08-22 11:41:32 -07003509// consumeFixed32SliceValue wire decodes a []uint32 value as a repeated Fixed32.
Damien Neilf0831e82020-01-21 14:25:12 -08003510func consumeFixed32SliceValue(b []byte, listv protoreflect.Value, _ wire.Number, wtyp wire.Type, _ unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
Damien Neil68b81c32019-08-22 11:41:32 -07003511 list := listv.List()
Damien Neile91877d2019-06-27 10:54:42 -07003512 if wtyp == wire.BytesType {
Damien Neilf0831e82020-01-21 14:25:12 -08003513 b, n := wire.ConsumeBytes(b)
Damien Neile91877d2019-06-27 10:54:42 -07003514 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08003515 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07003516 }
3517 for len(b) > 0 {
3518 v, n := wire.ConsumeFixed32(b)
3519 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08003520 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07003521 }
Damien Neil68b81c32019-08-22 11:41:32 -07003522 list.Append(protoreflect.ValueOfUint32(uint32(v)))
Damien Neile91877d2019-06-27 10:54:42 -07003523 b = b[n:]
3524 }
Damien Neilf0831e82020-01-21 14:25:12 -08003525 out.n = n
3526 return listv, out, nil
Damien Neile91877d2019-06-27 10:54:42 -07003527 }
3528 if wtyp != wire.Fixed32Type {
Damien Neilf0831e82020-01-21 14:25:12 -08003529 return protoreflect.Value{}, out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07003530 }
3531 v, n := wire.ConsumeFixed32(b)
3532 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08003533 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07003534 }
Damien Neil68b81c32019-08-22 11:41:32 -07003535 list.Append(protoreflect.ValueOfUint32(uint32(v)))
Damien Neilf0831e82020-01-21 14:25:12 -08003536 out.n = n
3537 return listv, out, nil
Damien Neile91877d2019-06-27 10:54:42 -07003538}
3539
Damien Neil68b81c32019-08-22 11:41:32 -07003540var coderFixed32SliceValue = valueCoderFuncs{
3541 size: sizeFixed32SliceValue,
3542 marshal: appendFixed32SliceValue,
3543 unmarshal: consumeFixed32SliceValue,
Damien Neilc37adef2019-04-01 13:49:56 -07003544}
3545
Damien Neil68b81c32019-08-22 11:41:32 -07003546// sizeFixed32PackedSliceValue returns the size of wire encoding a []uint32 value as a packed repeated Fixed32.
3547func sizeFixed32PackedSliceValue(listv protoreflect.Value, tagsize int, _ marshalOptions) (size int) {
3548 list := listv.List()
Damien Neil2c0824b2019-12-20 12:21:25 -08003549 llen := list.Len()
3550 if llen == 0 {
3551 return 0
3552 }
3553 n := llen * wire.SizeFixed32()
Damien Neil7492a092019-07-10 15:23:29 -07003554 return tagsize + wire.SizeBytes(n)
3555}
3556
Damien Neil68b81c32019-08-22 11:41:32 -07003557// appendFixed32PackedSliceValue encodes a []uint32 value as a packed repeated Fixed32.
3558func appendFixed32PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, _ marshalOptions) ([]byte, error) {
3559 list := listv.List()
3560 llen := list.Len()
3561 if llen == 0 {
Damien Neil7492a092019-07-10 15:23:29 -07003562 return b, nil
3563 }
3564 b = wire.AppendVarint(b, wiretag)
Damien Neil68b81c32019-08-22 11:41:32 -07003565 n := llen * wire.SizeFixed32()
Damien Neil7492a092019-07-10 15:23:29 -07003566 b = wire.AppendVarint(b, uint64(n))
Damien Neil68b81c32019-08-22 11:41:32 -07003567 for i := 0; i < llen; i++ {
3568 v := list.Get(i)
3569 b = wire.AppendFixed32(b, uint32(v.Uint()))
Damien Neil7492a092019-07-10 15:23:29 -07003570 }
3571 return b, nil
3572}
3573
Damien Neil68b81c32019-08-22 11:41:32 -07003574var coderFixed32PackedSliceValue = valueCoderFuncs{
3575 size: sizeFixed32PackedSliceValue,
3576 marshal: appendFixed32PackedSliceValue,
3577 unmarshal: consumeFixed32SliceValue,
Damien Neil7492a092019-07-10 15:23:29 -07003578}
3579
Damien Neilc37adef2019-04-01 13:49:56 -07003580// sizeFloat returns the size of wire encoding a float32 pointer as a Float.
Damien Neil316febd2020-02-09 12:26:50 -08003581func sizeFloat(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07003582
Damien Neil316febd2020-02-09 12:26:50 -08003583 return f.tagsize + wire.SizeFixed32()
Damien Neilc37adef2019-04-01 13:49:56 -07003584}
3585
3586// appendFloat wire encodes a float32 pointer as a Float.
Damien Neil316febd2020-02-09 12:26:50 -08003587func appendFloat(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07003588 v := *p.Float32()
Damien Neil316febd2020-02-09 12:26:50 -08003589 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07003590 b = wire.AppendFixed32(b, math.Float32bits(v))
3591 return b, nil
3592}
3593
Damien Neile91877d2019-06-27 10:54:42 -07003594// consumeFloat wire decodes a float32 pointer as a Float.
Damien Neil316febd2020-02-09 12:26:50 -08003595func consumeFloat(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07003596 if wtyp != wire.Fixed32Type {
Damien Neilf0831e82020-01-21 14:25:12 -08003597 return out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07003598 }
3599 v, n := wire.ConsumeFixed32(b)
3600 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08003601 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07003602 }
3603 *p.Float32() = math.Float32frombits(v)
Damien Neilf0831e82020-01-21 14:25:12 -08003604 out.n = n
3605 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -07003606}
3607
Damien Neilc37adef2019-04-01 13:49:56 -07003608var coderFloat = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07003609 size: sizeFloat,
3610 marshal: appendFloat,
3611 unmarshal: consumeFloat,
Damien Neilc37adef2019-04-01 13:49:56 -07003612}
3613
Joe Tsaic51e2e02019-07-13 00:44:41 -07003614// sizeFloatNoZero returns the size of wire encoding a float32 pointer as a Float.
Damien Neilc37adef2019-04-01 13:49:56 -07003615// The zero value is not encoded.
Damien Neil316febd2020-02-09 12:26:50 -08003616func sizeFloatNoZero(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07003617 v := *p.Float32()
3618 if v == 0 && !math.Signbit(float64(v)) {
3619 return 0
3620 }
Damien Neil316febd2020-02-09 12:26:50 -08003621 return f.tagsize + wire.SizeFixed32()
Damien Neilc37adef2019-04-01 13:49:56 -07003622}
3623
Joe Tsaic51e2e02019-07-13 00:44:41 -07003624// appendFloatNoZero wire encodes a float32 pointer as a Float.
Damien Neilc37adef2019-04-01 13:49:56 -07003625// The zero value is not encoded.
Damien Neil316febd2020-02-09 12:26:50 -08003626func appendFloatNoZero(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07003627 v := *p.Float32()
3628 if v == 0 && !math.Signbit(float64(v)) {
3629 return b, nil
3630 }
Damien Neil316febd2020-02-09 12:26:50 -08003631 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07003632 b = wire.AppendFixed32(b, math.Float32bits(v))
3633 return b, nil
3634}
3635
3636var coderFloatNoZero = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07003637 size: sizeFloatNoZero,
3638 marshal: appendFloatNoZero,
3639 unmarshal: consumeFloat,
Damien Neilc37adef2019-04-01 13:49:56 -07003640}
3641
3642// sizeFloatPtr returns the size of wire encoding a *float32 pointer as a Float.
3643// It panics if the pointer is nil.
Damien Neil316febd2020-02-09 12:26:50 -08003644func sizeFloatPtr(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
3645 return f.tagsize + wire.SizeFixed32()
Damien Neilc37adef2019-04-01 13:49:56 -07003646}
3647
Damien Neile91877d2019-06-27 10:54:42 -07003648// appendFloatPtr wire encodes a *float32 pointer as a Float.
Damien Neilc37adef2019-04-01 13:49:56 -07003649// It panics if the pointer is nil.
Damien Neil316febd2020-02-09 12:26:50 -08003650func appendFloatPtr(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07003651 v := **p.Float32Ptr()
Damien Neil316febd2020-02-09 12:26:50 -08003652 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07003653 b = wire.AppendFixed32(b, math.Float32bits(v))
3654 return b, nil
3655}
3656
Damien Neile91877d2019-06-27 10:54:42 -07003657// consumeFloatPtr wire decodes a *float32 pointer as a Float.
Damien Neil316febd2020-02-09 12:26:50 -08003658func consumeFloatPtr(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07003659 if wtyp != wire.Fixed32Type {
Damien Neilf0831e82020-01-21 14:25:12 -08003660 return out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07003661 }
3662 v, n := wire.ConsumeFixed32(b)
3663 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08003664 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07003665 }
3666 vp := p.Float32Ptr()
3667 if *vp == nil {
3668 *vp = new(float32)
3669 }
3670 **vp = math.Float32frombits(v)
Damien Neilf0831e82020-01-21 14:25:12 -08003671 out.n = n
3672 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -07003673}
3674
Damien Neilc37adef2019-04-01 13:49:56 -07003675var coderFloatPtr = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07003676 size: sizeFloatPtr,
3677 marshal: appendFloatPtr,
3678 unmarshal: consumeFloatPtr,
Damien Neilc37adef2019-04-01 13:49:56 -07003679}
3680
3681// sizeFloatSlice returns the size of wire encoding a []float32 pointer as a repeated Float.
Damien Neil316febd2020-02-09 12:26:50 -08003682func sizeFloatSlice(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07003683 s := *p.Float32Slice()
Damien Neil316febd2020-02-09 12:26:50 -08003684 size = len(s) * (f.tagsize + wire.SizeFixed32())
Damien Neilc37adef2019-04-01 13:49:56 -07003685 return size
3686}
3687
3688// appendFloatSlice encodes a []float32 pointer as a repeated Float.
Damien Neil316febd2020-02-09 12:26:50 -08003689func appendFloatSlice(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07003690 s := *p.Float32Slice()
3691 for _, v := range s {
Damien Neil316febd2020-02-09 12:26:50 -08003692 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07003693 b = wire.AppendFixed32(b, math.Float32bits(v))
3694 }
3695 return b, nil
3696}
3697
Damien Neile91877d2019-06-27 10:54:42 -07003698// consumeFloatSlice wire decodes a []float32 pointer as a repeated Float.
Damien Neil316febd2020-02-09 12:26:50 -08003699func consumeFloatSlice(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07003700 sp := p.Float32Slice()
3701 if wtyp == wire.BytesType {
3702 s := *sp
Damien Neilf0831e82020-01-21 14:25:12 -08003703 b, n := wire.ConsumeBytes(b)
Damien Neile91877d2019-06-27 10:54:42 -07003704 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08003705 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07003706 }
3707 for len(b) > 0 {
3708 v, n := wire.ConsumeFixed32(b)
3709 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08003710 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07003711 }
3712 s = append(s, math.Float32frombits(v))
3713 b = b[n:]
3714 }
3715 *sp = s
Damien Neilf0831e82020-01-21 14:25:12 -08003716 out.n = n
3717 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -07003718 }
3719 if wtyp != wire.Fixed32Type {
Damien Neilf0831e82020-01-21 14:25:12 -08003720 return out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07003721 }
3722 v, n := wire.ConsumeFixed32(b)
3723 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08003724 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07003725 }
3726 *sp = append(*sp, math.Float32frombits(v))
Damien Neilf0831e82020-01-21 14:25:12 -08003727 out.n = n
3728 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -07003729}
3730
Damien Neilc37adef2019-04-01 13:49:56 -07003731var coderFloatSlice = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07003732 size: sizeFloatSlice,
3733 marshal: appendFloatSlice,
3734 unmarshal: consumeFloatSlice,
Damien Neilc37adef2019-04-01 13:49:56 -07003735}
3736
3737// sizeFloatPackedSlice returns the size of wire encoding a []float32 pointer as a packed repeated Float.
Damien Neil316febd2020-02-09 12:26:50 -08003738func sizeFloatPackedSlice(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07003739 s := *p.Float32Slice()
3740 if len(s) == 0 {
3741 return 0
3742 }
3743 n := len(s) * wire.SizeFixed32()
Damien Neil316febd2020-02-09 12:26:50 -08003744 return f.tagsize + wire.SizeBytes(n)
Damien Neilc37adef2019-04-01 13:49:56 -07003745}
3746
3747// appendFloatPackedSlice encodes a []float32 pointer as a packed repeated Float.
Damien Neil316febd2020-02-09 12:26:50 -08003748func appendFloatPackedSlice(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07003749 s := *p.Float32Slice()
3750 if len(s) == 0 {
3751 return b, nil
3752 }
Damien Neil316febd2020-02-09 12:26:50 -08003753 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07003754 n := len(s) * wire.SizeFixed32()
3755 b = wire.AppendVarint(b, uint64(n))
3756 for _, v := range s {
3757 b = wire.AppendFixed32(b, math.Float32bits(v))
3758 }
3759 return b, nil
3760}
3761
3762var coderFloatPackedSlice = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07003763 size: sizeFloatPackedSlice,
3764 marshal: appendFloatPackedSlice,
3765 unmarshal: consumeFloatSlice,
Damien Neilc37adef2019-04-01 13:49:56 -07003766}
3767
Damien Neil68b81c32019-08-22 11:41:32 -07003768// sizeFloatValue returns the size of wire encoding a float32 value as a Float.
3769func sizeFloatValue(v protoreflect.Value, tagsize int, _ marshalOptions) int {
Damien Neilc37adef2019-04-01 13:49:56 -07003770 return tagsize + wire.SizeFixed32()
3771}
3772
Damien Neil68b81c32019-08-22 11:41:32 -07003773// appendFloatValue encodes a float32 value as a Float.
3774func appendFloatValue(b []byte, v protoreflect.Value, wiretag uint64, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07003775 b = wire.AppendVarint(b, wiretag)
Damien Neil68b81c32019-08-22 11:41:32 -07003776 b = wire.AppendFixed32(b, math.Float32bits(float32(v.Float())))
Damien Neilc37adef2019-04-01 13:49:56 -07003777 return b, nil
3778}
3779
Damien Neil68b81c32019-08-22 11:41:32 -07003780// consumeFloatValue decodes a float32 value as a Float.
Damien Neilf0831e82020-01-21 14:25:12 -08003781func consumeFloatValue(b []byte, _ protoreflect.Value, _ wire.Number, wtyp wire.Type, _ unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07003782 if wtyp != wire.Fixed32Type {
Damien Neilf0831e82020-01-21 14:25:12 -08003783 return protoreflect.Value{}, out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07003784 }
3785 v, n := wire.ConsumeFixed32(b)
3786 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08003787 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07003788 }
Damien Neilf0831e82020-01-21 14:25:12 -08003789 out.n = n
3790 return protoreflect.ValueOfFloat32(math.Float32frombits(uint32(v))), out, nil
Damien Neile91877d2019-06-27 10:54:42 -07003791}
3792
Damien Neil68b81c32019-08-22 11:41:32 -07003793var coderFloatValue = valueCoderFuncs{
3794 size: sizeFloatValue,
3795 marshal: appendFloatValue,
3796 unmarshal: consumeFloatValue,
Damien Neilc37adef2019-04-01 13:49:56 -07003797}
3798
Damien Neil68b81c32019-08-22 11:41:32 -07003799// sizeFloatSliceValue returns the size of wire encoding a []float32 value as a repeated Float.
3800func sizeFloatSliceValue(listv protoreflect.Value, tagsize int, _ marshalOptions) (size int) {
3801 list := listv.List()
3802 size = list.Len() * (tagsize + wire.SizeFixed32())
Damien Neilc37adef2019-04-01 13:49:56 -07003803 return size
3804}
3805
Damien Neil68b81c32019-08-22 11:41:32 -07003806// appendFloatSliceValue encodes a []float32 value as a repeated Float.
3807func appendFloatSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, _ marshalOptions) ([]byte, error) {
3808 list := listv.List()
3809 for i, llen := 0, list.Len(); i < llen; i++ {
3810 v := list.Get(i)
Damien Neilc37adef2019-04-01 13:49:56 -07003811 b = wire.AppendVarint(b, wiretag)
Damien Neil68b81c32019-08-22 11:41:32 -07003812 b = wire.AppendFixed32(b, math.Float32bits(float32(v.Float())))
Damien Neilc37adef2019-04-01 13:49:56 -07003813 }
3814 return b, nil
3815}
3816
Damien Neil68b81c32019-08-22 11:41:32 -07003817// consumeFloatSliceValue wire decodes a []float32 value as a repeated Float.
Damien Neilf0831e82020-01-21 14:25:12 -08003818func consumeFloatSliceValue(b []byte, listv protoreflect.Value, _ wire.Number, wtyp wire.Type, _ unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
Damien Neil68b81c32019-08-22 11:41:32 -07003819 list := listv.List()
Damien Neile91877d2019-06-27 10:54:42 -07003820 if wtyp == wire.BytesType {
Damien Neilf0831e82020-01-21 14:25:12 -08003821 b, n := wire.ConsumeBytes(b)
Damien Neile91877d2019-06-27 10:54:42 -07003822 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08003823 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07003824 }
3825 for len(b) > 0 {
3826 v, n := wire.ConsumeFixed32(b)
3827 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08003828 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07003829 }
Damien Neil68b81c32019-08-22 11:41:32 -07003830 list.Append(protoreflect.ValueOfFloat32(math.Float32frombits(uint32(v))))
Damien Neile91877d2019-06-27 10:54:42 -07003831 b = b[n:]
3832 }
Damien Neilf0831e82020-01-21 14:25:12 -08003833 out.n = n
3834 return listv, out, nil
Damien Neile91877d2019-06-27 10:54:42 -07003835 }
3836 if wtyp != wire.Fixed32Type {
Damien Neilf0831e82020-01-21 14:25:12 -08003837 return protoreflect.Value{}, out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07003838 }
3839 v, n := wire.ConsumeFixed32(b)
3840 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08003841 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07003842 }
Damien Neil68b81c32019-08-22 11:41:32 -07003843 list.Append(protoreflect.ValueOfFloat32(math.Float32frombits(uint32(v))))
Damien Neilf0831e82020-01-21 14:25:12 -08003844 out.n = n
3845 return listv, out, nil
Damien Neile91877d2019-06-27 10:54:42 -07003846}
3847
Damien Neil68b81c32019-08-22 11:41:32 -07003848var coderFloatSliceValue = valueCoderFuncs{
3849 size: sizeFloatSliceValue,
3850 marshal: appendFloatSliceValue,
3851 unmarshal: consumeFloatSliceValue,
Damien Neilc37adef2019-04-01 13:49:56 -07003852}
3853
Damien Neil68b81c32019-08-22 11:41:32 -07003854// sizeFloatPackedSliceValue returns the size of wire encoding a []float32 value as a packed repeated Float.
3855func sizeFloatPackedSliceValue(listv protoreflect.Value, tagsize int, _ marshalOptions) (size int) {
3856 list := listv.List()
Damien Neil2c0824b2019-12-20 12:21:25 -08003857 llen := list.Len()
3858 if llen == 0 {
3859 return 0
3860 }
3861 n := llen * wire.SizeFixed32()
Damien Neil7492a092019-07-10 15:23:29 -07003862 return tagsize + wire.SizeBytes(n)
3863}
3864
Damien Neil68b81c32019-08-22 11:41:32 -07003865// appendFloatPackedSliceValue encodes a []float32 value as a packed repeated Float.
3866func appendFloatPackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, _ marshalOptions) ([]byte, error) {
3867 list := listv.List()
3868 llen := list.Len()
3869 if llen == 0 {
Damien Neil7492a092019-07-10 15:23:29 -07003870 return b, nil
3871 }
3872 b = wire.AppendVarint(b, wiretag)
Damien Neil68b81c32019-08-22 11:41:32 -07003873 n := llen * wire.SizeFixed32()
Damien Neil7492a092019-07-10 15:23:29 -07003874 b = wire.AppendVarint(b, uint64(n))
Damien Neil68b81c32019-08-22 11:41:32 -07003875 for i := 0; i < llen; i++ {
3876 v := list.Get(i)
3877 b = wire.AppendFixed32(b, math.Float32bits(float32(v.Float())))
Damien Neil7492a092019-07-10 15:23:29 -07003878 }
3879 return b, nil
3880}
3881
Damien Neil68b81c32019-08-22 11:41:32 -07003882var coderFloatPackedSliceValue = valueCoderFuncs{
3883 size: sizeFloatPackedSliceValue,
3884 marshal: appendFloatPackedSliceValue,
3885 unmarshal: consumeFloatSliceValue,
Damien Neil7492a092019-07-10 15:23:29 -07003886}
3887
Damien Neilc37adef2019-04-01 13:49:56 -07003888// sizeSfixed64 returns the size of wire encoding a int64 pointer as a Sfixed64.
Damien Neil316febd2020-02-09 12:26:50 -08003889func sizeSfixed64(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07003890
Damien Neil316febd2020-02-09 12:26:50 -08003891 return f.tagsize + wire.SizeFixed64()
Damien Neilc37adef2019-04-01 13:49:56 -07003892}
3893
3894// appendSfixed64 wire encodes a int64 pointer as a Sfixed64.
Damien Neil316febd2020-02-09 12:26:50 -08003895func appendSfixed64(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07003896 v := *p.Int64()
Damien Neil316febd2020-02-09 12:26:50 -08003897 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07003898 b = wire.AppendFixed64(b, uint64(v))
3899 return b, nil
3900}
3901
Damien Neile91877d2019-06-27 10:54:42 -07003902// consumeSfixed64 wire decodes a int64 pointer as a Sfixed64.
Damien Neil316febd2020-02-09 12:26:50 -08003903func consumeSfixed64(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07003904 if wtyp != wire.Fixed64Type {
Damien Neilf0831e82020-01-21 14:25:12 -08003905 return out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07003906 }
3907 v, n := wire.ConsumeFixed64(b)
3908 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08003909 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07003910 }
3911 *p.Int64() = int64(v)
Damien Neilf0831e82020-01-21 14:25:12 -08003912 out.n = n
3913 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -07003914}
3915
Damien Neilc37adef2019-04-01 13:49:56 -07003916var coderSfixed64 = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07003917 size: sizeSfixed64,
3918 marshal: appendSfixed64,
3919 unmarshal: consumeSfixed64,
Damien Neilc37adef2019-04-01 13:49:56 -07003920}
3921
Joe Tsaic51e2e02019-07-13 00:44:41 -07003922// sizeSfixed64NoZero returns the size of wire encoding a int64 pointer as a Sfixed64.
Damien Neilc37adef2019-04-01 13:49:56 -07003923// The zero value is not encoded.
Damien Neil316febd2020-02-09 12:26:50 -08003924func sizeSfixed64NoZero(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07003925 v := *p.Int64()
3926 if v == 0 {
3927 return 0
3928 }
Damien Neil316febd2020-02-09 12:26:50 -08003929 return f.tagsize + wire.SizeFixed64()
Damien Neilc37adef2019-04-01 13:49:56 -07003930}
3931
Joe Tsaic51e2e02019-07-13 00:44:41 -07003932// appendSfixed64NoZero wire encodes a int64 pointer as a Sfixed64.
Damien Neilc37adef2019-04-01 13:49:56 -07003933// The zero value is not encoded.
Damien Neil316febd2020-02-09 12:26:50 -08003934func appendSfixed64NoZero(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07003935 v := *p.Int64()
3936 if v == 0 {
3937 return b, nil
3938 }
Damien Neil316febd2020-02-09 12:26:50 -08003939 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07003940 b = wire.AppendFixed64(b, uint64(v))
3941 return b, nil
3942}
3943
3944var coderSfixed64NoZero = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07003945 size: sizeSfixed64NoZero,
3946 marshal: appendSfixed64NoZero,
3947 unmarshal: consumeSfixed64,
Damien Neilc37adef2019-04-01 13:49:56 -07003948}
3949
3950// sizeSfixed64Ptr returns the size of wire encoding a *int64 pointer as a Sfixed64.
3951// It panics if the pointer is nil.
Damien Neil316febd2020-02-09 12:26:50 -08003952func sizeSfixed64Ptr(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
3953 return f.tagsize + wire.SizeFixed64()
Damien Neilc37adef2019-04-01 13:49:56 -07003954}
3955
Damien Neile91877d2019-06-27 10:54:42 -07003956// appendSfixed64Ptr wire encodes a *int64 pointer as a Sfixed64.
Damien Neilc37adef2019-04-01 13:49:56 -07003957// It panics if the pointer is nil.
Damien Neil316febd2020-02-09 12:26:50 -08003958func appendSfixed64Ptr(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07003959 v := **p.Int64Ptr()
Damien Neil316febd2020-02-09 12:26:50 -08003960 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07003961 b = wire.AppendFixed64(b, uint64(v))
3962 return b, nil
3963}
3964
Damien Neile91877d2019-06-27 10:54:42 -07003965// consumeSfixed64Ptr wire decodes a *int64 pointer as a Sfixed64.
Damien Neil316febd2020-02-09 12:26:50 -08003966func consumeSfixed64Ptr(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07003967 if wtyp != wire.Fixed64Type {
Damien Neilf0831e82020-01-21 14:25:12 -08003968 return out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07003969 }
3970 v, n := wire.ConsumeFixed64(b)
3971 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08003972 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07003973 }
3974 vp := p.Int64Ptr()
3975 if *vp == nil {
3976 *vp = new(int64)
3977 }
3978 **vp = int64(v)
Damien Neilf0831e82020-01-21 14:25:12 -08003979 out.n = n
3980 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -07003981}
3982
Damien Neilc37adef2019-04-01 13:49:56 -07003983var coderSfixed64Ptr = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07003984 size: sizeSfixed64Ptr,
3985 marshal: appendSfixed64Ptr,
3986 unmarshal: consumeSfixed64Ptr,
Damien Neilc37adef2019-04-01 13:49:56 -07003987}
3988
3989// sizeSfixed64Slice returns the size of wire encoding a []int64 pointer as a repeated Sfixed64.
Damien Neil316febd2020-02-09 12:26:50 -08003990func sizeSfixed64Slice(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07003991 s := *p.Int64Slice()
Damien Neil316febd2020-02-09 12:26:50 -08003992 size = len(s) * (f.tagsize + wire.SizeFixed64())
Damien Neilc37adef2019-04-01 13:49:56 -07003993 return size
3994}
3995
3996// appendSfixed64Slice encodes a []int64 pointer as a repeated Sfixed64.
Damien Neil316febd2020-02-09 12:26:50 -08003997func appendSfixed64Slice(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07003998 s := *p.Int64Slice()
3999 for _, v := range s {
Damien Neil316febd2020-02-09 12:26:50 -08004000 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07004001 b = wire.AppendFixed64(b, uint64(v))
4002 }
4003 return b, nil
4004}
4005
Damien Neile91877d2019-06-27 10:54:42 -07004006// consumeSfixed64Slice wire decodes a []int64 pointer as a repeated Sfixed64.
Damien Neil316febd2020-02-09 12:26:50 -08004007func consumeSfixed64Slice(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07004008 sp := p.Int64Slice()
4009 if wtyp == wire.BytesType {
4010 s := *sp
Damien Neilf0831e82020-01-21 14:25:12 -08004011 b, n := wire.ConsumeBytes(b)
Damien Neile91877d2019-06-27 10:54:42 -07004012 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08004013 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07004014 }
4015 for len(b) > 0 {
4016 v, n := wire.ConsumeFixed64(b)
4017 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08004018 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07004019 }
4020 s = append(s, int64(v))
4021 b = b[n:]
4022 }
4023 *sp = s
Damien Neilf0831e82020-01-21 14:25:12 -08004024 out.n = n
4025 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -07004026 }
4027 if wtyp != wire.Fixed64Type {
Damien Neilf0831e82020-01-21 14:25:12 -08004028 return out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07004029 }
4030 v, n := wire.ConsumeFixed64(b)
4031 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08004032 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07004033 }
4034 *sp = append(*sp, int64(v))
Damien Neilf0831e82020-01-21 14:25:12 -08004035 out.n = n
4036 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -07004037}
4038
Damien Neilc37adef2019-04-01 13:49:56 -07004039var coderSfixed64Slice = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07004040 size: sizeSfixed64Slice,
4041 marshal: appendSfixed64Slice,
4042 unmarshal: consumeSfixed64Slice,
Damien Neilc37adef2019-04-01 13:49:56 -07004043}
4044
4045// sizeSfixed64PackedSlice returns the size of wire encoding a []int64 pointer as a packed repeated Sfixed64.
Damien Neil316febd2020-02-09 12:26:50 -08004046func sizeSfixed64PackedSlice(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07004047 s := *p.Int64Slice()
4048 if len(s) == 0 {
4049 return 0
4050 }
4051 n := len(s) * wire.SizeFixed64()
Damien Neil316febd2020-02-09 12:26:50 -08004052 return f.tagsize + wire.SizeBytes(n)
Damien Neilc37adef2019-04-01 13:49:56 -07004053}
4054
4055// appendSfixed64PackedSlice encodes a []int64 pointer as a packed repeated Sfixed64.
Damien Neil316febd2020-02-09 12:26:50 -08004056func appendSfixed64PackedSlice(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07004057 s := *p.Int64Slice()
4058 if len(s) == 0 {
4059 return b, nil
4060 }
Damien Neil316febd2020-02-09 12:26:50 -08004061 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07004062 n := len(s) * wire.SizeFixed64()
4063 b = wire.AppendVarint(b, uint64(n))
4064 for _, v := range s {
4065 b = wire.AppendFixed64(b, uint64(v))
4066 }
4067 return b, nil
4068}
4069
4070var coderSfixed64PackedSlice = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07004071 size: sizeSfixed64PackedSlice,
4072 marshal: appendSfixed64PackedSlice,
4073 unmarshal: consumeSfixed64Slice,
Damien Neilc37adef2019-04-01 13:49:56 -07004074}
4075
Damien Neil68b81c32019-08-22 11:41:32 -07004076// sizeSfixed64Value returns the size of wire encoding a int64 value as a Sfixed64.
4077func sizeSfixed64Value(v protoreflect.Value, tagsize int, _ marshalOptions) int {
Damien Neilc37adef2019-04-01 13:49:56 -07004078 return tagsize + wire.SizeFixed64()
4079}
4080
Damien Neil68b81c32019-08-22 11:41:32 -07004081// appendSfixed64Value encodes a int64 value as a Sfixed64.
4082func appendSfixed64Value(b []byte, v protoreflect.Value, wiretag uint64, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07004083 b = wire.AppendVarint(b, wiretag)
Damien Neil68b81c32019-08-22 11:41:32 -07004084 b = wire.AppendFixed64(b, uint64(v.Int()))
Damien Neilc37adef2019-04-01 13:49:56 -07004085 return b, nil
4086}
4087
Damien Neil68b81c32019-08-22 11:41:32 -07004088// consumeSfixed64Value decodes a int64 value as a Sfixed64.
Damien Neilf0831e82020-01-21 14:25:12 -08004089func consumeSfixed64Value(b []byte, _ protoreflect.Value, _ wire.Number, wtyp wire.Type, _ unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07004090 if wtyp != wire.Fixed64Type {
Damien Neilf0831e82020-01-21 14:25:12 -08004091 return protoreflect.Value{}, out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07004092 }
4093 v, n := wire.ConsumeFixed64(b)
4094 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08004095 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07004096 }
Damien Neilf0831e82020-01-21 14:25:12 -08004097 out.n = n
4098 return protoreflect.ValueOfInt64(int64(v)), out, nil
Damien Neile91877d2019-06-27 10:54:42 -07004099}
4100
Damien Neil68b81c32019-08-22 11:41:32 -07004101var coderSfixed64Value = valueCoderFuncs{
4102 size: sizeSfixed64Value,
4103 marshal: appendSfixed64Value,
4104 unmarshal: consumeSfixed64Value,
Damien Neilc37adef2019-04-01 13:49:56 -07004105}
4106
Damien Neil68b81c32019-08-22 11:41:32 -07004107// sizeSfixed64SliceValue returns the size of wire encoding a []int64 value as a repeated Sfixed64.
4108func sizeSfixed64SliceValue(listv protoreflect.Value, tagsize int, _ marshalOptions) (size int) {
4109 list := listv.List()
4110 size = list.Len() * (tagsize + wire.SizeFixed64())
Damien Neilc37adef2019-04-01 13:49:56 -07004111 return size
4112}
4113
Damien Neil68b81c32019-08-22 11:41:32 -07004114// appendSfixed64SliceValue encodes a []int64 value as a repeated Sfixed64.
4115func appendSfixed64SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, _ marshalOptions) ([]byte, error) {
4116 list := listv.List()
4117 for i, llen := 0, list.Len(); i < llen; i++ {
4118 v := list.Get(i)
Damien Neilc37adef2019-04-01 13:49:56 -07004119 b = wire.AppendVarint(b, wiretag)
Damien Neil68b81c32019-08-22 11:41:32 -07004120 b = wire.AppendFixed64(b, uint64(v.Int()))
Damien Neilc37adef2019-04-01 13:49:56 -07004121 }
4122 return b, nil
4123}
4124
Damien Neil68b81c32019-08-22 11:41:32 -07004125// consumeSfixed64SliceValue wire decodes a []int64 value as a repeated Sfixed64.
Damien Neilf0831e82020-01-21 14:25:12 -08004126func consumeSfixed64SliceValue(b []byte, listv protoreflect.Value, _ wire.Number, wtyp wire.Type, _ unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
Damien Neil68b81c32019-08-22 11:41:32 -07004127 list := listv.List()
Damien Neile91877d2019-06-27 10:54:42 -07004128 if wtyp == wire.BytesType {
Damien Neilf0831e82020-01-21 14:25:12 -08004129 b, n := wire.ConsumeBytes(b)
Damien Neile91877d2019-06-27 10:54:42 -07004130 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08004131 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07004132 }
4133 for len(b) > 0 {
4134 v, n := wire.ConsumeFixed64(b)
4135 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08004136 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07004137 }
Damien Neil68b81c32019-08-22 11:41:32 -07004138 list.Append(protoreflect.ValueOfInt64(int64(v)))
Damien Neile91877d2019-06-27 10:54:42 -07004139 b = b[n:]
4140 }
Damien Neilf0831e82020-01-21 14:25:12 -08004141 out.n = n
4142 return listv, out, nil
Damien Neile91877d2019-06-27 10:54:42 -07004143 }
4144 if wtyp != wire.Fixed64Type {
Damien Neilf0831e82020-01-21 14:25:12 -08004145 return protoreflect.Value{}, out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07004146 }
4147 v, n := wire.ConsumeFixed64(b)
4148 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08004149 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07004150 }
Damien Neil68b81c32019-08-22 11:41:32 -07004151 list.Append(protoreflect.ValueOfInt64(int64(v)))
Damien Neilf0831e82020-01-21 14:25:12 -08004152 out.n = n
4153 return listv, out, nil
Damien Neile91877d2019-06-27 10:54:42 -07004154}
4155
Damien Neil68b81c32019-08-22 11:41:32 -07004156var coderSfixed64SliceValue = valueCoderFuncs{
4157 size: sizeSfixed64SliceValue,
4158 marshal: appendSfixed64SliceValue,
4159 unmarshal: consumeSfixed64SliceValue,
Damien Neilc37adef2019-04-01 13:49:56 -07004160}
4161
Damien Neil68b81c32019-08-22 11:41:32 -07004162// sizeSfixed64PackedSliceValue returns the size of wire encoding a []int64 value as a packed repeated Sfixed64.
4163func sizeSfixed64PackedSliceValue(listv protoreflect.Value, tagsize int, _ marshalOptions) (size int) {
4164 list := listv.List()
Damien Neil2c0824b2019-12-20 12:21:25 -08004165 llen := list.Len()
4166 if llen == 0 {
4167 return 0
4168 }
4169 n := llen * wire.SizeFixed64()
Damien Neil7492a092019-07-10 15:23:29 -07004170 return tagsize + wire.SizeBytes(n)
4171}
4172
Damien Neil68b81c32019-08-22 11:41:32 -07004173// appendSfixed64PackedSliceValue encodes a []int64 value as a packed repeated Sfixed64.
4174func appendSfixed64PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, _ marshalOptions) ([]byte, error) {
4175 list := listv.List()
4176 llen := list.Len()
4177 if llen == 0 {
Damien Neil7492a092019-07-10 15:23:29 -07004178 return b, nil
4179 }
4180 b = wire.AppendVarint(b, wiretag)
Damien Neil68b81c32019-08-22 11:41:32 -07004181 n := llen * wire.SizeFixed64()
Damien Neil7492a092019-07-10 15:23:29 -07004182 b = wire.AppendVarint(b, uint64(n))
Damien Neil68b81c32019-08-22 11:41:32 -07004183 for i := 0; i < llen; i++ {
4184 v := list.Get(i)
4185 b = wire.AppendFixed64(b, uint64(v.Int()))
Damien Neil7492a092019-07-10 15:23:29 -07004186 }
4187 return b, nil
4188}
4189
Damien Neil68b81c32019-08-22 11:41:32 -07004190var coderSfixed64PackedSliceValue = valueCoderFuncs{
4191 size: sizeSfixed64PackedSliceValue,
4192 marshal: appendSfixed64PackedSliceValue,
4193 unmarshal: consumeSfixed64SliceValue,
Damien Neil7492a092019-07-10 15:23:29 -07004194}
4195
Damien Neilc37adef2019-04-01 13:49:56 -07004196// sizeFixed64 returns the size of wire encoding a uint64 pointer as a Fixed64.
Damien Neil316febd2020-02-09 12:26:50 -08004197func sizeFixed64(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07004198
Damien Neil316febd2020-02-09 12:26:50 -08004199 return f.tagsize + wire.SizeFixed64()
Damien Neilc37adef2019-04-01 13:49:56 -07004200}
4201
4202// appendFixed64 wire encodes a uint64 pointer as a Fixed64.
Damien Neil316febd2020-02-09 12:26:50 -08004203func appendFixed64(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07004204 v := *p.Uint64()
Damien Neil316febd2020-02-09 12:26:50 -08004205 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07004206 b = wire.AppendFixed64(b, v)
4207 return b, nil
4208}
4209
Damien Neile91877d2019-06-27 10:54:42 -07004210// consumeFixed64 wire decodes a uint64 pointer as a Fixed64.
Damien Neil316febd2020-02-09 12:26:50 -08004211func consumeFixed64(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07004212 if wtyp != wire.Fixed64Type {
Damien Neilf0831e82020-01-21 14:25:12 -08004213 return out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07004214 }
4215 v, n := wire.ConsumeFixed64(b)
4216 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08004217 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07004218 }
4219 *p.Uint64() = v
Damien Neilf0831e82020-01-21 14:25:12 -08004220 out.n = n
4221 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -07004222}
4223
Damien Neilc37adef2019-04-01 13:49:56 -07004224var coderFixed64 = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07004225 size: sizeFixed64,
4226 marshal: appendFixed64,
4227 unmarshal: consumeFixed64,
Damien Neilc37adef2019-04-01 13:49:56 -07004228}
4229
Joe Tsaic51e2e02019-07-13 00:44:41 -07004230// sizeFixed64NoZero returns the size of wire encoding a uint64 pointer as a Fixed64.
Damien Neilc37adef2019-04-01 13:49:56 -07004231// The zero value is not encoded.
Damien Neil316febd2020-02-09 12:26:50 -08004232func sizeFixed64NoZero(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07004233 v := *p.Uint64()
4234 if v == 0 {
4235 return 0
4236 }
Damien Neil316febd2020-02-09 12:26:50 -08004237 return f.tagsize + wire.SizeFixed64()
Damien Neilc37adef2019-04-01 13:49:56 -07004238}
4239
Joe Tsaic51e2e02019-07-13 00:44:41 -07004240// appendFixed64NoZero wire encodes a uint64 pointer as a Fixed64.
Damien Neilc37adef2019-04-01 13:49:56 -07004241// The zero value is not encoded.
Damien Neil316febd2020-02-09 12:26:50 -08004242func appendFixed64NoZero(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07004243 v := *p.Uint64()
4244 if v == 0 {
4245 return b, nil
4246 }
Damien Neil316febd2020-02-09 12:26:50 -08004247 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07004248 b = wire.AppendFixed64(b, v)
4249 return b, nil
4250}
4251
4252var coderFixed64NoZero = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07004253 size: sizeFixed64NoZero,
4254 marshal: appendFixed64NoZero,
4255 unmarshal: consumeFixed64,
Damien Neilc37adef2019-04-01 13:49:56 -07004256}
4257
4258// sizeFixed64Ptr returns the size of wire encoding a *uint64 pointer as a Fixed64.
4259// It panics if the pointer is nil.
Damien Neil316febd2020-02-09 12:26:50 -08004260func sizeFixed64Ptr(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
4261 return f.tagsize + wire.SizeFixed64()
Damien Neilc37adef2019-04-01 13:49:56 -07004262}
4263
Damien Neile91877d2019-06-27 10:54:42 -07004264// appendFixed64Ptr wire encodes a *uint64 pointer as a Fixed64.
Damien Neilc37adef2019-04-01 13:49:56 -07004265// It panics if the pointer is nil.
Damien Neil316febd2020-02-09 12:26:50 -08004266func appendFixed64Ptr(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07004267 v := **p.Uint64Ptr()
Damien Neil316febd2020-02-09 12:26:50 -08004268 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07004269 b = wire.AppendFixed64(b, v)
4270 return b, nil
4271}
4272
Damien Neile91877d2019-06-27 10:54:42 -07004273// consumeFixed64Ptr wire decodes a *uint64 pointer as a Fixed64.
Damien Neil316febd2020-02-09 12:26:50 -08004274func consumeFixed64Ptr(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07004275 if wtyp != wire.Fixed64Type {
Damien Neilf0831e82020-01-21 14:25:12 -08004276 return out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07004277 }
4278 v, n := wire.ConsumeFixed64(b)
4279 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08004280 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07004281 }
4282 vp := p.Uint64Ptr()
4283 if *vp == nil {
4284 *vp = new(uint64)
4285 }
4286 **vp = v
Damien Neilf0831e82020-01-21 14:25:12 -08004287 out.n = n
4288 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -07004289}
4290
Damien Neilc37adef2019-04-01 13:49:56 -07004291var coderFixed64Ptr = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07004292 size: sizeFixed64Ptr,
4293 marshal: appendFixed64Ptr,
4294 unmarshal: consumeFixed64Ptr,
Damien Neilc37adef2019-04-01 13:49:56 -07004295}
4296
4297// sizeFixed64Slice returns the size of wire encoding a []uint64 pointer as a repeated Fixed64.
Damien Neil316febd2020-02-09 12:26:50 -08004298func sizeFixed64Slice(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07004299 s := *p.Uint64Slice()
Damien Neil316febd2020-02-09 12:26:50 -08004300 size = len(s) * (f.tagsize + wire.SizeFixed64())
Damien Neilc37adef2019-04-01 13:49:56 -07004301 return size
4302}
4303
4304// appendFixed64Slice encodes a []uint64 pointer as a repeated Fixed64.
Damien Neil316febd2020-02-09 12:26:50 -08004305func appendFixed64Slice(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07004306 s := *p.Uint64Slice()
4307 for _, v := range s {
Damien Neil316febd2020-02-09 12:26:50 -08004308 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07004309 b = wire.AppendFixed64(b, v)
4310 }
4311 return b, nil
4312}
4313
Damien Neile91877d2019-06-27 10:54:42 -07004314// consumeFixed64Slice wire decodes a []uint64 pointer as a repeated Fixed64.
Damien Neil316febd2020-02-09 12:26:50 -08004315func consumeFixed64Slice(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07004316 sp := p.Uint64Slice()
4317 if wtyp == wire.BytesType {
4318 s := *sp
Damien Neilf0831e82020-01-21 14:25:12 -08004319 b, n := wire.ConsumeBytes(b)
Damien Neile91877d2019-06-27 10:54:42 -07004320 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08004321 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07004322 }
4323 for len(b) > 0 {
4324 v, n := wire.ConsumeFixed64(b)
4325 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08004326 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07004327 }
4328 s = append(s, v)
4329 b = b[n:]
4330 }
4331 *sp = s
Damien Neilf0831e82020-01-21 14:25:12 -08004332 out.n = n
4333 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -07004334 }
4335 if wtyp != wire.Fixed64Type {
Damien Neilf0831e82020-01-21 14:25:12 -08004336 return out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07004337 }
4338 v, n := wire.ConsumeFixed64(b)
4339 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08004340 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07004341 }
4342 *sp = append(*sp, v)
Damien Neilf0831e82020-01-21 14:25:12 -08004343 out.n = n
4344 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -07004345}
4346
Damien Neilc37adef2019-04-01 13:49:56 -07004347var coderFixed64Slice = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07004348 size: sizeFixed64Slice,
4349 marshal: appendFixed64Slice,
4350 unmarshal: consumeFixed64Slice,
Damien Neilc37adef2019-04-01 13:49:56 -07004351}
4352
4353// sizeFixed64PackedSlice returns the size of wire encoding a []uint64 pointer as a packed repeated Fixed64.
Damien Neil316febd2020-02-09 12:26:50 -08004354func sizeFixed64PackedSlice(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07004355 s := *p.Uint64Slice()
4356 if len(s) == 0 {
4357 return 0
4358 }
4359 n := len(s) * wire.SizeFixed64()
Damien Neil316febd2020-02-09 12:26:50 -08004360 return f.tagsize + wire.SizeBytes(n)
Damien Neilc37adef2019-04-01 13:49:56 -07004361}
4362
4363// appendFixed64PackedSlice encodes a []uint64 pointer as a packed repeated Fixed64.
Damien Neil316febd2020-02-09 12:26:50 -08004364func appendFixed64PackedSlice(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07004365 s := *p.Uint64Slice()
4366 if len(s) == 0 {
4367 return b, nil
4368 }
Damien Neil316febd2020-02-09 12:26:50 -08004369 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07004370 n := len(s) * wire.SizeFixed64()
4371 b = wire.AppendVarint(b, uint64(n))
4372 for _, v := range s {
4373 b = wire.AppendFixed64(b, v)
4374 }
4375 return b, nil
4376}
4377
4378var coderFixed64PackedSlice = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07004379 size: sizeFixed64PackedSlice,
4380 marshal: appendFixed64PackedSlice,
4381 unmarshal: consumeFixed64Slice,
Damien Neilc37adef2019-04-01 13:49:56 -07004382}
4383
Damien Neil68b81c32019-08-22 11:41:32 -07004384// sizeFixed64Value returns the size of wire encoding a uint64 value as a Fixed64.
4385func sizeFixed64Value(v protoreflect.Value, tagsize int, _ marshalOptions) int {
Damien Neilc37adef2019-04-01 13:49:56 -07004386 return tagsize + wire.SizeFixed64()
4387}
4388
Damien Neil68b81c32019-08-22 11:41:32 -07004389// appendFixed64Value encodes a uint64 value as a Fixed64.
4390func appendFixed64Value(b []byte, v protoreflect.Value, wiretag uint64, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07004391 b = wire.AppendVarint(b, wiretag)
Damien Neil68b81c32019-08-22 11:41:32 -07004392 b = wire.AppendFixed64(b, v.Uint())
Damien Neilc37adef2019-04-01 13:49:56 -07004393 return b, nil
4394}
4395
Damien Neil68b81c32019-08-22 11:41:32 -07004396// consumeFixed64Value decodes a uint64 value as a Fixed64.
Damien Neilf0831e82020-01-21 14:25:12 -08004397func consumeFixed64Value(b []byte, _ protoreflect.Value, _ wire.Number, wtyp wire.Type, _ unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07004398 if wtyp != wire.Fixed64Type {
Damien Neilf0831e82020-01-21 14:25:12 -08004399 return protoreflect.Value{}, out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07004400 }
4401 v, n := wire.ConsumeFixed64(b)
4402 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08004403 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07004404 }
Damien Neilf0831e82020-01-21 14:25:12 -08004405 out.n = n
4406 return protoreflect.ValueOfUint64(v), out, nil
Damien Neile91877d2019-06-27 10:54:42 -07004407}
4408
Damien Neil68b81c32019-08-22 11:41:32 -07004409var coderFixed64Value = valueCoderFuncs{
4410 size: sizeFixed64Value,
4411 marshal: appendFixed64Value,
4412 unmarshal: consumeFixed64Value,
Damien Neilc37adef2019-04-01 13:49:56 -07004413}
4414
Damien Neil68b81c32019-08-22 11:41:32 -07004415// sizeFixed64SliceValue returns the size of wire encoding a []uint64 value as a repeated Fixed64.
4416func sizeFixed64SliceValue(listv protoreflect.Value, tagsize int, _ marshalOptions) (size int) {
4417 list := listv.List()
4418 size = list.Len() * (tagsize + wire.SizeFixed64())
Damien Neilc37adef2019-04-01 13:49:56 -07004419 return size
4420}
4421
Damien Neil68b81c32019-08-22 11:41:32 -07004422// appendFixed64SliceValue encodes a []uint64 value as a repeated Fixed64.
4423func appendFixed64SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, _ marshalOptions) ([]byte, error) {
4424 list := listv.List()
4425 for i, llen := 0, list.Len(); i < llen; i++ {
4426 v := list.Get(i)
Damien Neilc37adef2019-04-01 13:49:56 -07004427 b = wire.AppendVarint(b, wiretag)
Damien Neil68b81c32019-08-22 11:41:32 -07004428 b = wire.AppendFixed64(b, v.Uint())
Damien Neilc37adef2019-04-01 13:49:56 -07004429 }
4430 return b, nil
4431}
4432
Damien Neil68b81c32019-08-22 11:41:32 -07004433// consumeFixed64SliceValue wire decodes a []uint64 value as a repeated Fixed64.
Damien Neilf0831e82020-01-21 14:25:12 -08004434func consumeFixed64SliceValue(b []byte, listv protoreflect.Value, _ wire.Number, wtyp wire.Type, _ unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
Damien Neil68b81c32019-08-22 11:41:32 -07004435 list := listv.List()
Damien Neile91877d2019-06-27 10:54:42 -07004436 if wtyp == wire.BytesType {
Damien Neilf0831e82020-01-21 14:25:12 -08004437 b, n := wire.ConsumeBytes(b)
Damien Neile91877d2019-06-27 10:54:42 -07004438 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08004439 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07004440 }
4441 for len(b) > 0 {
4442 v, n := wire.ConsumeFixed64(b)
4443 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08004444 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07004445 }
Damien Neil68b81c32019-08-22 11:41:32 -07004446 list.Append(protoreflect.ValueOfUint64(v))
Damien Neile91877d2019-06-27 10:54:42 -07004447 b = b[n:]
4448 }
Damien Neilf0831e82020-01-21 14:25:12 -08004449 out.n = n
4450 return listv, out, nil
Damien Neile91877d2019-06-27 10:54:42 -07004451 }
4452 if wtyp != wire.Fixed64Type {
Damien Neilf0831e82020-01-21 14:25:12 -08004453 return protoreflect.Value{}, out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07004454 }
4455 v, n := wire.ConsumeFixed64(b)
4456 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08004457 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07004458 }
Damien Neil68b81c32019-08-22 11:41:32 -07004459 list.Append(protoreflect.ValueOfUint64(v))
Damien Neilf0831e82020-01-21 14:25:12 -08004460 out.n = n
4461 return listv, out, nil
Damien Neile91877d2019-06-27 10:54:42 -07004462}
4463
Damien Neil68b81c32019-08-22 11:41:32 -07004464var coderFixed64SliceValue = valueCoderFuncs{
4465 size: sizeFixed64SliceValue,
4466 marshal: appendFixed64SliceValue,
4467 unmarshal: consumeFixed64SliceValue,
Damien Neilc37adef2019-04-01 13:49:56 -07004468}
4469
Damien Neil68b81c32019-08-22 11:41:32 -07004470// sizeFixed64PackedSliceValue returns the size of wire encoding a []uint64 value as a packed repeated Fixed64.
4471func sizeFixed64PackedSliceValue(listv protoreflect.Value, tagsize int, _ marshalOptions) (size int) {
4472 list := listv.List()
Damien Neil2c0824b2019-12-20 12:21:25 -08004473 llen := list.Len()
4474 if llen == 0 {
4475 return 0
4476 }
4477 n := llen * wire.SizeFixed64()
Damien Neil7492a092019-07-10 15:23:29 -07004478 return tagsize + wire.SizeBytes(n)
4479}
4480
Damien Neil68b81c32019-08-22 11:41:32 -07004481// appendFixed64PackedSliceValue encodes a []uint64 value as a packed repeated Fixed64.
4482func appendFixed64PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, _ marshalOptions) ([]byte, error) {
4483 list := listv.List()
4484 llen := list.Len()
4485 if llen == 0 {
Damien Neil7492a092019-07-10 15:23:29 -07004486 return b, nil
4487 }
4488 b = wire.AppendVarint(b, wiretag)
Damien Neil68b81c32019-08-22 11:41:32 -07004489 n := llen * wire.SizeFixed64()
Damien Neil7492a092019-07-10 15:23:29 -07004490 b = wire.AppendVarint(b, uint64(n))
Damien Neil68b81c32019-08-22 11:41:32 -07004491 for i := 0; i < llen; i++ {
4492 v := list.Get(i)
4493 b = wire.AppendFixed64(b, v.Uint())
Damien Neil7492a092019-07-10 15:23:29 -07004494 }
4495 return b, nil
4496}
4497
Damien Neil68b81c32019-08-22 11:41:32 -07004498var coderFixed64PackedSliceValue = valueCoderFuncs{
4499 size: sizeFixed64PackedSliceValue,
4500 marshal: appendFixed64PackedSliceValue,
4501 unmarshal: consumeFixed64SliceValue,
Damien Neil7492a092019-07-10 15:23:29 -07004502}
4503
Damien Neilc37adef2019-04-01 13:49:56 -07004504// sizeDouble returns the size of wire encoding a float64 pointer as a Double.
Damien Neil316febd2020-02-09 12:26:50 -08004505func sizeDouble(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07004506
Damien Neil316febd2020-02-09 12:26:50 -08004507 return f.tagsize + wire.SizeFixed64()
Damien Neilc37adef2019-04-01 13:49:56 -07004508}
4509
4510// appendDouble wire encodes a float64 pointer as a Double.
Damien Neil316febd2020-02-09 12:26:50 -08004511func appendDouble(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07004512 v := *p.Float64()
Damien Neil316febd2020-02-09 12:26:50 -08004513 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07004514 b = wire.AppendFixed64(b, math.Float64bits(v))
4515 return b, nil
4516}
4517
Damien Neile91877d2019-06-27 10:54:42 -07004518// consumeDouble wire decodes a float64 pointer as a Double.
Damien Neil316febd2020-02-09 12:26:50 -08004519func consumeDouble(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07004520 if wtyp != wire.Fixed64Type {
Damien Neilf0831e82020-01-21 14:25:12 -08004521 return out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07004522 }
4523 v, n := wire.ConsumeFixed64(b)
4524 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08004525 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07004526 }
4527 *p.Float64() = math.Float64frombits(v)
Damien Neilf0831e82020-01-21 14:25:12 -08004528 out.n = n
4529 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -07004530}
4531
Damien Neilc37adef2019-04-01 13:49:56 -07004532var coderDouble = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07004533 size: sizeDouble,
4534 marshal: appendDouble,
4535 unmarshal: consumeDouble,
Damien Neilc37adef2019-04-01 13:49:56 -07004536}
4537
Joe Tsaic51e2e02019-07-13 00:44:41 -07004538// sizeDoubleNoZero returns the size of wire encoding a float64 pointer as a Double.
Damien Neilc37adef2019-04-01 13:49:56 -07004539// The zero value is not encoded.
Damien Neil316febd2020-02-09 12:26:50 -08004540func sizeDoubleNoZero(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07004541 v := *p.Float64()
4542 if v == 0 && !math.Signbit(float64(v)) {
4543 return 0
4544 }
Damien Neil316febd2020-02-09 12:26:50 -08004545 return f.tagsize + wire.SizeFixed64()
Damien Neilc37adef2019-04-01 13:49:56 -07004546}
4547
Joe Tsaic51e2e02019-07-13 00:44:41 -07004548// appendDoubleNoZero wire encodes a float64 pointer as a Double.
Damien Neilc37adef2019-04-01 13:49:56 -07004549// The zero value is not encoded.
Damien Neil316febd2020-02-09 12:26:50 -08004550func appendDoubleNoZero(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07004551 v := *p.Float64()
4552 if v == 0 && !math.Signbit(float64(v)) {
4553 return b, nil
4554 }
Damien Neil316febd2020-02-09 12:26:50 -08004555 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07004556 b = wire.AppendFixed64(b, math.Float64bits(v))
4557 return b, nil
4558}
4559
4560var coderDoubleNoZero = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07004561 size: sizeDoubleNoZero,
4562 marshal: appendDoubleNoZero,
4563 unmarshal: consumeDouble,
Damien Neilc37adef2019-04-01 13:49:56 -07004564}
4565
4566// sizeDoublePtr returns the size of wire encoding a *float64 pointer as a Double.
4567// It panics if the pointer is nil.
Damien Neil316febd2020-02-09 12:26:50 -08004568func sizeDoublePtr(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
4569 return f.tagsize + wire.SizeFixed64()
Damien Neilc37adef2019-04-01 13:49:56 -07004570}
4571
Damien Neile91877d2019-06-27 10:54:42 -07004572// appendDoublePtr wire encodes a *float64 pointer as a Double.
Damien Neilc37adef2019-04-01 13:49:56 -07004573// It panics if the pointer is nil.
Damien Neil316febd2020-02-09 12:26:50 -08004574func appendDoublePtr(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07004575 v := **p.Float64Ptr()
Damien Neil316febd2020-02-09 12:26:50 -08004576 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07004577 b = wire.AppendFixed64(b, math.Float64bits(v))
4578 return b, nil
4579}
4580
Damien Neile91877d2019-06-27 10:54:42 -07004581// consumeDoublePtr wire decodes a *float64 pointer as a Double.
Damien Neil316febd2020-02-09 12:26:50 -08004582func consumeDoublePtr(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07004583 if wtyp != wire.Fixed64Type {
Damien Neilf0831e82020-01-21 14:25:12 -08004584 return out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07004585 }
4586 v, n := wire.ConsumeFixed64(b)
4587 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08004588 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07004589 }
4590 vp := p.Float64Ptr()
4591 if *vp == nil {
4592 *vp = new(float64)
4593 }
4594 **vp = math.Float64frombits(v)
Damien Neilf0831e82020-01-21 14:25:12 -08004595 out.n = n
4596 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -07004597}
4598
Damien Neilc37adef2019-04-01 13:49:56 -07004599var coderDoublePtr = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07004600 size: sizeDoublePtr,
4601 marshal: appendDoublePtr,
4602 unmarshal: consumeDoublePtr,
Damien Neilc37adef2019-04-01 13:49:56 -07004603}
4604
4605// sizeDoubleSlice returns the size of wire encoding a []float64 pointer as a repeated Double.
Damien Neil316febd2020-02-09 12:26:50 -08004606func sizeDoubleSlice(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07004607 s := *p.Float64Slice()
Damien Neil316febd2020-02-09 12:26:50 -08004608 size = len(s) * (f.tagsize + wire.SizeFixed64())
Damien Neilc37adef2019-04-01 13:49:56 -07004609 return size
4610}
4611
4612// appendDoubleSlice encodes a []float64 pointer as a repeated Double.
Damien Neil316febd2020-02-09 12:26:50 -08004613func appendDoubleSlice(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07004614 s := *p.Float64Slice()
4615 for _, v := range s {
Damien Neil316febd2020-02-09 12:26:50 -08004616 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07004617 b = wire.AppendFixed64(b, math.Float64bits(v))
4618 }
4619 return b, nil
4620}
4621
Damien Neile91877d2019-06-27 10:54:42 -07004622// consumeDoubleSlice wire decodes a []float64 pointer as a repeated Double.
Damien Neil316febd2020-02-09 12:26:50 -08004623func consumeDoubleSlice(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07004624 sp := p.Float64Slice()
4625 if wtyp == wire.BytesType {
4626 s := *sp
Damien Neilf0831e82020-01-21 14:25:12 -08004627 b, n := wire.ConsumeBytes(b)
Damien Neile91877d2019-06-27 10:54:42 -07004628 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08004629 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07004630 }
4631 for len(b) > 0 {
4632 v, n := wire.ConsumeFixed64(b)
4633 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08004634 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07004635 }
4636 s = append(s, math.Float64frombits(v))
4637 b = b[n:]
4638 }
4639 *sp = s
Damien Neilf0831e82020-01-21 14:25:12 -08004640 out.n = n
4641 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -07004642 }
4643 if wtyp != wire.Fixed64Type {
Damien Neilf0831e82020-01-21 14:25:12 -08004644 return out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07004645 }
4646 v, n := wire.ConsumeFixed64(b)
4647 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08004648 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07004649 }
4650 *sp = append(*sp, math.Float64frombits(v))
Damien Neilf0831e82020-01-21 14:25:12 -08004651 out.n = n
4652 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -07004653}
4654
Damien Neilc37adef2019-04-01 13:49:56 -07004655var coderDoubleSlice = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07004656 size: sizeDoubleSlice,
4657 marshal: appendDoubleSlice,
4658 unmarshal: consumeDoubleSlice,
Damien Neilc37adef2019-04-01 13:49:56 -07004659}
4660
4661// sizeDoublePackedSlice returns the size of wire encoding a []float64 pointer as a packed repeated Double.
Damien Neil316febd2020-02-09 12:26:50 -08004662func sizeDoublePackedSlice(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07004663 s := *p.Float64Slice()
4664 if len(s) == 0 {
4665 return 0
4666 }
4667 n := len(s) * wire.SizeFixed64()
Damien Neil316febd2020-02-09 12:26:50 -08004668 return f.tagsize + wire.SizeBytes(n)
Damien Neilc37adef2019-04-01 13:49:56 -07004669}
4670
4671// appendDoublePackedSlice encodes a []float64 pointer as a packed repeated Double.
Damien Neil316febd2020-02-09 12:26:50 -08004672func appendDoublePackedSlice(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07004673 s := *p.Float64Slice()
4674 if len(s) == 0 {
4675 return b, nil
4676 }
Damien Neil316febd2020-02-09 12:26:50 -08004677 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07004678 n := len(s) * wire.SizeFixed64()
4679 b = wire.AppendVarint(b, uint64(n))
4680 for _, v := range s {
4681 b = wire.AppendFixed64(b, math.Float64bits(v))
4682 }
4683 return b, nil
4684}
4685
4686var coderDoublePackedSlice = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07004687 size: sizeDoublePackedSlice,
4688 marshal: appendDoublePackedSlice,
4689 unmarshal: consumeDoubleSlice,
Damien Neilc37adef2019-04-01 13:49:56 -07004690}
4691
Damien Neil68b81c32019-08-22 11:41:32 -07004692// sizeDoubleValue returns the size of wire encoding a float64 value as a Double.
4693func sizeDoubleValue(v protoreflect.Value, tagsize int, _ marshalOptions) int {
Damien Neilc37adef2019-04-01 13:49:56 -07004694 return tagsize + wire.SizeFixed64()
4695}
4696
Damien Neil68b81c32019-08-22 11:41:32 -07004697// appendDoubleValue encodes a float64 value as a Double.
4698func appendDoubleValue(b []byte, v protoreflect.Value, wiretag uint64, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07004699 b = wire.AppendVarint(b, wiretag)
Damien Neil68b81c32019-08-22 11:41:32 -07004700 b = wire.AppendFixed64(b, math.Float64bits(v.Float()))
Damien Neilc37adef2019-04-01 13:49:56 -07004701 return b, nil
4702}
4703
Damien Neil68b81c32019-08-22 11:41:32 -07004704// consumeDoubleValue decodes a float64 value as a Double.
Damien Neilf0831e82020-01-21 14:25:12 -08004705func consumeDoubleValue(b []byte, _ protoreflect.Value, _ wire.Number, wtyp wire.Type, _ unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07004706 if wtyp != wire.Fixed64Type {
Damien Neilf0831e82020-01-21 14:25:12 -08004707 return protoreflect.Value{}, out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07004708 }
4709 v, n := wire.ConsumeFixed64(b)
4710 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08004711 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07004712 }
Damien Neilf0831e82020-01-21 14:25:12 -08004713 out.n = n
4714 return protoreflect.ValueOfFloat64(math.Float64frombits(v)), out, nil
Damien Neile91877d2019-06-27 10:54:42 -07004715}
4716
Damien Neil68b81c32019-08-22 11:41:32 -07004717var coderDoubleValue = valueCoderFuncs{
4718 size: sizeDoubleValue,
4719 marshal: appendDoubleValue,
4720 unmarshal: consumeDoubleValue,
Damien Neilc37adef2019-04-01 13:49:56 -07004721}
4722
Damien Neil68b81c32019-08-22 11:41:32 -07004723// sizeDoubleSliceValue returns the size of wire encoding a []float64 value as a repeated Double.
4724func sizeDoubleSliceValue(listv protoreflect.Value, tagsize int, _ marshalOptions) (size int) {
4725 list := listv.List()
4726 size = list.Len() * (tagsize + wire.SizeFixed64())
Damien Neilc37adef2019-04-01 13:49:56 -07004727 return size
4728}
4729
Damien Neil68b81c32019-08-22 11:41:32 -07004730// appendDoubleSliceValue encodes a []float64 value as a repeated Double.
4731func appendDoubleSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, _ marshalOptions) ([]byte, error) {
4732 list := listv.List()
4733 for i, llen := 0, list.Len(); i < llen; i++ {
4734 v := list.Get(i)
Damien Neilc37adef2019-04-01 13:49:56 -07004735 b = wire.AppendVarint(b, wiretag)
Damien Neil68b81c32019-08-22 11:41:32 -07004736 b = wire.AppendFixed64(b, math.Float64bits(v.Float()))
Damien Neilc37adef2019-04-01 13:49:56 -07004737 }
4738 return b, nil
4739}
4740
Damien Neil68b81c32019-08-22 11:41:32 -07004741// consumeDoubleSliceValue wire decodes a []float64 value as a repeated Double.
Damien Neilf0831e82020-01-21 14:25:12 -08004742func consumeDoubleSliceValue(b []byte, listv protoreflect.Value, _ wire.Number, wtyp wire.Type, _ unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
Damien Neil68b81c32019-08-22 11:41:32 -07004743 list := listv.List()
Damien Neile91877d2019-06-27 10:54:42 -07004744 if wtyp == wire.BytesType {
Damien Neilf0831e82020-01-21 14:25:12 -08004745 b, n := wire.ConsumeBytes(b)
Damien Neile91877d2019-06-27 10:54:42 -07004746 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08004747 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07004748 }
4749 for len(b) > 0 {
4750 v, n := wire.ConsumeFixed64(b)
4751 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08004752 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07004753 }
Damien Neil68b81c32019-08-22 11:41:32 -07004754 list.Append(protoreflect.ValueOfFloat64(math.Float64frombits(v)))
Damien Neile91877d2019-06-27 10:54:42 -07004755 b = b[n:]
4756 }
Damien Neilf0831e82020-01-21 14:25:12 -08004757 out.n = n
4758 return listv, out, nil
Damien Neile91877d2019-06-27 10:54:42 -07004759 }
4760 if wtyp != wire.Fixed64Type {
Damien Neilf0831e82020-01-21 14:25:12 -08004761 return protoreflect.Value{}, out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07004762 }
4763 v, n := wire.ConsumeFixed64(b)
4764 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08004765 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07004766 }
Damien Neil68b81c32019-08-22 11:41:32 -07004767 list.Append(protoreflect.ValueOfFloat64(math.Float64frombits(v)))
Damien Neilf0831e82020-01-21 14:25:12 -08004768 out.n = n
4769 return listv, out, nil
Damien Neile91877d2019-06-27 10:54:42 -07004770}
4771
Damien Neil68b81c32019-08-22 11:41:32 -07004772var coderDoubleSliceValue = valueCoderFuncs{
4773 size: sizeDoubleSliceValue,
4774 marshal: appendDoubleSliceValue,
4775 unmarshal: consumeDoubleSliceValue,
Damien Neilc37adef2019-04-01 13:49:56 -07004776}
4777
Damien Neil68b81c32019-08-22 11:41:32 -07004778// sizeDoublePackedSliceValue returns the size of wire encoding a []float64 value as a packed repeated Double.
4779func sizeDoublePackedSliceValue(listv protoreflect.Value, tagsize int, _ marshalOptions) (size int) {
4780 list := listv.List()
Damien Neil2c0824b2019-12-20 12:21:25 -08004781 llen := list.Len()
4782 if llen == 0 {
4783 return 0
4784 }
4785 n := llen * wire.SizeFixed64()
Damien Neil7492a092019-07-10 15:23:29 -07004786 return tagsize + wire.SizeBytes(n)
4787}
4788
Damien Neil68b81c32019-08-22 11:41:32 -07004789// appendDoublePackedSliceValue encodes a []float64 value as a packed repeated Double.
4790func appendDoublePackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, _ marshalOptions) ([]byte, error) {
4791 list := listv.List()
4792 llen := list.Len()
4793 if llen == 0 {
Damien Neil7492a092019-07-10 15:23:29 -07004794 return b, nil
4795 }
4796 b = wire.AppendVarint(b, wiretag)
Damien Neil68b81c32019-08-22 11:41:32 -07004797 n := llen * wire.SizeFixed64()
Damien Neil7492a092019-07-10 15:23:29 -07004798 b = wire.AppendVarint(b, uint64(n))
Damien Neil68b81c32019-08-22 11:41:32 -07004799 for i := 0; i < llen; i++ {
4800 v := list.Get(i)
4801 b = wire.AppendFixed64(b, math.Float64bits(v.Float()))
Damien Neil7492a092019-07-10 15:23:29 -07004802 }
4803 return b, nil
4804}
4805
Damien Neil68b81c32019-08-22 11:41:32 -07004806var coderDoublePackedSliceValue = valueCoderFuncs{
4807 size: sizeDoublePackedSliceValue,
4808 marshal: appendDoublePackedSliceValue,
4809 unmarshal: consumeDoubleSliceValue,
Damien Neil7492a092019-07-10 15:23:29 -07004810}
4811
Damien Neilc37adef2019-04-01 13:49:56 -07004812// sizeString returns the size of wire encoding a string pointer as a String.
Damien Neil316febd2020-02-09 12:26:50 -08004813func sizeString(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07004814 v := *p.String()
Damien Neil316febd2020-02-09 12:26:50 -08004815 return f.tagsize + wire.SizeBytes(len(v))
Damien Neilc37adef2019-04-01 13:49:56 -07004816}
4817
4818// appendString wire encodes a string pointer as a String.
Damien Neil316febd2020-02-09 12:26:50 -08004819func appendString(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07004820 v := *p.String()
Damien Neil316febd2020-02-09 12:26:50 -08004821 b = wire.AppendVarint(b, f.wiretag)
Damien Neilcedb5952019-06-21 12:04:07 -07004822 b = wire.AppendString(b, v)
Damien Neilc37adef2019-04-01 13:49:56 -07004823 return b, nil
4824}
4825
Damien Neile91877d2019-06-27 10:54:42 -07004826// consumeString wire decodes a string pointer as a String.
Damien Neil316febd2020-02-09 12:26:50 -08004827func consumeString(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07004828 if wtyp != wire.BytesType {
Damien Neilf0831e82020-01-21 14:25:12 -08004829 return out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07004830 }
4831 v, n := wire.ConsumeString(b)
4832 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08004833 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07004834 }
4835 *p.String() = v
Damien Neilf0831e82020-01-21 14:25:12 -08004836 out.n = n
4837 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -07004838}
4839
Damien Neilc37adef2019-04-01 13:49:56 -07004840var coderString = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07004841 size: sizeString,
4842 marshal: appendString,
4843 unmarshal: consumeString,
Damien Neilc37adef2019-04-01 13:49:56 -07004844}
4845
Joe Tsaic51e2e02019-07-13 00:44:41 -07004846// appendStringValidateUTF8 wire encodes a string pointer as a String.
Damien Neil316febd2020-02-09 12:26:50 -08004847func appendStringValidateUTF8(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Joe Tsaic51e2e02019-07-13 00:44:41 -07004848 v := *p.String()
Damien Neil316febd2020-02-09 12:26:50 -08004849 b = wire.AppendVarint(b, f.wiretag)
Joe Tsaic51e2e02019-07-13 00:44:41 -07004850 b = wire.AppendString(b, v)
4851 if !utf8.ValidString(v) {
4852 return b, errInvalidUTF8{}
4853 }
4854 return b, nil
4855}
4856
4857// consumeStringValidateUTF8 wire decodes a string pointer as a String.
Damien Neil316febd2020-02-09 12:26:50 -08004858func consumeStringValidateUTF8(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Joe Tsaic51e2e02019-07-13 00:44:41 -07004859 if wtyp != wire.BytesType {
Damien Neilf0831e82020-01-21 14:25:12 -08004860 return out, errUnknown
Joe Tsaic51e2e02019-07-13 00:44:41 -07004861 }
4862 v, n := wire.ConsumeString(b)
4863 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08004864 return out, wire.ParseError(n)
Joe Tsaic51e2e02019-07-13 00:44:41 -07004865 }
4866 if !utf8.ValidString(v) {
Damien Neilf0831e82020-01-21 14:25:12 -08004867 return out, errInvalidUTF8{}
Joe Tsaic51e2e02019-07-13 00:44:41 -07004868 }
4869 *p.String() = v
Damien Neilf0831e82020-01-21 14:25:12 -08004870 out.n = n
4871 return out, nil
Joe Tsaic51e2e02019-07-13 00:44:41 -07004872}
4873
4874var coderStringValidateUTF8 = pointerCoderFuncs{
4875 size: sizeString,
4876 marshal: appendStringValidateUTF8,
4877 unmarshal: consumeStringValidateUTF8,
4878}
4879
4880// sizeStringNoZero returns the size of wire encoding a string pointer as a String.
Damien Neilc37adef2019-04-01 13:49:56 -07004881// The zero value is not encoded.
Damien Neil316febd2020-02-09 12:26:50 -08004882func sizeStringNoZero(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07004883 v := *p.String()
4884 if len(v) == 0 {
4885 return 0
4886 }
Damien Neil316febd2020-02-09 12:26:50 -08004887 return f.tagsize + wire.SizeBytes(len(v))
Damien Neilc37adef2019-04-01 13:49:56 -07004888}
4889
Joe Tsaic51e2e02019-07-13 00:44:41 -07004890// appendStringNoZero wire encodes a string pointer as a String.
Damien Neilc37adef2019-04-01 13:49:56 -07004891// The zero value is not encoded.
Damien Neil316febd2020-02-09 12:26:50 -08004892func appendStringNoZero(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07004893 v := *p.String()
4894 if len(v) == 0 {
4895 return b, nil
4896 }
Damien Neil316febd2020-02-09 12:26:50 -08004897 b = wire.AppendVarint(b, f.wiretag)
Damien Neilcedb5952019-06-21 12:04:07 -07004898 b = wire.AppendString(b, v)
Damien Neilc37adef2019-04-01 13:49:56 -07004899 return b, nil
4900}
4901
4902var coderStringNoZero = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07004903 size: sizeStringNoZero,
4904 marshal: appendStringNoZero,
4905 unmarshal: consumeString,
Damien Neilc37adef2019-04-01 13:49:56 -07004906}
4907
Joe Tsaic51e2e02019-07-13 00:44:41 -07004908// appendStringNoZeroValidateUTF8 wire encodes a string pointer as a String.
4909// The zero value is not encoded.
Damien Neil316febd2020-02-09 12:26:50 -08004910func appendStringNoZeroValidateUTF8(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Joe Tsaic51e2e02019-07-13 00:44:41 -07004911 v := *p.String()
4912 if len(v) == 0 {
4913 return b, nil
4914 }
Damien Neil316febd2020-02-09 12:26:50 -08004915 b = wire.AppendVarint(b, f.wiretag)
Joe Tsaic51e2e02019-07-13 00:44:41 -07004916 b = wire.AppendString(b, v)
4917 if !utf8.ValidString(v) {
4918 return b, errInvalidUTF8{}
4919 }
4920 return b, nil
4921}
4922
4923var coderStringNoZeroValidateUTF8 = pointerCoderFuncs{
4924 size: sizeStringNoZero,
4925 marshal: appendStringNoZeroValidateUTF8,
4926 unmarshal: consumeStringValidateUTF8,
4927}
4928
Damien Neilc37adef2019-04-01 13:49:56 -07004929// sizeStringPtr returns the size of wire encoding a *string pointer as a String.
4930// It panics if the pointer is nil.
Damien Neil316febd2020-02-09 12:26:50 -08004931func sizeStringPtr(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07004932 v := **p.StringPtr()
Damien Neil316febd2020-02-09 12:26:50 -08004933 return f.tagsize + wire.SizeBytes(len(v))
Damien Neilc37adef2019-04-01 13:49:56 -07004934}
4935
Damien Neile91877d2019-06-27 10:54:42 -07004936// appendStringPtr wire encodes a *string pointer as a String.
Damien Neilc37adef2019-04-01 13:49:56 -07004937// It panics if the pointer is nil.
Damien Neil316febd2020-02-09 12:26:50 -08004938func appendStringPtr(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07004939 v := **p.StringPtr()
Damien Neil316febd2020-02-09 12:26:50 -08004940 b = wire.AppendVarint(b, f.wiretag)
Damien Neilcedb5952019-06-21 12:04:07 -07004941 b = wire.AppendString(b, v)
Damien Neilc37adef2019-04-01 13:49:56 -07004942 return b, nil
4943}
4944
Damien Neile91877d2019-06-27 10:54:42 -07004945// consumeStringPtr wire decodes a *string pointer as a String.
Damien Neil316febd2020-02-09 12:26:50 -08004946func consumeStringPtr(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07004947 if wtyp != wire.BytesType {
Damien Neilf0831e82020-01-21 14:25:12 -08004948 return out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07004949 }
4950 v, n := wire.ConsumeString(b)
4951 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08004952 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07004953 }
4954 vp := p.StringPtr()
4955 if *vp == nil {
4956 *vp = new(string)
4957 }
4958 **vp = v
Damien Neilf0831e82020-01-21 14:25:12 -08004959 out.n = n
4960 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -07004961}
4962
Damien Neilc37adef2019-04-01 13:49:56 -07004963var coderStringPtr = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07004964 size: sizeStringPtr,
4965 marshal: appendStringPtr,
4966 unmarshal: consumeStringPtr,
Damien Neilc37adef2019-04-01 13:49:56 -07004967}
4968
4969// sizeStringSlice returns the size of wire encoding a []string pointer as a repeated String.
Damien Neil316febd2020-02-09 12:26:50 -08004970func sizeStringSlice(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07004971 s := *p.StringSlice()
4972 for _, v := range s {
Damien Neil316febd2020-02-09 12:26:50 -08004973 size += f.tagsize + wire.SizeBytes(len(v))
Damien Neilc37adef2019-04-01 13:49:56 -07004974 }
4975 return size
4976}
4977
4978// appendStringSlice encodes a []string pointer as a repeated String.
Damien Neil316febd2020-02-09 12:26:50 -08004979func appendStringSlice(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07004980 s := *p.StringSlice()
4981 for _, v := range s {
Damien Neil316febd2020-02-09 12:26:50 -08004982 b = wire.AppendVarint(b, f.wiretag)
Damien Neilcedb5952019-06-21 12:04:07 -07004983 b = wire.AppendString(b, v)
Damien Neilc37adef2019-04-01 13:49:56 -07004984 }
4985 return b, nil
4986}
4987
Damien Neile91877d2019-06-27 10:54:42 -07004988// consumeStringSlice wire decodes a []string pointer as a repeated String.
Damien Neil316febd2020-02-09 12:26:50 -08004989func consumeStringSlice(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07004990 sp := p.StringSlice()
4991 if wtyp != wire.BytesType {
Damien Neilf0831e82020-01-21 14:25:12 -08004992 return out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07004993 }
4994 v, n := wire.ConsumeString(b)
4995 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08004996 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07004997 }
4998 *sp = append(*sp, v)
Damien Neilf0831e82020-01-21 14:25:12 -08004999 out.n = n
5000 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -07005001}
5002
Damien Neilc37adef2019-04-01 13:49:56 -07005003var coderStringSlice = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07005004 size: sizeStringSlice,
5005 marshal: appendStringSlice,
5006 unmarshal: consumeStringSlice,
Damien Neilc37adef2019-04-01 13:49:56 -07005007}
5008
Joe Tsaic51e2e02019-07-13 00:44:41 -07005009// appendStringSliceValidateUTF8 encodes a []string pointer as a repeated String.
Damien Neil316febd2020-02-09 12:26:50 -08005010func appendStringSliceValidateUTF8(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Joe Tsaic51e2e02019-07-13 00:44:41 -07005011 s := *p.StringSlice()
5012 for _, v := range s {
Damien Neil316febd2020-02-09 12:26:50 -08005013 b = wire.AppendVarint(b, f.wiretag)
Joe Tsaic51e2e02019-07-13 00:44:41 -07005014 b = wire.AppendString(b, v)
5015 if !utf8.ValidString(v) {
5016 return b, errInvalidUTF8{}
5017 }
5018 }
5019 return b, nil
5020}
5021
5022// consumeStringSliceValidateUTF8 wire decodes a []string pointer as a repeated String.
Damien Neil316febd2020-02-09 12:26:50 -08005023func consumeStringSliceValidateUTF8(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Joe Tsaic51e2e02019-07-13 00:44:41 -07005024 sp := p.StringSlice()
5025 if wtyp != wire.BytesType {
Damien Neilf0831e82020-01-21 14:25:12 -08005026 return out, errUnknown
Joe Tsaic51e2e02019-07-13 00:44:41 -07005027 }
5028 v, n := wire.ConsumeString(b)
5029 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08005030 return out, wire.ParseError(n)
Joe Tsaic51e2e02019-07-13 00:44:41 -07005031 }
5032 if !utf8.ValidString(v) {
Damien Neilf0831e82020-01-21 14:25:12 -08005033 return out, errInvalidUTF8{}
Joe Tsaic51e2e02019-07-13 00:44:41 -07005034 }
5035 *sp = append(*sp, v)
Damien Neilf0831e82020-01-21 14:25:12 -08005036 out.n = n
5037 return out, nil
Joe Tsaic51e2e02019-07-13 00:44:41 -07005038}
5039
5040var coderStringSliceValidateUTF8 = pointerCoderFuncs{
5041 size: sizeStringSlice,
5042 marshal: appendStringSliceValidateUTF8,
5043 unmarshal: consumeStringSliceValidateUTF8,
5044}
5045
Damien Neil68b81c32019-08-22 11:41:32 -07005046// sizeStringValue returns the size of wire encoding a string value as a String.
5047func sizeStringValue(v protoreflect.Value, tagsize int, _ marshalOptions) int {
5048 return tagsize + wire.SizeBytes(len(v.String()))
Damien Neilc37adef2019-04-01 13:49:56 -07005049}
5050
Damien Neil68b81c32019-08-22 11:41:32 -07005051// appendStringValue encodes a string value as a String.
5052func appendStringValue(b []byte, v protoreflect.Value, wiretag uint64, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07005053 b = wire.AppendVarint(b, wiretag)
Damien Neil68b81c32019-08-22 11:41:32 -07005054 b = wire.AppendString(b, v.String())
Damien Neilc37adef2019-04-01 13:49:56 -07005055 return b, nil
5056}
5057
Damien Neil68b81c32019-08-22 11:41:32 -07005058// consumeStringValue decodes a string value as a String.
Damien Neilf0831e82020-01-21 14:25:12 -08005059func consumeStringValue(b []byte, _ protoreflect.Value, _ wire.Number, wtyp wire.Type, _ unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07005060 if wtyp != wire.BytesType {
Damien Neilf0831e82020-01-21 14:25:12 -08005061 return protoreflect.Value{}, out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07005062 }
5063 v, n := wire.ConsumeString(b)
5064 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08005065 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07005066 }
Damien Neilf0831e82020-01-21 14:25:12 -08005067 out.n = n
5068 return protoreflect.ValueOfString(string(v)), out, nil
Damien Neile91877d2019-06-27 10:54:42 -07005069}
5070
Damien Neil68b81c32019-08-22 11:41:32 -07005071var coderStringValue = valueCoderFuncs{
5072 size: sizeStringValue,
5073 marshal: appendStringValue,
5074 unmarshal: consumeStringValue,
Damien Neilc37adef2019-04-01 13:49:56 -07005075}
5076
Damien Neil68b81c32019-08-22 11:41:32 -07005077// appendStringValueValidateUTF8 encodes a string value as a String.
5078func appendStringValueValidateUTF8(b []byte, v protoreflect.Value, wiretag uint64, _ marshalOptions) ([]byte, error) {
Joe Tsaic51e2e02019-07-13 00:44:41 -07005079 b = wire.AppendVarint(b, wiretag)
Damien Neil68b81c32019-08-22 11:41:32 -07005080 b = wire.AppendString(b, v.String())
5081 if !utf8.ValidString(v.String()) {
Joe Tsaic51e2e02019-07-13 00:44:41 -07005082 return b, errInvalidUTF8{}
5083 }
5084 return b, nil
5085}
5086
Damien Neil68b81c32019-08-22 11:41:32 -07005087// consumeStringValueValidateUTF8 decodes a string value as a String.
Damien Neilf0831e82020-01-21 14:25:12 -08005088func consumeStringValueValidateUTF8(b []byte, _ protoreflect.Value, _ wire.Number, wtyp wire.Type, _ unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
Joe Tsaic51e2e02019-07-13 00:44:41 -07005089 if wtyp != wire.BytesType {
Damien Neilf0831e82020-01-21 14:25:12 -08005090 return protoreflect.Value{}, out, errUnknown
Joe Tsaic51e2e02019-07-13 00:44:41 -07005091 }
5092 v, n := wire.ConsumeString(b)
5093 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08005094 return protoreflect.Value{}, out, wire.ParseError(n)
Joe Tsaic51e2e02019-07-13 00:44:41 -07005095 }
5096 if !utf8.ValidString(v) {
Damien Neilf0831e82020-01-21 14:25:12 -08005097 return protoreflect.Value{}, out, errInvalidUTF8{}
Joe Tsaic51e2e02019-07-13 00:44:41 -07005098 }
Damien Neilf0831e82020-01-21 14:25:12 -08005099 out.n = n
5100 return protoreflect.ValueOfString(string(v)), out, nil
Joe Tsaic51e2e02019-07-13 00:44:41 -07005101}
5102
Damien Neil68b81c32019-08-22 11:41:32 -07005103var coderStringValueValidateUTF8 = valueCoderFuncs{
5104 size: sizeStringValue,
5105 marshal: appendStringValueValidateUTF8,
5106 unmarshal: consumeStringValueValidateUTF8,
Joe Tsaic51e2e02019-07-13 00:44:41 -07005107}
5108
Damien Neil68b81c32019-08-22 11:41:32 -07005109// sizeStringSliceValue returns the size of wire encoding a []string value as a repeated String.
5110func sizeStringSliceValue(listv protoreflect.Value, tagsize int, _ marshalOptions) (size int) {
5111 list := listv.List()
5112 for i, llen := 0, list.Len(); i < llen; i++ {
5113 v := list.Get(i)
5114 size += tagsize + wire.SizeBytes(len(v.String()))
Damien Neilc37adef2019-04-01 13:49:56 -07005115 }
5116 return size
5117}
5118
Damien Neil68b81c32019-08-22 11:41:32 -07005119// appendStringSliceValue encodes a []string value as a repeated String.
5120func appendStringSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, _ marshalOptions) ([]byte, error) {
5121 list := listv.List()
5122 for i, llen := 0, list.Len(); i < llen; i++ {
5123 v := list.Get(i)
Damien Neilc37adef2019-04-01 13:49:56 -07005124 b = wire.AppendVarint(b, wiretag)
Damien Neil68b81c32019-08-22 11:41:32 -07005125 b = wire.AppendString(b, v.String())
Damien Neilc37adef2019-04-01 13:49:56 -07005126 }
5127 return b, nil
5128}
5129
Damien Neil68b81c32019-08-22 11:41:32 -07005130// consumeStringSliceValue wire decodes a []string value as a repeated String.
Damien Neilf0831e82020-01-21 14:25:12 -08005131func consumeStringSliceValue(b []byte, listv protoreflect.Value, _ wire.Number, wtyp wire.Type, _ unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
Damien Neil68b81c32019-08-22 11:41:32 -07005132 list := listv.List()
Damien Neile91877d2019-06-27 10:54:42 -07005133 if wtyp != wire.BytesType {
Damien Neilf0831e82020-01-21 14:25:12 -08005134 return protoreflect.Value{}, out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07005135 }
5136 v, n := wire.ConsumeString(b)
5137 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08005138 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07005139 }
Damien Neil68b81c32019-08-22 11:41:32 -07005140 list.Append(protoreflect.ValueOfString(string(v)))
Damien Neilf0831e82020-01-21 14:25:12 -08005141 out.n = n
5142 return listv, out, nil
Damien Neile91877d2019-06-27 10:54:42 -07005143}
5144
Damien Neil68b81c32019-08-22 11:41:32 -07005145var coderStringSliceValue = valueCoderFuncs{
5146 size: sizeStringSliceValue,
5147 marshal: appendStringSliceValue,
5148 unmarshal: consumeStringSliceValue,
Damien Neilc37adef2019-04-01 13:49:56 -07005149}
5150
5151// sizeBytes returns the size of wire encoding a []byte pointer as a Bytes.
Damien Neil316febd2020-02-09 12:26:50 -08005152func sizeBytes(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07005153 v := *p.Bytes()
Damien Neil316febd2020-02-09 12:26:50 -08005154 return f.tagsize + wire.SizeBytes(len(v))
Damien Neilc37adef2019-04-01 13:49:56 -07005155}
5156
5157// appendBytes wire encodes a []byte pointer as a Bytes.
Damien Neil316febd2020-02-09 12:26:50 -08005158func appendBytes(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07005159 v := *p.Bytes()
Damien Neil316febd2020-02-09 12:26:50 -08005160 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07005161 b = wire.AppendBytes(b, v)
5162 return b, nil
5163}
5164
Damien Neile91877d2019-06-27 10:54:42 -07005165// consumeBytes wire decodes a []byte pointer as a Bytes.
Damien Neil316febd2020-02-09 12:26:50 -08005166func consumeBytes(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07005167 if wtyp != wire.BytesType {
Damien Neilf0831e82020-01-21 14:25:12 -08005168 return out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07005169 }
5170 v, n := wire.ConsumeBytes(b)
5171 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08005172 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07005173 }
Damien Neil8003f082019-08-02 15:13:00 -07005174 *p.Bytes() = append(emptyBuf[:], v...)
Damien Neilf0831e82020-01-21 14:25:12 -08005175 out.n = n
5176 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -07005177}
5178
Damien Neilc37adef2019-04-01 13:49:56 -07005179var coderBytes = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07005180 size: sizeBytes,
5181 marshal: appendBytes,
5182 unmarshal: consumeBytes,
Damien Neilc37adef2019-04-01 13:49:56 -07005183}
5184
Joe Tsaic51e2e02019-07-13 00:44:41 -07005185// appendBytesValidateUTF8 wire encodes a []byte pointer as a Bytes.
Damien Neil316febd2020-02-09 12:26:50 -08005186func appendBytesValidateUTF8(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Joe Tsaic51e2e02019-07-13 00:44:41 -07005187 v := *p.Bytes()
Damien Neil316febd2020-02-09 12:26:50 -08005188 b = wire.AppendVarint(b, f.wiretag)
Joe Tsaic51e2e02019-07-13 00:44:41 -07005189 b = wire.AppendBytes(b, v)
5190 if !utf8.Valid(v) {
5191 return b, errInvalidUTF8{}
5192 }
5193 return b, nil
5194}
5195
5196// consumeBytesValidateUTF8 wire decodes a []byte pointer as a Bytes.
Damien Neil316febd2020-02-09 12:26:50 -08005197func consumeBytesValidateUTF8(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Joe Tsaic51e2e02019-07-13 00:44:41 -07005198 if wtyp != wire.BytesType {
Damien Neilf0831e82020-01-21 14:25:12 -08005199 return out, errUnknown
Joe Tsaic51e2e02019-07-13 00:44:41 -07005200 }
5201 v, n := wire.ConsumeBytes(b)
5202 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08005203 return out, wire.ParseError(n)
Joe Tsaic51e2e02019-07-13 00:44:41 -07005204 }
5205 if !utf8.Valid(v) {
Damien Neilf0831e82020-01-21 14:25:12 -08005206 return out, errInvalidUTF8{}
Joe Tsaic51e2e02019-07-13 00:44:41 -07005207 }
Damien Neil8003f082019-08-02 15:13:00 -07005208 *p.Bytes() = append(emptyBuf[:], v...)
Damien Neilf0831e82020-01-21 14:25:12 -08005209 out.n = n
5210 return out, nil
Joe Tsaic51e2e02019-07-13 00:44:41 -07005211}
5212
5213var coderBytesValidateUTF8 = pointerCoderFuncs{
5214 size: sizeBytes,
5215 marshal: appendBytesValidateUTF8,
5216 unmarshal: consumeBytesValidateUTF8,
5217}
5218
5219// sizeBytesNoZero returns the size of wire encoding a []byte pointer as a Bytes.
Damien Neilc37adef2019-04-01 13:49:56 -07005220// The zero value is not encoded.
Damien Neil316febd2020-02-09 12:26:50 -08005221func sizeBytesNoZero(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07005222 v := *p.Bytes()
5223 if len(v) == 0 {
5224 return 0
5225 }
Damien Neil316febd2020-02-09 12:26:50 -08005226 return f.tagsize + wire.SizeBytes(len(v))
Damien Neilc37adef2019-04-01 13:49:56 -07005227}
5228
Joe Tsaic51e2e02019-07-13 00:44:41 -07005229// appendBytesNoZero wire encodes a []byte pointer as a Bytes.
Damien Neilc37adef2019-04-01 13:49:56 -07005230// The zero value is not encoded.
Damien Neil316febd2020-02-09 12:26:50 -08005231func appendBytesNoZero(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07005232 v := *p.Bytes()
5233 if len(v) == 0 {
5234 return b, nil
5235 }
Damien Neil316febd2020-02-09 12:26:50 -08005236 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07005237 b = wire.AppendBytes(b, v)
5238 return b, nil
5239}
5240
Damien Neil8003f082019-08-02 15:13:00 -07005241// consumeBytesNoZero wire decodes a []byte pointer as a Bytes.
5242// The zero value is not decoded.
Damien Neil316febd2020-02-09 12:26:50 -08005243func consumeBytesNoZero(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Damien Neil8003f082019-08-02 15:13:00 -07005244 if wtyp != wire.BytesType {
Damien Neilf0831e82020-01-21 14:25:12 -08005245 return out, errUnknown
Damien Neil8003f082019-08-02 15:13:00 -07005246 }
5247 v, n := wire.ConsumeBytes(b)
5248 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08005249 return out, wire.ParseError(n)
Damien Neil8003f082019-08-02 15:13:00 -07005250 }
5251 *p.Bytes() = append(([]byte)(nil), v...)
Damien Neilf0831e82020-01-21 14:25:12 -08005252 out.n = n
5253 return out, nil
Damien Neil8003f082019-08-02 15:13:00 -07005254}
5255
Damien Neilc37adef2019-04-01 13:49:56 -07005256var coderBytesNoZero = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07005257 size: sizeBytesNoZero,
5258 marshal: appendBytesNoZero,
Damien Neil8003f082019-08-02 15:13:00 -07005259 unmarshal: consumeBytesNoZero,
Damien Neilc37adef2019-04-01 13:49:56 -07005260}
5261
Joe Tsaic51e2e02019-07-13 00:44:41 -07005262// appendBytesNoZeroValidateUTF8 wire encodes a []byte pointer as a Bytes.
5263// The zero value is not encoded.
Damien Neil316febd2020-02-09 12:26:50 -08005264func appendBytesNoZeroValidateUTF8(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Joe Tsaic51e2e02019-07-13 00:44:41 -07005265 v := *p.Bytes()
5266 if len(v) == 0 {
5267 return b, nil
5268 }
Damien Neil316febd2020-02-09 12:26:50 -08005269 b = wire.AppendVarint(b, f.wiretag)
Joe Tsaic51e2e02019-07-13 00:44:41 -07005270 b = wire.AppendBytes(b, v)
5271 if !utf8.Valid(v) {
5272 return b, errInvalidUTF8{}
5273 }
5274 return b, nil
5275}
5276
Damien Neil8003f082019-08-02 15:13:00 -07005277// consumeBytesNoZeroValidateUTF8 wire decodes a []byte pointer as a Bytes.
Damien Neil316febd2020-02-09 12:26:50 -08005278func consumeBytesNoZeroValidateUTF8(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Damien Neil8003f082019-08-02 15:13:00 -07005279 if wtyp != wire.BytesType {
Damien Neilf0831e82020-01-21 14:25:12 -08005280 return out, errUnknown
Damien Neil8003f082019-08-02 15:13:00 -07005281 }
5282 v, n := wire.ConsumeBytes(b)
5283 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08005284 return out, wire.ParseError(n)
Damien Neil8003f082019-08-02 15:13:00 -07005285 }
5286 if !utf8.Valid(v) {
Damien Neilf0831e82020-01-21 14:25:12 -08005287 return out, errInvalidUTF8{}
Damien Neil8003f082019-08-02 15:13:00 -07005288 }
5289 *p.Bytes() = append(([]byte)(nil), v...)
Damien Neilf0831e82020-01-21 14:25:12 -08005290 out.n = n
5291 return out, nil
Damien Neil8003f082019-08-02 15:13:00 -07005292}
5293
Joe Tsaic51e2e02019-07-13 00:44:41 -07005294var coderBytesNoZeroValidateUTF8 = pointerCoderFuncs{
5295 size: sizeBytesNoZero,
5296 marshal: appendBytesNoZeroValidateUTF8,
Damien Neil8003f082019-08-02 15:13:00 -07005297 unmarshal: consumeBytesNoZeroValidateUTF8,
Joe Tsaic51e2e02019-07-13 00:44:41 -07005298}
5299
Damien Neilc37adef2019-04-01 13:49:56 -07005300// sizeBytesSlice returns the size of wire encoding a [][]byte pointer as a repeated Bytes.
Damien Neil316febd2020-02-09 12:26:50 -08005301func sizeBytesSlice(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
Damien Neilc37adef2019-04-01 13:49:56 -07005302 s := *p.BytesSlice()
5303 for _, v := range s {
Damien Neil316febd2020-02-09 12:26:50 -08005304 size += f.tagsize + wire.SizeBytes(len(v))
Damien Neilc37adef2019-04-01 13:49:56 -07005305 }
5306 return size
5307}
5308
5309// appendBytesSlice encodes a [][]byte pointer as a repeated Bytes.
Damien Neil316febd2020-02-09 12:26:50 -08005310func appendBytesSlice(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07005311 s := *p.BytesSlice()
5312 for _, v := range s {
Damien Neil316febd2020-02-09 12:26:50 -08005313 b = wire.AppendVarint(b, f.wiretag)
Damien Neilc37adef2019-04-01 13:49:56 -07005314 b = wire.AppendBytes(b, v)
5315 }
5316 return b, nil
5317}
5318
Damien Neile91877d2019-06-27 10:54:42 -07005319// consumeBytesSlice wire decodes a [][]byte pointer as a repeated Bytes.
Damien Neil316febd2020-02-09 12:26:50 -08005320func consumeBytesSlice(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07005321 sp := p.BytesSlice()
5322 if wtyp != wire.BytesType {
Damien Neilf0831e82020-01-21 14:25:12 -08005323 return out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07005324 }
5325 v, n := wire.ConsumeBytes(b)
5326 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08005327 return out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07005328 }
Damien Neil8003f082019-08-02 15:13:00 -07005329 *sp = append(*sp, append(emptyBuf[:], v...))
Damien Neilf0831e82020-01-21 14:25:12 -08005330 out.n = n
5331 return out, nil
Damien Neile91877d2019-06-27 10:54:42 -07005332}
5333
Damien Neilc37adef2019-04-01 13:49:56 -07005334var coderBytesSlice = pointerCoderFuncs{
Damien Neile91877d2019-06-27 10:54:42 -07005335 size: sizeBytesSlice,
5336 marshal: appendBytesSlice,
5337 unmarshal: consumeBytesSlice,
Damien Neilc37adef2019-04-01 13:49:56 -07005338}
5339
Joe Tsaic51e2e02019-07-13 00:44:41 -07005340// appendBytesSliceValidateUTF8 encodes a [][]byte pointer as a repeated Bytes.
Damien Neil316febd2020-02-09 12:26:50 -08005341func appendBytesSliceValidateUTF8(b []byte, p pointer, f *coderFieldInfo, _ marshalOptions) ([]byte, error) {
Joe Tsaic51e2e02019-07-13 00:44:41 -07005342 s := *p.BytesSlice()
5343 for _, v := range s {
Damien Neil316febd2020-02-09 12:26:50 -08005344 b = wire.AppendVarint(b, f.wiretag)
Joe Tsaic51e2e02019-07-13 00:44:41 -07005345 b = wire.AppendBytes(b, v)
5346 if !utf8.Valid(v) {
5347 return b, errInvalidUTF8{}
5348 }
5349 }
5350 return b, nil
5351}
5352
5353// consumeBytesSliceValidateUTF8 wire decodes a [][]byte pointer as a repeated Bytes.
Damien Neil316febd2020-02-09 12:26:50 -08005354func consumeBytesSliceValidateUTF8(b []byte, p pointer, wtyp wire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
Joe Tsaic51e2e02019-07-13 00:44:41 -07005355 sp := p.BytesSlice()
5356 if wtyp != wire.BytesType {
Damien Neilf0831e82020-01-21 14:25:12 -08005357 return out, errUnknown
Joe Tsaic51e2e02019-07-13 00:44:41 -07005358 }
5359 v, n := wire.ConsumeBytes(b)
5360 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08005361 return out, wire.ParseError(n)
Joe Tsaic51e2e02019-07-13 00:44:41 -07005362 }
5363 if !utf8.Valid(v) {
Damien Neilf0831e82020-01-21 14:25:12 -08005364 return out, errInvalidUTF8{}
Joe Tsaic51e2e02019-07-13 00:44:41 -07005365 }
Damien Neil8003f082019-08-02 15:13:00 -07005366 *sp = append(*sp, append(emptyBuf[:], v...))
Damien Neilf0831e82020-01-21 14:25:12 -08005367 out.n = n
5368 return out, nil
Joe Tsaic51e2e02019-07-13 00:44:41 -07005369}
5370
5371var coderBytesSliceValidateUTF8 = pointerCoderFuncs{
5372 size: sizeBytesSlice,
5373 marshal: appendBytesSliceValidateUTF8,
5374 unmarshal: consumeBytesSliceValidateUTF8,
5375}
5376
Damien Neil68b81c32019-08-22 11:41:32 -07005377// sizeBytesValue returns the size of wire encoding a []byte value as a Bytes.
5378func sizeBytesValue(v protoreflect.Value, tagsize int, _ marshalOptions) int {
5379 return tagsize + wire.SizeBytes(len(v.Bytes()))
Damien Neilc37adef2019-04-01 13:49:56 -07005380}
5381
Damien Neil68b81c32019-08-22 11:41:32 -07005382// appendBytesValue encodes a []byte value as a Bytes.
5383func appendBytesValue(b []byte, v protoreflect.Value, wiretag uint64, _ marshalOptions) ([]byte, error) {
Damien Neilc37adef2019-04-01 13:49:56 -07005384 b = wire.AppendVarint(b, wiretag)
Damien Neil68b81c32019-08-22 11:41:32 -07005385 b = wire.AppendBytes(b, v.Bytes())
Damien Neilc37adef2019-04-01 13:49:56 -07005386 return b, nil
5387}
5388
Damien Neil68b81c32019-08-22 11:41:32 -07005389// consumeBytesValue decodes a []byte value as a Bytes.
Damien Neilf0831e82020-01-21 14:25:12 -08005390func consumeBytesValue(b []byte, _ protoreflect.Value, _ wire.Number, wtyp wire.Type, _ unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
Damien Neile91877d2019-06-27 10:54:42 -07005391 if wtyp != wire.BytesType {
Damien Neilf0831e82020-01-21 14:25:12 -08005392 return protoreflect.Value{}, out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07005393 }
5394 v, n := wire.ConsumeBytes(b)
5395 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08005396 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07005397 }
Damien Neilf0831e82020-01-21 14:25:12 -08005398 out.n = n
5399 return protoreflect.ValueOfBytes(append(emptyBuf[:], v...)), out, nil
Damien Neile91877d2019-06-27 10:54:42 -07005400}
5401
Damien Neil68b81c32019-08-22 11:41:32 -07005402var coderBytesValue = valueCoderFuncs{
5403 size: sizeBytesValue,
5404 marshal: appendBytesValue,
5405 unmarshal: consumeBytesValue,
Damien Neilc37adef2019-04-01 13:49:56 -07005406}
5407
Damien Neil68b81c32019-08-22 11:41:32 -07005408// sizeBytesSliceValue returns the size of wire encoding a [][]byte value as a repeated Bytes.
5409func sizeBytesSliceValue(listv protoreflect.Value, tagsize int, _ marshalOptions) (size int) {
5410 list := listv.List()
5411 for i, llen := 0, list.Len(); i < llen; i++ {
5412 v := list.Get(i)
5413 size += tagsize + wire.SizeBytes(len(v.Bytes()))
Damien Neilc37adef2019-04-01 13:49:56 -07005414 }
5415 return size
5416}
5417
Damien Neil68b81c32019-08-22 11:41:32 -07005418// appendBytesSliceValue encodes a [][]byte value as a repeated Bytes.
5419func appendBytesSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, _ marshalOptions) ([]byte, error) {
5420 list := listv.List()
5421 for i, llen := 0, list.Len(); i < llen; i++ {
5422 v := list.Get(i)
Damien Neilc37adef2019-04-01 13:49:56 -07005423 b = wire.AppendVarint(b, wiretag)
Damien Neil68b81c32019-08-22 11:41:32 -07005424 b = wire.AppendBytes(b, v.Bytes())
Damien Neilc37adef2019-04-01 13:49:56 -07005425 }
5426 return b, nil
5427}
5428
Damien Neil68b81c32019-08-22 11:41:32 -07005429// consumeBytesSliceValue wire decodes a [][]byte value as a repeated Bytes.
Damien Neilf0831e82020-01-21 14:25:12 -08005430func consumeBytesSliceValue(b []byte, listv protoreflect.Value, _ wire.Number, wtyp wire.Type, _ unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
Damien Neil68b81c32019-08-22 11:41:32 -07005431 list := listv.List()
Damien Neile91877d2019-06-27 10:54:42 -07005432 if wtyp != wire.BytesType {
Damien Neilf0831e82020-01-21 14:25:12 -08005433 return protoreflect.Value{}, out, errUnknown
Damien Neile91877d2019-06-27 10:54:42 -07005434 }
5435 v, n := wire.ConsumeBytes(b)
5436 if n < 0 {
Damien Neilf0831e82020-01-21 14:25:12 -08005437 return protoreflect.Value{}, out, wire.ParseError(n)
Damien Neile91877d2019-06-27 10:54:42 -07005438 }
Damien Neil5366f822019-12-05 14:54:35 -08005439 list.Append(protoreflect.ValueOfBytes(append(emptyBuf[:], v...)))
Damien Neilf0831e82020-01-21 14:25:12 -08005440 out.n = n
5441 return listv, out, nil
Damien Neile91877d2019-06-27 10:54:42 -07005442}
5443
Damien Neil68b81c32019-08-22 11:41:32 -07005444var coderBytesSliceValue = valueCoderFuncs{
5445 size: sizeBytesSliceValue,
5446 marshal: appendBytesSliceValue,
5447 unmarshal: consumeBytesSliceValue,
Damien Neilc37adef2019-04-01 13:49:56 -07005448}
5449
Damien Neil8003f082019-08-02 15:13:00 -07005450// We append to an empty array rather than a nil []byte to get non-nil zero-length byte slices.
5451var emptyBuf [0]byte
5452
Damien Neilc37adef2019-04-01 13:49:56 -07005453var wireTypes = map[protoreflect.Kind]wire.Type{
5454 protoreflect.BoolKind: wire.VarintType,
5455 protoreflect.EnumKind: wire.VarintType,
5456 protoreflect.Int32Kind: wire.VarintType,
5457 protoreflect.Sint32Kind: wire.VarintType,
5458 protoreflect.Uint32Kind: wire.VarintType,
5459 protoreflect.Int64Kind: wire.VarintType,
5460 protoreflect.Sint64Kind: wire.VarintType,
5461 protoreflect.Uint64Kind: wire.VarintType,
5462 protoreflect.Sfixed32Kind: wire.Fixed32Type,
5463 protoreflect.Fixed32Kind: wire.Fixed32Type,
5464 protoreflect.FloatKind: wire.Fixed32Type,
5465 protoreflect.Sfixed64Kind: wire.Fixed64Type,
5466 protoreflect.Fixed64Kind: wire.Fixed64Type,
5467 protoreflect.DoubleKind: wire.Fixed64Type,
5468 protoreflect.StringKind: wire.BytesType,
5469 protoreflect.BytesKind: wire.BytesType,
5470 protoreflect.MessageKind: wire.BytesType,
5471 protoreflect.GroupKind: wire.StartGroupType,
5472}