message_reflect_field_gen.go

  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
  7package impl
  8
  9import (
 10	"reflect"
 11
 12	"google.golang.org/protobuf/reflect/protoreflect"
 13)
 14
 15func getterForNullableScalar(fd protoreflect.FieldDescriptor, fs reflect.StructField, conv Converter, fieldOffset offset) func(p pointer) protoreflect.Value {
 16	ft := fs.Type
 17	if ft.Kind() == reflect.Ptr {
 18		ft = ft.Elem()
 19	}
 20	if fd.Kind() == protoreflect.EnumKind {
 21		elemType := fs.Type.Elem()
 22		// Enums for nullable types.
 23		return func(p pointer) protoreflect.Value {
 24			if p.IsNil() {
 25				return conv.Zero()
 26			}
 27			rv := p.Apply(fieldOffset).Elem().AsValueOf(elemType)
 28			if rv.IsNil() {
 29				return conv.Zero()
 30			}
 31			return conv.PBValueOf(rv.Elem())
 32		}
 33	}
 34	switch ft.Kind() {
 35	case reflect.Bool:
 36		return func(p pointer) protoreflect.Value {
 37			if p.IsNil() {
 38				return conv.Zero()
 39			}
 40			x := p.Apply(fieldOffset).BoolPtr()
 41			if *x == nil {
 42				return conv.Zero()
 43			}
 44			return protoreflect.ValueOfBool(**x)
 45		}
 46	case reflect.Int32:
 47		return func(p pointer) protoreflect.Value {
 48			if p.IsNil() {
 49				return conv.Zero()
 50			}
 51			x := p.Apply(fieldOffset).Int32Ptr()
 52			if *x == nil {
 53				return conv.Zero()
 54			}
 55			return protoreflect.ValueOfInt32(**x)
 56		}
 57	case reflect.Uint32:
 58		return func(p pointer) protoreflect.Value {
 59			if p.IsNil() {
 60				return conv.Zero()
 61			}
 62			x := p.Apply(fieldOffset).Uint32Ptr()
 63			if *x == nil {
 64				return conv.Zero()
 65			}
 66			return protoreflect.ValueOfUint32(**x)
 67		}
 68	case reflect.Int64:
 69		return func(p pointer) protoreflect.Value {
 70			if p.IsNil() {
 71				return conv.Zero()
 72			}
 73			x := p.Apply(fieldOffset).Int64Ptr()
 74			if *x == nil {
 75				return conv.Zero()
 76			}
 77			return protoreflect.ValueOfInt64(**x)
 78		}
 79	case reflect.Uint64:
 80		return func(p pointer) protoreflect.Value {
 81			if p.IsNil() {
 82				return conv.Zero()
 83			}
 84			x := p.Apply(fieldOffset).Uint64Ptr()
 85			if *x == nil {
 86				return conv.Zero()
 87			}
 88			return protoreflect.ValueOfUint64(**x)
 89		}
 90	case reflect.Float32:
 91		return func(p pointer) protoreflect.Value {
 92			if p.IsNil() {
 93				return conv.Zero()
 94			}
 95			x := p.Apply(fieldOffset).Float32Ptr()
 96			if *x == nil {
 97				return conv.Zero()
 98			}
 99			return protoreflect.ValueOfFloat32(**x)
100		}
101	case reflect.Float64:
102		return func(p pointer) protoreflect.Value {
103			if p.IsNil() {
104				return conv.Zero()
105			}
106			x := p.Apply(fieldOffset).Float64Ptr()
107			if *x == nil {
108				return conv.Zero()
109			}
110			return protoreflect.ValueOfFloat64(**x)
111		}
112	case reflect.String:
113		if fd.Kind() == protoreflect.BytesKind {
114			return func(p pointer) protoreflect.Value {
115				if p.IsNil() {
116					return conv.Zero()
117				}
118				x := p.Apply(fieldOffset).StringPtr()
119				if *x == nil {
120					return conv.Zero()
121				}
122				if len(**x) == 0 {
123					return protoreflect.ValueOfBytes(nil)
124				}
125				return protoreflect.ValueOfBytes([]byte(**x))
126			}
127		}
128		return func(p pointer) protoreflect.Value {
129			if p.IsNil() {
130				return conv.Zero()
131			}
132			x := p.Apply(fieldOffset).StringPtr()
133			if *x == nil {
134				return conv.Zero()
135			}
136			return protoreflect.ValueOfString(**x)
137		}
138	case reflect.Slice:
139		if fd.Kind() == protoreflect.StringKind {
140			return func(p pointer) protoreflect.Value {
141				if p.IsNil() {
142					return conv.Zero()
143				}
144				x := p.Apply(fieldOffset).Bytes()
145				if len(*x) == 0 {
146					return conv.Zero()
147				}
148				return protoreflect.ValueOfString(string(*x))
149			}
150		}
151		return func(p pointer) protoreflect.Value {
152			if p.IsNil() {
153				return conv.Zero()
154			}
155			x := p.Apply(fieldOffset).Bytes()
156			if *x == nil {
157				return conv.Zero()
158			}
159			return protoreflect.ValueOfBytes(*x)
160		}
161	}
162	panic("unexpected protobuf kind: " + ft.Kind().String())
163}
164
165func getterForDirectScalar(fd protoreflect.FieldDescriptor, fs reflect.StructField, conv Converter, fieldOffset offset) func(p pointer) protoreflect.Value {
166	ft := fs.Type
167	if fd.Kind() == protoreflect.EnumKind {
168		// Enums for non nullable types.
169		return func(p pointer) protoreflect.Value {
170			if p.IsNil() {
171				return conv.Zero()
172			}
173			rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
174			return conv.PBValueOf(rv)
175		}
176	}
177	switch ft.Kind() {
178	case reflect.Bool:
179		return func(p pointer) protoreflect.Value {
180			if p.IsNil() {
181				return conv.Zero()
182			}
183			x := p.Apply(fieldOffset).Bool()
184			return protoreflect.ValueOfBool(*x)
185		}
186	case reflect.Int32:
187		return func(p pointer) protoreflect.Value {
188			if p.IsNil() {
189				return conv.Zero()
190			}
191			x := p.Apply(fieldOffset).Int32()
192			return protoreflect.ValueOfInt32(*x)
193		}
194	case reflect.Uint32:
195		return func(p pointer) protoreflect.Value {
196			if p.IsNil() {
197				return conv.Zero()
198			}
199			x := p.Apply(fieldOffset).Uint32()
200			return protoreflect.ValueOfUint32(*x)
201		}
202	case reflect.Int64:
203		return func(p pointer) protoreflect.Value {
204			if p.IsNil() {
205				return conv.Zero()
206			}
207			x := p.Apply(fieldOffset).Int64()
208			return protoreflect.ValueOfInt64(*x)
209		}
210	case reflect.Uint64:
211		return func(p pointer) protoreflect.Value {
212			if p.IsNil() {
213				return conv.Zero()
214			}
215			x := p.Apply(fieldOffset).Uint64()
216			return protoreflect.ValueOfUint64(*x)
217		}
218	case reflect.Float32:
219		return func(p pointer) protoreflect.Value {
220			if p.IsNil() {
221				return conv.Zero()
222			}
223			x := p.Apply(fieldOffset).Float32()
224			return protoreflect.ValueOfFloat32(*x)
225		}
226	case reflect.Float64:
227		return func(p pointer) protoreflect.Value {
228			if p.IsNil() {
229				return conv.Zero()
230			}
231			x := p.Apply(fieldOffset).Float64()
232			return protoreflect.ValueOfFloat64(*x)
233		}
234	case reflect.String:
235		if fd.Kind() == protoreflect.BytesKind {
236			return func(p pointer) protoreflect.Value {
237				if p.IsNil() {
238					return conv.Zero()
239				}
240				x := p.Apply(fieldOffset).String()
241				if len(*x) == 0 {
242					return protoreflect.ValueOfBytes(nil)
243				}
244				return protoreflect.ValueOfBytes([]byte(*x))
245			}
246		}
247		return func(p pointer) protoreflect.Value {
248			if p.IsNil() {
249				return conv.Zero()
250			}
251			x := p.Apply(fieldOffset).String()
252			return protoreflect.ValueOfString(*x)
253		}
254	case reflect.Slice:
255		if fd.Kind() == protoreflect.StringKind {
256			return func(p pointer) protoreflect.Value {
257				if p.IsNil() {
258					return conv.Zero()
259				}
260				x := p.Apply(fieldOffset).Bytes()
261				return protoreflect.ValueOfString(string(*x))
262			}
263		}
264		return func(p pointer) protoreflect.Value {
265			if p.IsNil() {
266				return conv.Zero()
267			}
268			x := p.Apply(fieldOffset).Bytes()
269			return protoreflect.ValueOfBytes(*x)
270		}
271	}
272	panic("unexpected protobuf kind: " + ft.Kind().String())
273}