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