blob: 185dacfb49b7e34749970307ec67c47910747814 [file] [log] [blame]
Matteo Scandoloa4285862020-12-01 18:10:10 -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 "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
19var wireTypes = map[protoreflect.Kind]protowire.Type{
20 protoreflect.BoolKind: protowire.VarintType,
21 protoreflect.EnumKind: protowire.VarintType,
22 protoreflect.Int32Kind: protowire.VarintType,
23 protoreflect.Sint32Kind: protowire.VarintType,
24 protoreflect.Uint32Kind: protowire.VarintType,
25 protoreflect.Int64Kind: protowire.VarintType,
26 protoreflect.Sint64Kind: protowire.VarintType,
27 protoreflect.Uint64Kind: protowire.VarintType,
28 protoreflect.Sfixed32Kind: protowire.Fixed32Type,
29 protoreflect.Fixed32Kind: protowire.Fixed32Type,
30 protoreflect.FloatKind: protowire.Fixed32Type,
31 protoreflect.Sfixed64Kind: protowire.Fixed64Type,
32 protoreflect.Fixed64Kind: protowire.Fixed64Type,
33 protoreflect.DoubleKind: protowire.Fixed64Type,
34 protoreflect.StringKind: protowire.BytesType,
35 protoreflect.BytesKind: protowire.BytesType,
36 protoreflect.MessageKind: protowire.BytesType,
37 protoreflect.GroupKind: protowire.StartGroupType,
38}
39
40func (o MarshalOptions) marshalSingular(b []byte, fd protoreflect.FieldDescriptor, v protoreflect.Value) ([]byte, error) {
41 switch fd.Kind() {
42 case protoreflect.BoolKind:
43 b = protowire.AppendVarint(b, protowire.EncodeBool(v.Bool()))
44 case protoreflect.EnumKind:
45 b = protowire.AppendVarint(b, uint64(v.Enum()))
46 case protoreflect.Int32Kind:
47 b = protowire.AppendVarint(b, uint64(int32(v.Int())))
48 case protoreflect.Sint32Kind:
49 b = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(int32(v.Int()))))
50 case protoreflect.Uint32Kind:
51 b = protowire.AppendVarint(b, uint64(uint32(v.Uint())))
52 case protoreflect.Int64Kind:
53 b = protowire.AppendVarint(b, uint64(v.Int()))
54 case protoreflect.Sint64Kind:
55 b = protowire.AppendVarint(b, protowire.EncodeZigZag(v.Int()))
56 case protoreflect.Uint64Kind:
57 b = protowire.AppendVarint(b, v.Uint())
58 case protoreflect.Sfixed32Kind:
59 b = protowire.AppendFixed32(b, uint32(v.Int()))
60 case protoreflect.Fixed32Kind:
61 b = protowire.AppendFixed32(b, uint32(v.Uint()))
62 case protoreflect.FloatKind:
63 b = protowire.AppendFixed32(b, math.Float32bits(float32(v.Float())))
64 case protoreflect.Sfixed64Kind:
65 b = protowire.AppendFixed64(b, uint64(v.Int()))
66 case protoreflect.Fixed64Kind:
67 b = protowire.AppendFixed64(b, v.Uint())
68 case protoreflect.DoubleKind:
69 b = protowire.AppendFixed64(b, math.Float64bits(v.Float()))
70 case protoreflect.StringKind:
71 if strs.EnforceUTF8(fd) && !utf8.ValidString(v.String()) {
72 return b, errors.InvalidUTF8(string(fd.FullName()))
73 }
74 b = protowire.AppendString(b, v.String())
75 case protoreflect.BytesKind:
76 b = protowire.AppendBytes(b, v.Bytes())
77 case protoreflect.MessageKind:
78 var pos int
79 var err error
80 b, pos = appendSpeculativeLength(b)
81 b, err = o.marshalMessage(b, v.Message())
82 if err != nil {
83 return b, err
84 }
85 b = finishSpeculativeLength(b, pos)
86 case protoreflect.GroupKind:
87 var err error
88 b, err = o.marshalMessage(b, v.Message())
89 if err != nil {
90 return b, err
91 }
92 b = protowire.AppendVarint(b, protowire.EncodeTag(fd.Number(), protowire.EndGroupType))
93 default:
94 return b, errors.New("invalid kind %v", fd.Kind())
95 }
96 return b, nil
97}