gtsocial-umbx

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

decode_gen.go (14995B)


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