blob: a2722428ffd3bb24dbd7006e7e32ce186ed8f527 [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
Damien Neile89e6242019-05-13 23:55:40 -070013 "google.golang.org/protobuf/internal/encoding/wire"
14 "google.golang.org/protobuf/internal/errors"
15 "google.golang.org/protobuf/reflect/protoreflect"
Damien Neilba23aa52018-12-07 14:38:17 -080016)
17
18// unmarshalScalar decodes a value of the given kind.
19//
20// Message values are decoded into a []byte which aliases the input data.
Joe Tsai378c1322019-04-25 23:48:08 -070021func (o UnmarshalOptions) unmarshalScalar(b []byte, wtyp wire.Type, fd protoreflect.FieldDescriptor) (val protoreflect.Value, n int, err error) {
22 switch fd.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 }
Joe Tsai378c1322019-04-25 23:48:08 -0700157 if fd.Syntax() == protoreflect.Proto3 && !utf8.Valid(v) {
Damien Neil8c86fc52019-06-19 09:28:29 -0700158 return protoreflect.Value{}, 0, errors.InvalidUTF8(string(fd.FullName()))
Damien Neilbc310b52019-04-11 11:46:55 -0700159 }
Damien Neilba23aa52018-12-07 14:38:17 -0800160 return protoreflect.ValueOf(string(v)), n, nil
161 case protoreflect.BytesKind:
162 if wtyp != wire.BytesType {
163 return val, 0, errUnknown
164 }
165 v, n := wire.ConsumeBytes(b)
166 if n < 0 {
167 return val, 0, wire.ParseError(n)
168 }
169 return protoreflect.ValueOf(append(([]byte)(nil), v...)), n, nil
170 case protoreflect.MessageKind:
171 if wtyp != wire.BytesType {
172 return val, 0, errUnknown
173 }
174 v, n := wire.ConsumeBytes(b)
175 if n < 0 {
176 return val, 0, wire.ParseError(n)
177 }
178 return protoreflect.ValueOf(v), n, nil
179 case protoreflect.GroupKind:
180 if wtyp != wire.StartGroupType {
181 return val, 0, errUnknown
182 }
Joe Tsai378c1322019-04-25 23:48:08 -0700183 v, n := wire.ConsumeGroup(fd.Number(), b)
Damien Neilba23aa52018-12-07 14:38:17 -0800184 if n < 0 {
185 return val, 0, wire.ParseError(n)
186 }
187 return protoreflect.ValueOf(v), n, nil
188 default:
189 return val, 0, errUnknown
190 }
191}
192
Joe Tsai378c1322019-04-25 23:48:08 -0700193func (o UnmarshalOptions) unmarshalList(b []byte, wtyp wire.Type, list protoreflect.List, fd protoreflect.FieldDescriptor) (n int, err error) {
Joe Tsai378c1322019-04-25 23:48:08 -0700194 switch fd.Kind() {
Damien Neilba23aa52018-12-07 14:38:17 -0800195 case protoreflect.BoolKind:
196 if wtyp == wire.BytesType {
197 buf, n := wire.ConsumeBytes(b)
198 if n < 0 {
199 return 0, wire.ParseError(n)
200 }
201 for len(buf) > 0 {
202 v, n := wire.ConsumeVarint(buf)
203 if n < 0 {
204 return 0, wire.ParseError(n)
205 }
206 buf = buf[n:]
207 list.Append(protoreflect.ValueOf(wire.DecodeBool(v)))
208 }
209 return n, nil
210 }
211 if wtyp != wire.VarintType {
212 return 0, errUnknown
213 }
214 v, n := wire.ConsumeVarint(b)
215 if n < 0 {
216 return 0, wire.ParseError(n)
217 }
218 list.Append(protoreflect.ValueOf(wire.DecodeBool(v)))
Damien Neil8c86fc52019-06-19 09:28:29 -0700219 return n, nil
Damien Neilba23aa52018-12-07 14:38:17 -0800220 case protoreflect.EnumKind:
221 if wtyp == wire.BytesType {
222 buf, n := wire.ConsumeBytes(b)
223 if n < 0 {
224 return 0, wire.ParseError(n)
225 }
226 for len(buf) > 0 {
227 v, n := wire.ConsumeVarint(buf)
228 if n < 0 {
229 return 0, wire.ParseError(n)
230 }
231 buf = buf[n:]
232 list.Append(protoreflect.ValueOf(protoreflect.EnumNumber(v)))
233 }
234 return n, nil
235 }
236 if wtyp != wire.VarintType {
237 return 0, errUnknown
238 }
239 v, n := wire.ConsumeVarint(b)
240 if n < 0 {
241 return 0, wire.ParseError(n)
242 }
243 list.Append(protoreflect.ValueOf(protoreflect.EnumNumber(v)))
Damien Neil8c86fc52019-06-19 09:28:29 -0700244 return n, nil
Damien Neilba23aa52018-12-07 14:38:17 -0800245 case protoreflect.Int32Kind:
246 if wtyp == wire.BytesType {
247 buf, n := wire.ConsumeBytes(b)
248 if n < 0 {
249 return 0, wire.ParseError(n)
250 }
251 for len(buf) > 0 {
252 v, n := wire.ConsumeVarint(buf)
253 if n < 0 {
254 return 0, wire.ParseError(n)
255 }
256 buf = buf[n:]
257 list.Append(protoreflect.ValueOf(int32(v)))
258 }
259 return n, nil
260 }
261 if wtyp != wire.VarintType {
262 return 0, errUnknown
263 }
264 v, n := wire.ConsumeVarint(b)
265 if n < 0 {
266 return 0, wire.ParseError(n)
267 }
268 list.Append(protoreflect.ValueOf(int32(v)))
Damien Neil8c86fc52019-06-19 09:28:29 -0700269 return n, nil
Damien Neilba23aa52018-12-07 14:38:17 -0800270 case protoreflect.Sint32Kind:
271 if wtyp == wire.BytesType {
272 buf, n := wire.ConsumeBytes(b)
273 if n < 0 {
274 return 0, wire.ParseError(n)
275 }
276 for len(buf) > 0 {
277 v, n := wire.ConsumeVarint(buf)
278 if n < 0 {
279 return 0, wire.ParseError(n)
280 }
281 buf = buf[n:]
282 list.Append(protoreflect.ValueOf(int32(wire.DecodeZigZag(v & math.MaxUint32))))
283 }
284 return n, nil
285 }
286 if wtyp != wire.VarintType {
287 return 0, errUnknown
288 }
289 v, n := wire.ConsumeVarint(b)
290 if n < 0 {
291 return 0, wire.ParseError(n)
292 }
293 list.Append(protoreflect.ValueOf(int32(wire.DecodeZigZag(v & math.MaxUint32))))
Damien Neil8c86fc52019-06-19 09:28:29 -0700294 return n, nil
Damien Neilba23aa52018-12-07 14:38:17 -0800295 case protoreflect.Uint32Kind:
296 if wtyp == wire.BytesType {
297 buf, n := wire.ConsumeBytes(b)
298 if n < 0 {
299 return 0, wire.ParseError(n)
300 }
301 for len(buf) > 0 {
302 v, n := wire.ConsumeVarint(buf)
303 if n < 0 {
304 return 0, wire.ParseError(n)
305 }
306 buf = buf[n:]
307 list.Append(protoreflect.ValueOf(uint32(v)))
308 }
309 return n, nil
310 }
311 if wtyp != wire.VarintType {
312 return 0, errUnknown
313 }
314 v, n := wire.ConsumeVarint(b)
315 if n < 0 {
316 return 0, wire.ParseError(n)
317 }
318 list.Append(protoreflect.ValueOf(uint32(v)))
Damien Neil8c86fc52019-06-19 09:28:29 -0700319 return n, nil
Damien Neilba23aa52018-12-07 14:38:17 -0800320 case protoreflect.Int64Kind:
321 if wtyp == wire.BytesType {
322 buf, n := wire.ConsumeBytes(b)
323 if n < 0 {
324 return 0, wire.ParseError(n)
325 }
326 for len(buf) > 0 {
327 v, n := wire.ConsumeVarint(buf)
328 if n < 0 {
329 return 0, wire.ParseError(n)
330 }
331 buf = buf[n:]
332 list.Append(protoreflect.ValueOf(int64(v)))
333 }
334 return n, nil
335 }
336 if wtyp != wire.VarintType {
337 return 0, errUnknown
338 }
339 v, n := wire.ConsumeVarint(b)
340 if n < 0 {
341 return 0, wire.ParseError(n)
342 }
343 list.Append(protoreflect.ValueOf(int64(v)))
Damien Neil8c86fc52019-06-19 09:28:29 -0700344 return n, nil
Damien Neilba23aa52018-12-07 14:38:17 -0800345 case protoreflect.Sint64Kind:
346 if wtyp == wire.BytesType {
347 buf, n := wire.ConsumeBytes(b)
348 if n < 0 {
349 return 0, wire.ParseError(n)
350 }
351 for len(buf) > 0 {
352 v, n := wire.ConsumeVarint(buf)
353 if n < 0 {
354 return 0, wire.ParseError(n)
355 }
356 buf = buf[n:]
357 list.Append(protoreflect.ValueOf(wire.DecodeZigZag(v)))
358 }
359 return n, nil
360 }
361 if wtyp != wire.VarintType {
362 return 0, errUnknown
363 }
364 v, n := wire.ConsumeVarint(b)
365 if n < 0 {
366 return 0, wire.ParseError(n)
367 }
368 list.Append(protoreflect.ValueOf(wire.DecodeZigZag(v)))
Damien Neil8c86fc52019-06-19 09:28:29 -0700369 return n, nil
Damien Neilba23aa52018-12-07 14:38:17 -0800370 case protoreflect.Uint64Kind:
371 if wtyp == wire.BytesType {
372 buf, n := wire.ConsumeBytes(b)
373 if n < 0 {
374 return 0, wire.ParseError(n)
375 }
376 for len(buf) > 0 {
377 v, n := wire.ConsumeVarint(buf)
378 if n < 0 {
379 return 0, wire.ParseError(n)
380 }
381 buf = buf[n:]
382 list.Append(protoreflect.ValueOf(v))
383 }
384 return n, nil
385 }
386 if wtyp != wire.VarintType {
387 return 0, errUnknown
388 }
389 v, n := wire.ConsumeVarint(b)
390 if n < 0 {
391 return 0, wire.ParseError(n)
392 }
393 list.Append(protoreflect.ValueOf(v))
Damien Neil8c86fc52019-06-19 09:28:29 -0700394 return n, nil
Damien Neilba23aa52018-12-07 14:38:17 -0800395 case protoreflect.Sfixed32Kind:
396 if wtyp == wire.BytesType {
397 buf, n := wire.ConsumeBytes(b)
398 if n < 0 {
399 return 0, wire.ParseError(n)
400 }
401 for len(buf) > 0 {
402 v, n := wire.ConsumeFixed32(buf)
403 if n < 0 {
404 return 0, wire.ParseError(n)
405 }
406 buf = buf[n:]
407 list.Append(protoreflect.ValueOf(int32(v)))
408 }
409 return n, nil
410 }
411 if wtyp != wire.Fixed32Type {
412 return 0, errUnknown
413 }
414 v, n := wire.ConsumeFixed32(b)
415 if n < 0 {
416 return 0, wire.ParseError(n)
417 }
418 list.Append(protoreflect.ValueOf(int32(v)))
Damien Neil8c86fc52019-06-19 09:28:29 -0700419 return n, nil
Damien Neilba23aa52018-12-07 14:38:17 -0800420 case protoreflect.Fixed32Kind:
421 if wtyp == wire.BytesType {
422 buf, n := wire.ConsumeBytes(b)
423 if n < 0 {
424 return 0, wire.ParseError(n)
425 }
426 for len(buf) > 0 {
427 v, n := wire.ConsumeFixed32(buf)
428 if n < 0 {
429 return 0, wire.ParseError(n)
430 }
431 buf = buf[n:]
432 list.Append(protoreflect.ValueOf(uint32(v)))
433 }
434 return n, nil
435 }
436 if wtyp != wire.Fixed32Type {
437 return 0, errUnknown
438 }
439 v, n := wire.ConsumeFixed32(b)
440 if n < 0 {
441 return 0, wire.ParseError(n)
442 }
443 list.Append(protoreflect.ValueOf(uint32(v)))
Damien Neil8c86fc52019-06-19 09:28:29 -0700444 return n, nil
Damien Neilba23aa52018-12-07 14:38:17 -0800445 case protoreflect.FloatKind:
446 if wtyp == wire.BytesType {
447 buf, n := wire.ConsumeBytes(b)
448 if n < 0 {
449 return 0, wire.ParseError(n)
450 }
451 for len(buf) > 0 {
452 v, n := wire.ConsumeFixed32(buf)
453 if n < 0 {
454 return 0, wire.ParseError(n)
455 }
456 buf = buf[n:]
457 list.Append(protoreflect.ValueOf(math.Float32frombits(uint32(v))))
458 }
459 return n, nil
460 }
461 if wtyp != wire.Fixed32Type {
462 return 0, errUnknown
463 }
464 v, n := wire.ConsumeFixed32(b)
465 if n < 0 {
466 return 0, wire.ParseError(n)
467 }
468 list.Append(protoreflect.ValueOf(math.Float32frombits(uint32(v))))
Damien Neil8c86fc52019-06-19 09:28:29 -0700469 return n, nil
Damien Neilba23aa52018-12-07 14:38:17 -0800470 case protoreflect.Sfixed64Kind:
471 if wtyp == wire.BytesType {
472 buf, n := wire.ConsumeBytes(b)
473 if n < 0 {
474 return 0, wire.ParseError(n)
475 }
476 for len(buf) > 0 {
477 v, n := wire.ConsumeFixed64(buf)
478 if n < 0 {
479 return 0, wire.ParseError(n)
480 }
481 buf = buf[n:]
482 list.Append(protoreflect.ValueOf(int64(v)))
483 }
484 return n, nil
485 }
486 if wtyp != wire.Fixed64Type {
487 return 0, errUnknown
488 }
489 v, n := wire.ConsumeFixed64(b)
490 if n < 0 {
491 return 0, wire.ParseError(n)
492 }
493 list.Append(protoreflect.ValueOf(int64(v)))
Damien Neil8c86fc52019-06-19 09:28:29 -0700494 return n, nil
Damien Neilba23aa52018-12-07 14:38:17 -0800495 case protoreflect.Fixed64Kind:
496 if wtyp == wire.BytesType {
497 buf, n := wire.ConsumeBytes(b)
498 if n < 0 {
499 return 0, wire.ParseError(n)
500 }
501 for len(buf) > 0 {
502 v, n := wire.ConsumeFixed64(buf)
503 if n < 0 {
504 return 0, wire.ParseError(n)
505 }
506 buf = buf[n:]
507 list.Append(protoreflect.ValueOf(v))
508 }
509 return n, nil
510 }
511 if wtyp != wire.Fixed64Type {
512 return 0, errUnknown
513 }
514 v, n := wire.ConsumeFixed64(b)
515 if n < 0 {
516 return 0, wire.ParseError(n)
517 }
518 list.Append(protoreflect.ValueOf(v))
Damien Neil8c86fc52019-06-19 09:28:29 -0700519 return n, nil
Damien Neilba23aa52018-12-07 14:38:17 -0800520 case protoreflect.DoubleKind:
521 if wtyp == wire.BytesType {
522 buf, n := wire.ConsumeBytes(b)
523 if n < 0 {
524 return 0, wire.ParseError(n)
525 }
526 for len(buf) > 0 {
527 v, n := wire.ConsumeFixed64(buf)
528 if n < 0 {
529 return 0, wire.ParseError(n)
530 }
531 buf = buf[n:]
532 list.Append(protoreflect.ValueOf(math.Float64frombits(v)))
533 }
534 return n, nil
535 }
536 if wtyp != wire.Fixed64Type {
537 return 0, errUnknown
538 }
539 v, n := wire.ConsumeFixed64(b)
540 if n < 0 {
541 return 0, wire.ParseError(n)
542 }
543 list.Append(protoreflect.ValueOf(math.Float64frombits(v)))
Damien Neil8c86fc52019-06-19 09:28:29 -0700544 return n, nil
Damien Neilba23aa52018-12-07 14:38:17 -0800545 case protoreflect.StringKind:
546 if wtyp != wire.BytesType {
547 return 0, errUnknown
548 }
549 v, n := wire.ConsumeBytes(b)
550 if n < 0 {
551 return 0, wire.ParseError(n)
552 }
Joe Tsai378c1322019-04-25 23:48:08 -0700553 if fd.Syntax() == protoreflect.Proto3 && !utf8.Valid(v) {
Damien Neil8c86fc52019-06-19 09:28:29 -0700554 return 0, errors.InvalidUTF8(string(fd.FullName()))
Damien Neilbc310b52019-04-11 11:46:55 -0700555 }
Damien Neilba23aa52018-12-07 14:38:17 -0800556 list.Append(protoreflect.ValueOf(string(v)))
Damien Neil8c86fc52019-06-19 09:28:29 -0700557 return n, nil
Damien Neilba23aa52018-12-07 14:38:17 -0800558 case protoreflect.BytesKind:
559 if wtyp != wire.BytesType {
560 return 0, errUnknown
561 }
562 v, n := wire.ConsumeBytes(b)
563 if n < 0 {
564 return 0, wire.ParseError(n)
565 }
566 list.Append(protoreflect.ValueOf(append(([]byte)(nil), v...)))
Damien Neil8c86fc52019-06-19 09:28:29 -0700567 return n, nil
Damien Neilba23aa52018-12-07 14:38:17 -0800568 case protoreflect.MessageKind:
569 if wtyp != wire.BytesType {
570 return 0, errUnknown
571 }
572 v, n := wire.ConsumeBytes(b)
573 if n < 0 {
574 return 0, wire.ParseError(n)
575 }
Joe Tsai3bc7d6f2019-01-09 02:57:13 -0800576 m := list.NewMessage()
Damien Neil8c86fc52019-06-19 09:28:29 -0700577 if err := o.unmarshalMessage(v, m); err != nil {
Damien Neilba23aa52018-12-07 14:38:17 -0800578 return 0, err
579 }
580 list.Append(protoreflect.ValueOf(m))
Damien Neil8c86fc52019-06-19 09:28:29 -0700581 return n, nil
Damien Neilba23aa52018-12-07 14:38:17 -0800582 case protoreflect.GroupKind:
583 if wtyp != wire.StartGroupType {
584 return 0, errUnknown
585 }
Joe Tsai378c1322019-04-25 23:48:08 -0700586 v, n := wire.ConsumeGroup(fd.Number(), b)
Damien Neilba23aa52018-12-07 14:38:17 -0800587 if n < 0 {
588 return 0, wire.ParseError(n)
589 }
Joe Tsai3bc7d6f2019-01-09 02:57:13 -0800590 m := list.NewMessage()
Damien Neil8c86fc52019-06-19 09:28:29 -0700591 if err := o.unmarshalMessage(v, m); err != nil {
Damien Neilba23aa52018-12-07 14:38:17 -0800592 return 0, err
593 }
594 list.Append(protoreflect.ValueOf(m))
Damien Neil8c86fc52019-06-19 09:28:29 -0700595 return n, nil
Damien Neilba23aa52018-12-07 14:38:17 -0800596 default:
597 return 0, errUnknown
598 }
599}