blob: 1a3ef15e7e4deceacc26ff3dac6f591bd7157aaa [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"
Damien Neilbc310b52019-04-11 11:46:55 -070011 "unicode/utf8"
Damien Neilba23aa52018-12-07 14:38:17 -080012
13 "github.com/golang/protobuf/v2/internal/encoding/wire"
Damien Neil96c229a2019-04-03 12:17:24 -070014 "github.com/golang/protobuf/v2/internal/errors"
Damien Neilba23aa52018-12-07 14:38:17 -080015 "github.com/golang/protobuf/v2/reflect/protoreflect"
16)
17
18// unmarshalScalar decodes a value of the given kind.
19//
20// Message values are decoded into a []byte which aliases the input data.
Damien Neilbc310b52019-04-11 11:46:55 -070021func (o UnmarshalOptions) unmarshalScalar(b []byte, wtyp wire.Type, num wire.Number, field protoreflect.FieldDescriptor) (val protoreflect.Value, n int, err error) {
22 switch field.Kind() {
Damien Neilba23aa52018-12-07 14:38:17 -080023 case protoreflect.BoolKind:
24 if wtyp != wire.VarintType {
25 return val, 0, errUnknown
26 }
27 v, n := wire.ConsumeVarint(b)
28 if n < 0 {
29 return val, 0, wire.ParseError(n)
30 }
31 return protoreflect.ValueOf(wire.DecodeBool(v)), n, nil
32 case protoreflect.EnumKind:
33 if wtyp != wire.VarintType {
34 return val, 0, errUnknown
35 }
36 v, n := wire.ConsumeVarint(b)
37 if n < 0 {
38 return val, 0, wire.ParseError(n)
39 }
40 return protoreflect.ValueOf(protoreflect.EnumNumber(v)), n, nil
41 case protoreflect.Int32Kind:
42 if wtyp != wire.VarintType {
43 return val, 0, errUnknown
44 }
45 v, n := wire.ConsumeVarint(b)
46 if n < 0 {
47 return val, 0, wire.ParseError(n)
48 }
49 return protoreflect.ValueOf(int32(v)), n, nil
50 case protoreflect.Sint32Kind:
51 if wtyp != wire.VarintType {
52 return val, 0, errUnknown
53 }
54 v, n := wire.ConsumeVarint(b)
55 if n < 0 {
56 return val, 0, wire.ParseError(n)
57 }
58 return protoreflect.ValueOf(int32(wire.DecodeZigZag(v & math.MaxUint32))), n, nil
59 case protoreflect.Uint32Kind:
60 if wtyp != wire.VarintType {
61 return val, 0, errUnknown
62 }
63 v, n := wire.ConsumeVarint(b)
64 if n < 0 {
65 return val, 0, wire.ParseError(n)
66 }
67 return protoreflect.ValueOf(uint32(v)), n, nil
68 case protoreflect.Int64Kind:
69 if wtyp != wire.VarintType {
70 return val, 0, errUnknown
71 }
72 v, n := wire.ConsumeVarint(b)
73 if n < 0 {
74 return val, 0, wire.ParseError(n)
75 }
76 return protoreflect.ValueOf(int64(v)), n, nil
77 case protoreflect.Sint64Kind:
78 if wtyp != wire.VarintType {
79 return val, 0, errUnknown
80 }
81 v, n := wire.ConsumeVarint(b)
82 if n < 0 {
83 return val, 0, wire.ParseError(n)
84 }
85 return protoreflect.ValueOf(wire.DecodeZigZag(v)), n, nil
86 case protoreflect.Uint64Kind:
87 if wtyp != wire.VarintType {
88 return val, 0, errUnknown
89 }
90 v, n := wire.ConsumeVarint(b)
91 if n < 0 {
92 return val, 0, wire.ParseError(n)
93 }
94 return protoreflect.ValueOf(v), n, nil
95 case protoreflect.Sfixed32Kind:
96 if wtyp != wire.Fixed32Type {
97 return val, 0, errUnknown
98 }
99 v, n := wire.ConsumeFixed32(b)
100 if n < 0 {
101 return val, 0, wire.ParseError(n)
102 }
103 return protoreflect.ValueOf(int32(v)), n, nil
104 case protoreflect.Fixed32Kind:
105 if wtyp != wire.Fixed32Type {
106 return val, 0, errUnknown
107 }
108 v, n := wire.ConsumeFixed32(b)
109 if n < 0 {
110 return val, 0, wire.ParseError(n)
111 }
112 return protoreflect.ValueOf(uint32(v)), n, nil
113 case protoreflect.FloatKind:
114 if wtyp != wire.Fixed32Type {
115 return val, 0, errUnknown
116 }
117 v, n := wire.ConsumeFixed32(b)
118 if n < 0 {
119 return val, 0, wire.ParseError(n)
120 }
121 return protoreflect.ValueOf(math.Float32frombits(uint32(v))), n, nil
122 case protoreflect.Sfixed64Kind:
123 if wtyp != wire.Fixed64Type {
124 return val, 0, errUnknown
125 }
126 v, n := wire.ConsumeFixed64(b)
127 if n < 0 {
128 return val, 0, wire.ParseError(n)
129 }
130 return protoreflect.ValueOf(int64(v)), n, nil
131 case protoreflect.Fixed64Kind:
132 if wtyp != wire.Fixed64Type {
133 return val, 0, errUnknown
134 }
135 v, n := wire.ConsumeFixed64(b)
136 if n < 0 {
137 return val, 0, wire.ParseError(n)
138 }
139 return protoreflect.ValueOf(v), n, nil
140 case protoreflect.DoubleKind:
141 if wtyp != wire.Fixed64Type {
142 return val, 0, errUnknown
143 }
144 v, n := wire.ConsumeFixed64(b)
145 if n < 0 {
146 return val, 0, wire.ParseError(n)
147 }
148 return protoreflect.ValueOf(math.Float64frombits(v)), n, nil
149 case protoreflect.StringKind:
150 if wtyp != wire.BytesType {
151 return val, 0, errUnknown
152 }
153 v, n := wire.ConsumeBytes(b)
154 if n < 0 {
155 return val, 0, wire.ParseError(n)
156 }
Damien Neilbc310b52019-04-11 11:46:55 -0700157 if field.Syntax() == protoreflect.Proto3 && !utf8.Valid(v) {
158 var nerr errors.NonFatal
159 nerr.AppendInvalidUTF8(string(field.FullName()))
160 return protoreflect.ValueOf(string(v)), n, nerr.E
161 }
Damien Neilba23aa52018-12-07 14:38:17 -0800162 return protoreflect.ValueOf(string(v)), n, nil
163 case protoreflect.BytesKind:
164 if wtyp != wire.BytesType {
165 return val, 0, errUnknown
166 }
167 v, n := wire.ConsumeBytes(b)
168 if n < 0 {
169 return val, 0, wire.ParseError(n)
170 }
171 return protoreflect.ValueOf(append(([]byte)(nil), v...)), n, nil
172 case protoreflect.MessageKind:
173 if wtyp != wire.BytesType {
174 return val, 0, errUnknown
175 }
176 v, n := wire.ConsumeBytes(b)
177 if n < 0 {
178 return val, 0, wire.ParseError(n)
179 }
180 return protoreflect.ValueOf(v), n, nil
181 case protoreflect.GroupKind:
182 if wtyp != wire.StartGroupType {
183 return val, 0, errUnknown
184 }
185 v, n := wire.ConsumeGroup(num, b)
186 if n < 0 {
187 return val, 0, wire.ParseError(n)
188 }
189 return protoreflect.ValueOf(v), n, nil
190 default:
191 return val, 0, errUnknown
192 }
193}
194
Damien Neilbc310b52019-04-11 11:46:55 -0700195func (o UnmarshalOptions) unmarshalList(b []byte, wtyp wire.Type, num wire.Number, list protoreflect.List, field protoreflect.FieldDescriptor) (n int, err error) {
Damien Neil96c229a2019-04-03 12:17:24 -0700196 var nerr errors.NonFatal
Damien Neilbc310b52019-04-11 11:46:55 -0700197 switch field.Kind() {
Damien Neilba23aa52018-12-07 14:38:17 -0800198 case protoreflect.BoolKind:
199 if wtyp == wire.BytesType {
200 buf, n := wire.ConsumeBytes(b)
201 if n < 0 {
202 return 0, wire.ParseError(n)
203 }
204 for len(buf) > 0 {
205 v, n := wire.ConsumeVarint(buf)
206 if n < 0 {
207 return 0, wire.ParseError(n)
208 }
209 buf = buf[n:]
210 list.Append(protoreflect.ValueOf(wire.DecodeBool(v)))
211 }
212 return n, nil
213 }
214 if wtyp != wire.VarintType {
215 return 0, errUnknown
216 }
217 v, n := wire.ConsumeVarint(b)
218 if n < 0 {
219 return 0, wire.ParseError(n)
220 }
221 list.Append(protoreflect.ValueOf(wire.DecodeBool(v)))
Damien Neil96c229a2019-04-03 12:17:24 -0700222 return n, nerr.E
Damien Neilba23aa52018-12-07 14:38:17 -0800223 case protoreflect.EnumKind:
224 if wtyp == wire.BytesType {
225 buf, n := wire.ConsumeBytes(b)
226 if n < 0 {
227 return 0, wire.ParseError(n)
228 }
229 for len(buf) > 0 {
230 v, n := wire.ConsumeVarint(buf)
231 if n < 0 {
232 return 0, wire.ParseError(n)
233 }
234 buf = buf[n:]
235 list.Append(protoreflect.ValueOf(protoreflect.EnumNumber(v)))
236 }
237 return n, nil
238 }
239 if wtyp != wire.VarintType {
240 return 0, errUnknown
241 }
242 v, n := wire.ConsumeVarint(b)
243 if n < 0 {
244 return 0, wire.ParseError(n)
245 }
246 list.Append(protoreflect.ValueOf(protoreflect.EnumNumber(v)))
Damien Neil96c229a2019-04-03 12:17:24 -0700247 return n, nerr.E
Damien Neilba23aa52018-12-07 14:38:17 -0800248 case protoreflect.Int32Kind:
249 if wtyp == wire.BytesType {
250 buf, n := wire.ConsumeBytes(b)
251 if n < 0 {
252 return 0, wire.ParseError(n)
253 }
254 for len(buf) > 0 {
255 v, n := wire.ConsumeVarint(buf)
256 if n < 0 {
257 return 0, wire.ParseError(n)
258 }
259 buf = buf[n:]
260 list.Append(protoreflect.ValueOf(int32(v)))
261 }
262 return n, nil
263 }
264 if wtyp != wire.VarintType {
265 return 0, errUnknown
266 }
267 v, n := wire.ConsumeVarint(b)
268 if n < 0 {
269 return 0, wire.ParseError(n)
270 }
271 list.Append(protoreflect.ValueOf(int32(v)))
Damien Neil96c229a2019-04-03 12:17:24 -0700272 return n, nerr.E
Damien Neilba23aa52018-12-07 14:38:17 -0800273 case protoreflect.Sint32Kind:
274 if wtyp == wire.BytesType {
275 buf, n := wire.ConsumeBytes(b)
276 if n < 0 {
277 return 0, wire.ParseError(n)
278 }
279 for len(buf) > 0 {
280 v, n := wire.ConsumeVarint(buf)
281 if n < 0 {
282 return 0, wire.ParseError(n)
283 }
284 buf = buf[n:]
285 list.Append(protoreflect.ValueOf(int32(wire.DecodeZigZag(v & math.MaxUint32))))
286 }
287 return n, nil
288 }
289 if wtyp != wire.VarintType {
290 return 0, errUnknown
291 }
292 v, n := wire.ConsumeVarint(b)
293 if n < 0 {
294 return 0, wire.ParseError(n)
295 }
296 list.Append(protoreflect.ValueOf(int32(wire.DecodeZigZag(v & math.MaxUint32))))
Damien Neil96c229a2019-04-03 12:17:24 -0700297 return n, nerr.E
Damien Neilba23aa52018-12-07 14:38:17 -0800298 case protoreflect.Uint32Kind:
299 if wtyp == wire.BytesType {
300 buf, n := wire.ConsumeBytes(b)
301 if n < 0 {
302 return 0, wire.ParseError(n)
303 }
304 for len(buf) > 0 {
305 v, n := wire.ConsumeVarint(buf)
306 if n < 0 {
307 return 0, wire.ParseError(n)
308 }
309 buf = buf[n:]
310 list.Append(protoreflect.ValueOf(uint32(v)))
311 }
312 return n, nil
313 }
314 if wtyp != wire.VarintType {
315 return 0, errUnknown
316 }
317 v, n := wire.ConsumeVarint(b)
318 if n < 0 {
319 return 0, wire.ParseError(n)
320 }
321 list.Append(protoreflect.ValueOf(uint32(v)))
Damien Neil96c229a2019-04-03 12:17:24 -0700322 return n, nerr.E
Damien Neilba23aa52018-12-07 14:38:17 -0800323 case protoreflect.Int64Kind:
324 if wtyp == wire.BytesType {
325 buf, n := wire.ConsumeBytes(b)
326 if n < 0 {
327 return 0, wire.ParseError(n)
328 }
329 for len(buf) > 0 {
330 v, n := wire.ConsumeVarint(buf)
331 if n < 0 {
332 return 0, wire.ParseError(n)
333 }
334 buf = buf[n:]
335 list.Append(protoreflect.ValueOf(int64(v)))
336 }
337 return n, nil
338 }
339 if wtyp != wire.VarintType {
340 return 0, errUnknown
341 }
342 v, n := wire.ConsumeVarint(b)
343 if n < 0 {
344 return 0, wire.ParseError(n)
345 }
346 list.Append(protoreflect.ValueOf(int64(v)))
Damien Neil96c229a2019-04-03 12:17:24 -0700347 return n, nerr.E
Damien Neilba23aa52018-12-07 14:38:17 -0800348 case protoreflect.Sint64Kind:
349 if wtyp == wire.BytesType {
350 buf, n := wire.ConsumeBytes(b)
351 if n < 0 {
352 return 0, wire.ParseError(n)
353 }
354 for len(buf) > 0 {
355 v, n := wire.ConsumeVarint(buf)
356 if n < 0 {
357 return 0, wire.ParseError(n)
358 }
359 buf = buf[n:]
360 list.Append(protoreflect.ValueOf(wire.DecodeZigZag(v)))
361 }
362 return n, nil
363 }
364 if wtyp != wire.VarintType {
365 return 0, errUnknown
366 }
367 v, n := wire.ConsumeVarint(b)
368 if n < 0 {
369 return 0, wire.ParseError(n)
370 }
371 list.Append(protoreflect.ValueOf(wire.DecodeZigZag(v)))
Damien Neil96c229a2019-04-03 12:17:24 -0700372 return n, nerr.E
Damien Neilba23aa52018-12-07 14:38:17 -0800373 case protoreflect.Uint64Kind:
374 if wtyp == wire.BytesType {
375 buf, n := wire.ConsumeBytes(b)
376 if n < 0 {
377 return 0, wire.ParseError(n)
378 }
379 for len(buf) > 0 {
380 v, n := wire.ConsumeVarint(buf)
381 if n < 0 {
382 return 0, wire.ParseError(n)
383 }
384 buf = buf[n:]
385 list.Append(protoreflect.ValueOf(v))
386 }
387 return n, nil
388 }
389 if wtyp != wire.VarintType {
390 return 0, errUnknown
391 }
392 v, n := wire.ConsumeVarint(b)
393 if n < 0 {
394 return 0, wire.ParseError(n)
395 }
396 list.Append(protoreflect.ValueOf(v))
Damien Neil96c229a2019-04-03 12:17:24 -0700397 return n, nerr.E
Damien Neilba23aa52018-12-07 14:38:17 -0800398 case protoreflect.Sfixed32Kind:
399 if wtyp == wire.BytesType {
400 buf, n := wire.ConsumeBytes(b)
401 if n < 0 {
402 return 0, wire.ParseError(n)
403 }
404 for len(buf) > 0 {
405 v, n := wire.ConsumeFixed32(buf)
406 if n < 0 {
407 return 0, wire.ParseError(n)
408 }
409 buf = buf[n:]
410 list.Append(protoreflect.ValueOf(int32(v)))
411 }
412 return n, nil
413 }
414 if wtyp != wire.Fixed32Type {
415 return 0, errUnknown
416 }
417 v, n := wire.ConsumeFixed32(b)
418 if n < 0 {
419 return 0, wire.ParseError(n)
420 }
421 list.Append(protoreflect.ValueOf(int32(v)))
Damien Neil96c229a2019-04-03 12:17:24 -0700422 return n, nerr.E
Damien Neilba23aa52018-12-07 14:38:17 -0800423 case protoreflect.Fixed32Kind:
424 if wtyp == wire.BytesType {
425 buf, n := wire.ConsumeBytes(b)
426 if n < 0 {
427 return 0, wire.ParseError(n)
428 }
429 for len(buf) > 0 {
430 v, n := wire.ConsumeFixed32(buf)
431 if n < 0 {
432 return 0, wire.ParseError(n)
433 }
434 buf = buf[n:]
435 list.Append(protoreflect.ValueOf(uint32(v)))
436 }
437 return n, nil
438 }
439 if wtyp != wire.Fixed32Type {
440 return 0, errUnknown
441 }
442 v, n := wire.ConsumeFixed32(b)
443 if n < 0 {
444 return 0, wire.ParseError(n)
445 }
446 list.Append(protoreflect.ValueOf(uint32(v)))
Damien Neil96c229a2019-04-03 12:17:24 -0700447 return n, nerr.E
Damien Neilba23aa52018-12-07 14:38:17 -0800448 case protoreflect.FloatKind:
449 if wtyp == wire.BytesType {
450 buf, n := wire.ConsumeBytes(b)
451 if n < 0 {
452 return 0, wire.ParseError(n)
453 }
454 for len(buf) > 0 {
455 v, n := wire.ConsumeFixed32(buf)
456 if n < 0 {
457 return 0, wire.ParseError(n)
458 }
459 buf = buf[n:]
460 list.Append(protoreflect.ValueOf(math.Float32frombits(uint32(v))))
461 }
462 return n, nil
463 }
464 if wtyp != wire.Fixed32Type {
465 return 0, errUnknown
466 }
467 v, n := wire.ConsumeFixed32(b)
468 if n < 0 {
469 return 0, wire.ParseError(n)
470 }
471 list.Append(protoreflect.ValueOf(math.Float32frombits(uint32(v))))
Damien Neil96c229a2019-04-03 12:17:24 -0700472 return n, nerr.E
Damien Neilba23aa52018-12-07 14:38:17 -0800473 case protoreflect.Sfixed64Kind:
474 if wtyp == wire.BytesType {
475 buf, n := wire.ConsumeBytes(b)
476 if n < 0 {
477 return 0, wire.ParseError(n)
478 }
479 for len(buf) > 0 {
480 v, n := wire.ConsumeFixed64(buf)
481 if n < 0 {
482 return 0, wire.ParseError(n)
483 }
484 buf = buf[n:]
485 list.Append(protoreflect.ValueOf(int64(v)))
486 }
487 return n, nil
488 }
489 if wtyp != wire.Fixed64Type {
490 return 0, errUnknown
491 }
492 v, n := wire.ConsumeFixed64(b)
493 if n < 0 {
494 return 0, wire.ParseError(n)
495 }
496 list.Append(protoreflect.ValueOf(int64(v)))
Damien Neil96c229a2019-04-03 12:17:24 -0700497 return n, nerr.E
Damien Neilba23aa52018-12-07 14:38:17 -0800498 case protoreflect.Fixed64Kind:
499 if wtyp == wire.BytesType {
500 buf, n := wire.ConsumeBytes(b)
501 if n < 0 {
502 return 0, wire.ParseError(n)
503 }
504 for len(buf) > 0 {
505 v, n := wire.ConsumeFixed64(buf)
506 if n < 0 {
507 return 0, wire.ParseError(n)
508 }
509 buf = buf[n:]
510 list.Append(protoreflect.ValueOf(v))
511 }
512 return n, nil
513 }
514 if wtyp != wire.Fixed64Type {
515 return 0, errUnknown
516 }
517 v, n := wire.ConsumeFixed64(b)
518 if n < 0 {
519 return 0, wire.ParseError(n)
520 }
521 list.Append(protoreflect.ValueOf(v))
Damien Neil96c229a2019-04-03 12:17:24 -0700522 return n, nerr.E
Damien Neilba23aa52018-12-07 14:38:17 -0800523 case protoreflect.DoubleKind:
524 if wtyp == wire.BytesType {
525 buf, n := wire.ConsumeBytes(b)
526 if n < 0 {
527 return 0, wire.ParseError(n)
528 }
529 for len(buf) > 0 {
530 v, n := wire.ConsumeFixed64(buf)
531 if n < 0 {
532 return 0, wire.ParseError(n)
533 }
534 buf = buf[n:]
535 list.Append(protoreflect.ValueOf(math.Float64frombits(v)))
536 }
537 return n, nil
538 }
539 if wtyp != wire.Fixed64Type {
540 return 0, errUnknown
541 }
542 v, n := wire.ConsumeFixed64(b)
543 if n < 0 {
544 return 0, wire.ParseError(n)
545 }
546 list.Append(protoreflect.ValueOf(math.Float64frombits(v)))
Damien Neil96c229a2019-04-03 12:17:24 -0700547 return n, nerr.E
Damien Neilba23aa52018-12-07 14:38:17 -0800548 case protoreflect.StringKind:
549 if wtyp != wire.BytesType {
550 return 0, errUnknown
551 }
552 v, n := wire.ConsumeBytes(b)
553 if n < 0 {
554 return 0, wire.ParseError(n)
555 }
Damien Neilbc310b52019-04-11 11:46:55 -0700556 if field.Syntax() == protoreflect.Proto3 && !utf8.Valid(v) {
557 nerr.AppendInvalidUTF8(string(field.FullName()))
558 }
Damien Neilba23aa52018-12-07 14:38:17 -0800559 list.Append(protoreflect.ValueOf(string(v)))
Damien Neil96c229a2019-04-03 12:17:24 -0700560 return n, nerr.E
Damien Neilba23aa52018-12-07 14:38:17 -0800561 case protoreflect.BytesKind:
562 if wtyp != wire.BytesType {
563 return 0, errUnknown
564 }
565 v, n := wire.ConsumeBytes(b)
566 if n < 0 {
567 return 0, wire.ParseError(n)
568 }
569 list.Append(protoreflect.ValueOf(append(([]byte)(nil), v...)))
Damien Neil96c229a2019-04-03 12:17:24 -0700570 return n, nerr.E
Damien Neilba23aa52018-12-07 14:38:17 -0800571 case protoreflect.MessageKind:
572 if wtyp != wire.BytesType {
573 return 0, errUnknown
574 }
575 v, n := wire.ConsumeBytes(b)
576 if n < 0 {
577 return 0, wire.ParseError(n)
578 }
Joe Tsai3bc7d6f2019-01-09 02:57:13 -0800579 m := list.NewMessage()
Damien Neil96c229a2019-04-03 12:17:24 -0700580 if err := o.unmarshalMessage(v, m); !nerr.Merge(err) {
Damien Neilba23aa52018-12-07 14:38:17 -0800581 return 0, err
582 }
583 list.Append(protoreflect.ValueOf(m))
Damien Neil96c229a2019-04-03 12:17:24 -0700584 return n, nerr.E
Damien Neilba23aa52018-12-07 14:38:17 -0800585 case protoreflect.GroupKind:
586 if wtyp != wire.StartGroupType {
587 return 0, errUnknown
588 }
589 v, n := wire.ConsumeGroup(num, b)
590 if n < 0 {
591 return 0, wire.ParseError(n)
592 }
Joe Tsai3bc7d6f2019-01-09 02:57:13 -0800593 m := list.NewMessage()
Damien Neil96c229a2019-04-03 12:17:24 -0700594 if err := o.unmarshalMessage(v, m); !nerr.Merge(err) {
Damien Neilba23aa52018-12-07 14:38:17 -0800595 return 0, err
596 }
597 list.Append(protoreflect.ValueOf(m))
Damien Neil96c229a2019-04-03 12:17:24 -0700598 return n, nerr.E
Damien Neilba23aa52018-12-07 14:38:17 -0800599 default:
600 return 0, errUnknown
601 }
602}