blob: 51b85d7b3bd6947bc2c3ca4b08672de2b13b34bb [file] [log] [blame]
Damien Neilba23aa52018-12-07 14:38:17 -08001// 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 proto
8
9import (
10 "math"
11
12 "github.com/golang/protobuf/v2/internal/encoding/wire"
Damien Neil96c229a2019-04-03 12:17:24 -070013 "github.com/golang/protobuf/v2/internal/errors"
Damien Neilba23aa52018-12-07 14:38:17 -080014 "github.com/golang/protobuf/v2/reflect/protoreflect"
15)
16
17// unmarshalScalar decodes a value of the given kind.
18//
19// Message values are decoded into a []byte which aliases the input data.
20func (o UnmarshalOptions) unmarshalScalar(b []byte, wtyp wire.Type, num wire.Number, kind protoreflect.Kind) (val protoreflect.Value, n int, err error) {
21 switch kind {
22 case protoreflect.BoolKind:
23 if wtyp != wire.VarintType {
24 return val, 0, errUnknown
25 }
26 v, n := wire.ConsumeVarint(b)
27 if n < 0 {
28 return val, 0, wire.ParseError(n)
29 }
30 return protoreflect.ValueOf(wire.DecodeBool(v)), n, nil
31 case protoreflect.EnumKind:
32 if wtyp != wire.VarintType {
33 return val, 0, errUnknown
34 }
35 v, n := wire.ConsumeVarint(b)
36 if n < 0 {
37 return val, 0, wire.ParseError(n)
38 }
39 return protoreflect.ValueOf(protoreflect.EnumNumber(v)), n, nil
40 case protoreflect.Int32Kind:
41 if wtyp != wire.VarintType {
42 return val, 0, errUnknown
43 }
44 v, n := wire.ConsumeVarint(b)
45 if n < 0 {
46 return val, 0, wire.ParseError(n)
47 }
48 return protoreflect.ValueOf(int32(v)), n, nil
49 case protoreflect.Sint32Kind:
50 if wtyp != wire.VarintType {
51 return val, 0, errUnknown
52 }
53 v, n := wire.ConsumeVarint(b)
54 if n < 0 {
55 return val, 0, wire.ParseError(n)
56 }
57 return protoreflect.ValueOf(int32(wire.DecodeZigZag(v & math.MaxUint32))), n, nil
58 case protoreflect.Uint32Kind:
59 if wtyp != wire.VarintType {
60 return val, 0, errUnknown
61 }
62 v, n := wire.ConsumeVarint(b)
63 if n < 0 {
64 return val, 0, wire.ParseError(n)
65 }
66 return protoreflect.ValueOf(uint32(v)), n, nil
67 case protoreflect.Int64Kind:
68 if wtyp != wire.VarintType {
69 return val, 0, errUnknown
70 }
71 v, n := wire.ConsumeVarint(b)
72 if n < 0 {
73 return val, 0, wire.ParseError(n)
74 }
75 return protoreflect.ValueOf(int64(v)), n, nil
76 case protoreflect.Sint64Kind:
77 if wtyp != wire.VarintType {
78 return val, 0, errUnknown
79 }
80 v, n := wire.ConsumeVarint(b)
81 if n < 0 {
82 return val, 0, wire.ParseError(n)
83 }
84 return protoreflect.ValueOf(wire.DecodeZigZag(v)), n, nil
85 case protoreflect.Uint64Kind:
86 if wtyp != wire.VarintType {
87 return val, 0, errUnknown
88 }
89 v, n := wire.ConsumeVarint(b)
90 if n < 0 {
91 return val, 0, wire.ParseError(n)
92 }
93 return protoreflect.ValueOf(v), n, nil
94 case protoreflect.Sfixed32Kind:
95 if wtyp != wire.Fixed32Type {
96 return val, 0, errUnknown
97 }
98 v, n := wire.ConsumeFixed32(b)
99 if n < 0 {
100 return val, 0, wire.ParseError(n)
101 }
102 return protoreflect.ValueOf(int32(v)), n, nil
103 case protoreflect.Fixed32Kind:
104 if wtyp != wire.Fixed32Type {
105 return val, 0, errUnknown
106 }
107 v, n := wire.ConsumeFixed32(b)
108 if n < 0 {
109 return val, 0, wire.ParseError(n)
110 }
111 return protoreflect.ValueOf(uint32(v)), n, nil
112 case protoreflect.FloatKind:
113 if wtyp != wire.Fixed32Type {
114 return val, 0, errUnknown
115 }
116 v, n := wire.ConsumeFixed32(b)
117 if n < 0 {
118 return val, 0, wire.ParseError(n)
119 }
120 return protoreflect.ValueOf(math.Float32frombits(uint32(v))), n, nil
121 case protoreflect.Sfixed64Kind:
122 if wtyp != wire.Fixed64Type {
123 return val, 0, errUnknown
124 }
125 v, n := wire.ConsumeFixed64(b)
126 if n < 0 {
127 return val, 0, wire.ParseError(n)
128 }
129 return protoreflect.ValueOf(int64(v)), n, nil
130 case protoreflect.Fixed64Kind:
131 if wtyp != wire.Fixed64Type {
132 return val, 0, errUnknown
133 }
134 v, n := wire.ConsumeFixed64(b)
135 if n < 0 {
136 return val, 0, wire.ParseError(n)
137 }
138 return protoreflect.ValueOf(v), n, nil
139 case protoreflect.DoubleKind:
140 if wtyp != wire.Fixed64Type {
141 return val, 0, errUnknown
142 }
143 v, n := wire.ConsumeFixed64(b)
144 if n < 0 {
145 return val, 0, wire.ParseError(n)
146 }
147 return protoreflect.ValueOf(math.Float64frombits(v)), n, nil
148 case protoreflect.StringKind:
149 if wtyp != wire.BytesType {
150 return val, 0, errUnknown
151 }
152 v, n := wire.ConsumeBytes(b)
153 if n < 0 {
154 return val, 0, wire.ParseError(n)
155 }
156 return protoreflect.ValueOf(string(v)), n, nil
157 case protoreflect.BytesKind:
158 if wtyp != wire.BytesType {
159 return val, 0, errUnknown
160 }
161 v, n := wire.ConsumeBytes(b)
162 if n < 0 {
163 return val, 0, wire.ParseError(n)
164 }
165 return protoreflect.ValueOf(append(([]byte)(nil), v...)), n, nil
166 case protoreflect.MessageKind:
167 if wtyp != wire.BytesType {
168 return val, 0, errUnknown
169 }
170 v, n := wire.ConsumeBytes(b)
171 if n < 0 {
172 return val, 0, wire.ParseError(n)
173 }
174 return protoreflect.ValueOf(v), n, nil
175 case protoreflect.GroupKind:
176 if wtyp != wire.StartGroupType {
177 return val, 0, errUnknown
178 }
179 v, n := wire.ConsumeGroup(num, b)
180 if n < 0 {
181 return val, 0, wire.ParseError(n)
182 }
183 return protoreflect.ValueOf(v), n, nil
184 default:
185 return val, 0, errUnknown
186 }
187}
188
189func (o UnmarshalOptions) unmarshalList(b []byte, wtyp wire.Type, num wire.Number, list protoreflect.List, kind protoreflect.Kind) (n int, err error) {
Damien Neil96c229a2019-04-03 12:17:24 -0700190 var nerr errors.NonFatal
Damien Neilba23aa52018-12-07 14:38:17 -0800191 switch kind {
192 case protoreflect.BoolKind:
193 if wtyp == wire.BytesType {
194 buf, n := wire.ConsumeBytes(b)
195 if n < 0 {
196 return 0, wire.ParseError(n)
197 }
198 for len(buf) > 0 {
199 v, n := wire.ConsumeVarint(buf)
200 if n < 0 {
201 return 0, wire.ParseError(n)
202 }
203 buf = buf[n:]
204 list.Append(protoreflect.ValueOf(wire.DecodeBool(v)))
205 }
206 return n, nil
207 }
208 if wtyp != wire.VarintType {
209 return 0, errUnknown
210 }
211 v, n := wire.ConsumeVarint(b)
212 if n < 0 {
213 return 0, wire.ParseError(n)
214 }
215 list.Append(protoreflect.ValueOf(wire.DecodeBool(v)))
Damien Neil96c229a2019-04-03 12:17:24 -0700216 return n, nerr.E
Damien Neilba23aa52018-12-07 14:38:17 -0800217 case protoreflect.EnumKind:
218 if wtyp == wire.BytesType {
219 buf, n := wire.ConsumeBytes(b)
220 if n < 0 {
221 return 0, wire.ParseError(n)
222 }
223 for len(buf) > 0 {
224 v, n := wire.ConsumeVarint(buf)
225 if n < 0 {
226 return 0, wire.ParseError(n)
227 }
228 buf = buf[n:]
229 list.Append(protoreflect.ValueOf(protoreflect.EnumNumber(v)))
230 }
231 return n, nil
232 }
233 if wtyp != wire.VarintType {
234 return 0, errUnknown
235 }
236 v, n := wire.ConsumeVarint(b)
237 if n < 0 {
238 return 0, wire.ParseError(n)
239 }
240 list.Append(protoreflect.ValueOf(protoreflect.EnumNumber(v)))
Damien Neil96c229a2019-04-03 12:17:24 -0700241 return n, nerr.E
Damien Neilba23aa52018-12-07 14:38:17 -0800242 case protoreflect.Int32Kind:
243 if wtyp == wire.BytesType {
244 buf, n := wire.ConsumeBytes(b)
245 if n < 0 {
246 return 0, wire.ParseError(n)
247 }
248 for len(buf) > 0 {
249 v, n := wire.ConsumeVarint(buf)
250 if n < 0 {
251 return 0, wire.ParseError(n)
252 }
253 buf = buf[n:]
254 list.Append(protoreflect.ValueOf(int32(v)))
255 }
256 return n, nil
257 }
258 if wtyp != wire.VarintType {
259 return 0, errUnknown
260 }
261 v, n := wire.ConsumeVarint(b)
262 if n < 0 {
263 return 0, wire.ParseError(n)
264 }
265 list.Append(protoreflect.ValueOf(int32(v)))
Damien Neil96c229a2019-04-03 12:17:24 -0700266 return n, nerr.E
Damien Neilba23aa52018-12-07 14:38:17 -0800267 case protoreflect.Sint32Kind:
268 if wtyp == wire.BytesType {
269 buf, n := wire.ConsumeBytes(b)
270 if n < 0 {
271 return 0, wire.ParseError(n)
272 }
273 for len(buf) > 0 {
274 v, n := wire.ConsumeVarint(buf)
275 if n < 0 {
276 return 0, wire.ParseError(n)
277 }
278 buf = buf[n:]
279 list.Append(protoreflect.ValueOf(int32(wire.DecodeZigZag(v & math.MaxUint32))))
280 }
281 return n, nil
282 }
283 if wtyp != wire.VarintType {
284 return 0, errUnknown
285 }
286 v, n := wire.ConsumeVarint(b)
287 if n < 0 {
288 return 0, wire.ParseError(n)
289 }
290 list.Append(protoreflect.ValueOf(int32(wire.DecodeZigZag(v & math.MaxUint32))))
Damien Neil96c229a2019-04-03 12:17:24 -0700291 return n, nerr.E
Damien Neilba23aa52018-12-07 14:38:17 -0800292 case protoreflect.Uint32Kind:
293 if wtyp == wire.BytesType {
294 buf, n := wire.ConsumeBytes(b)
295 if n < 0 {
296 return 0, wire.ParseError(n)
297 }
298 for len(buf) > 0 {
299 v, n := wire.ConsumeVarint(buf)
300 if n < 0 {
301 return 0, wire.ParseError(n)
302 }
303 buf = buf[n:]
304 list.Append(protoreflect.ValueOf(uint32(v)))
305 }
306 return n, nil
307 }
308 if wtyp != wire.VarintType {
309 return 0, errUnknown
310 }
311 v, n := wire.ConsumeVarint(b)
312 if n < 0 {
313 return 0, wire.ParseError(n)
314 }
315 list.Append(protoreflect.ValueOf(uint32(v)))
Damien Neil96c229a2019-04-03 12:17:24 -0700316 return n, nerr.E
Damien Neilba23aa52018-12-07 14:38:17 -0800317 case protoreflect.Int64Kind:
318 if wtyp == wire.BytesType {
319 buf, n := wire.ConsumeBytes(b)
320 if n < 0 {
321 return 0, wire.ParseError(n)
322 }
323 for len(buf) > 0 {
324 v, n := wire.ConsumeVarint(buf)
325 if n < 0 {
326 return 0, wire.ParseError(n)
327 }
328 buf = buf[n:]
329 list.Append(protoreflect.ValueOf(int64(v)))
330 }
331 return n, nil
332 }
333 if wtyp != wire.VarintType {
334 return 0, errUnknown
335 }
336 v, n := wire.ConsumeVarint(b)
337 if n < 0 {
338 return 0, wire.ParseError(n)
339 }
340 list.Append(protoreflect.ValueOf(int64(v)))
Damien Neil96c229a2019-04-03 12:17:24 -0700341 return n, nerr.E
Damien Neilba23aa52018-12-07 14:38:17 -0800342 case protoreflect.Sint64Kind:
343 if wtyp == wire.BytesType {
344 buf, n := wire.ConsumeBytes(b)
345 if n < 0 {
346 return 0, wire.ParseError(n)
347 }
348 for len(buf) > 0 {
349 v, n := wire.ConsumeVarint(buf)
350 if n < 0 {
351 return 0, wire.ParseError(n)
352 }
353 buf = buf[n:]
354 list.Append(protoreflect.ValueOf(wire.DecodeZigZag(v)))
355 }
356 return n, nil
357 }
358 if wtyp != wire.VarintType {
359 return 0, errUnknown
360 }
361 v, n := wire.ConsumeVarint(b)
362 if n < 0 {
363 return 0, wire.ParseError(n)
364 }
365 list.Append(protoreflect.ValueOf(wire.DecodeZigZag(v)))
Damien Neil96c229a2019-04-03 12:17:24 -0700366 return n, nerr.E
Damien Neilba23aa52018-12-07 14:38:17 -0800367 case protoreflect.Uint64Kind:
368 if wtyp == wire.BytesType {
369 buf, n := wire.ConsumeBytes(b)
370 if n < 0 {
371 return 0, wire.ParseError(n)
372 }
373 for len(buf) > 0 {
374 v, n := wire.ConsumeVarint(buf)
375 if n < 0 {
376 return 0, wire.ParseError(n)
377 }
378 buf = buf[n:]
379 list.Append(protoreflect.ValueOf(v))
380 }
381 return n, nil
382 }
383 if wtyp != wire.VarintType {
384 return 0, errUnknown
385 }
386 v, n := wire.ConsumeVarint(b)
387 if n < 0 {
388 return 0, wire.ParseError(n)
389 }
390 list.Append(protoreflect.ValueOf(v))
Damien Neil96c229a2019-04-03 12:17:24 -0700391 return n, nerr.E
Damien Neilba23aa52018-12-07 14:38:17 -0800392 case protoreflect.Sfixed32Kind:
393 if wtyp == wire.BytesType {
394 buf, n := wire.ConsumeBytes(b)
395 if n < 0 {
396 return 0, wire.ParseError(n)
397 }
398 for len(buf) > 0 {
399 v, n := wire.ConsumeFixed32(buf)
400 if n < 0 {
401 return 0, wire.ParseError(n)
402 }
403 buf = buf[n:]
404 list.Append(protoreflect.ValueOf(int32(v)))
405 }
406 return n, nil
407 }
408 if wtyp != wire.Fixed32Type {
409 return 0, errUnknown
410 }
411 v, n := wire.ConsumeFixed32(b)
412 if n < 0 {
413 return 0, wire.ParseError(n)
414 }
415 list.Append(protoreflect.ValueOf(int32(v)))
Damien Neil96c229a2019-04-03 12:17:24 -0700416 return n, nerr.E
Damien Neilba23aa52018-12-07 14:38:17 -0800417 case protoreflect.Fixed32Kind:
418 if wtyp == wire.BytesType {
419 buf, n := wire.ConsumeBytes(b)
420 if n < 0 {
421 return 0, wire.ParseError(n)
422 }
423 for len(buf) > 0 {
424 v, n := wire.ConsumeFixed32(buf)
425 if n < 0 {
426 return 0, wire.ParseError(n)
427 }
428 buf = buf[n:]
429 list.Append(protoreflect.ValueOf(uint32(v)))
430 }
431 return n, nil
432 }
433 if wtyp != wire.Fixed32Type {
434 return 0, errUnknown
435 }
436 v, n := wire.ConsumeFixed32(b)
437 if n < 0 {
438 return 0, wire.ParseError(n)
439 }
440 list.Append(protoreflect.ValueOf(uint32(v)))
Damien Neil96c229a2019-04-03 12:17:24 -0700441 return n, nerr.E
Damien Neilba23aa52018-12-07 14:38:17 -0800442 case protoreflect.FloatKind:
443 if wtyp == wire.BytesType {
444 buf, n := wire.ConsumeBytes(b)
445 if n < 0 {
446 return 0, wire.ParseError(n)
447 }
448 for len(buf) > 0 {
449 v, n := wire.ConsumeFixed32(buf)
450 if n < 0 {
451 return 0, wire.ParseError(n)
452 }
453 buf = buf[n:]
454 list.Append(protoreflect.ValueOf(math.Float32frombits(uint32(v))))
455 }
456 return n, nil
457 }
458 if wtyp != wire.Fixed32Type {
459 return 0, errUnknown
460 }
461 v, n := wire.ConsumeFixed32(b)
462 if n < 0 {
463 return 0, wire.ParseError(n)
464 }
465 list.Append(protoreflect.ValueOf(math.Float32frombits(uint32(v))))
Damien Neil96c229a2019-04-03 12:17:24 -0700466 return n, nerr.E
Damien Neilba23aa52018-12-07 14:38:17 -0800467 case protoreflect.Sfixed64Kind:
468 if wtyp == wire.BytesType {
469 buf, n := wire.ConsumeBytes(b)
470 if n < 0 {
471 return 0, wire.ParseError(n)
472 }
473 for len(buf) > 0 {
474 v, n := wire.ConsumeFixed64(buf)
475 if n < 0 {
476 return 0, wire.ParseError(n)
477 }
478 buf = buf[n:]
479 list.Append(protoreflect.ValueOf(int64(v)))
480 }
481 return n, nil
482 }
483 if wtyp != wire.Fixed64Type {
484 return 0, errUnknown
485 }
486 v, n := wire.ConsumeFixed64(b)
487 if n < 0 {
488 return 0, wire.ParseError(n)
489 }
490 list.Append(protoreflect.ValueOf(int64(v)))
Damien Neil96c229a2019-04-03 12:17:24 -0700491 return n, nerr.E
Damien Neilba23aa52018-12-07 14:38:17 -0800492 case protoreflect.Fixed64Kind:
493 if wtyp == wire.BytesType {
494 buf, n := wire.ConsumeBytes(b)
495 if n < 0 {
496 return 0, wire.ParseError(n)
497 }
498 for len(buf) > 0 {
499 v, n := wire.ConsumeFixed64(buf)
500 if n < 0 {
501 return 0, wire.ParseError(n)
502 }
503 buf = buf[n:]
504 list.Append(protoreflect.ValueOf(v))
505 }
506 return n, nil
507 }
508 if wtyp != wire.Fixed64Type {
509 return 0, errUnknown
510 }
511 v, n := wire.ConsumeFixed64(b)
512 if n < 0 {
513 return 0, wire.ParseError(n)
514 }
515 list.Append(protoreflect.ValueOf(v))
Damien Neil96c229a2019-04-03 12:17:24 -0700516 return n, nerr.E
Damien Neilba23aa52018-12-07 14:38:17 -0800517 case protoreflect.DoubleKind:
518 if wtyp == wire.BytesType {
519 buf, n := wire.ConsumeBytes(b)
520 if n < 0 {
521 return 0, wire.ParseError(n)
522 }
523 for len(buf) > 0 {
524 v, n := wire.ConsumeFixed64(buf)
525 if n < 0 {
526 return 0, wire.ParseError(n)
527 }
528 buf = buf[n:]
529 list.Append(protoreflect.ValueOf(math.Float64frombits(v)))
530 }
531 return n, nil
532 }
533 if wtyp != wire.Fixed64Type {
534 return 0, errUnknown
535 }
536 v, n := wire.ConsumeFixed64(b)
537 if n < 0 {
538 return 0, wire.ParseError(n)
539 }
540 list.Append(protoreflect.ValueOf(math.Float64frombits(v)))
Damien Neil96c229a2019-04-03 12:17:24 -0700541 return n, nerr.E
Damien Neilba23aa52018-12-07 14:38:17 -0800542 case protoreflect.StringKind:
543 if wtyp != wire.BytesType {
544 return 0, errUnknown
545 }
546 v, n := wire.ConsumeBytes(b)
547 if n < 0 {
548 return 0, wire.ParseError(n)
549 }
550 list.Append(protoreflect.ValueOf(string(v)))
Damien Neil96c229a2019-04-03 12:17:24 -0700551 return n, nerr.E
Damien Neilba23aa52018-12-07 14:38:17 -0800552 case protoreflect.BytesKind:
553 if wtyp != wire.BytesType {
554 return 0, errUnknown
555 }
556 v, n := wire.ConsumeBytes(b)
557 if n < 0 {
558 return 0, wire.ParseError(n)
559 }
560 list.Append(protoreflect.ValueOf(append(([]byte)(nil), v...)))
Damien Neil96c229a2019-04-03 12:17:24 -0700561 return n, nerr.E
Damien Neilba23aa52018-12-07 14:38:17 -0800562 case protoreflect.MessageKind:
563 if wtyp != wire.BytesType {
564 return 0, errUnknown
565 }
566 v, n := wire.ConsumeBytes(b)
567 if n < 0 {
568 return 0, wire.ParseError(n)
569 }
Joe Tsai3bc7d6f2019-01-09 02:57:13 -0800570 m := list.NewMessage()
Damien Neil96c229a2019-04-03 12:17:24 -0700571 if err := o.unmarshalMessage(v, m); !nerr.Merge(err) {
Damien Neilba23aa52018-12-07 14:38:17 -0800572 return 0, err
573 }
574 list.Append(protoreflect.ValueOf(m))
Damien Neil96c229a2019-04-03 12:17:24 -0700575 return n, nerr.E
Damien Neilba23aa52018-12-07 14:38:17 -0800576 case protoreflect.GroupKind:
577 if wtyp != wire.StartGroupType {
578 return 0, errUnknown
579 }
580 v, n := wire.ConsumeGroup(num, b)
581 if n < 0 {
582 return 0, wire.ParseError(n)
583 }
Joe Tsai3bc7d6f2019-01-09 02:57:13 -0800584 m := list.NewMessage()
Damien Neil96c229a2019-04-03 12:17:24 -0700585 if err := o.unmarshalMessage(v, m); !nerr.Merge(err) {
Damien Neilba23aa52018-12-07 14:38:17 -0800586 return 0, err
587 }
588 list.Append(protoreflect.ValueOf(m))
Damien Neil96c229a2019-04-03 12:17:24 -0700589 return n, nerr.E
Damien Neilba23aa52018-12-07 14:38:17 -0800590 default:
591 return 0, errUnknown
592 }
593}