// Copyright 2018 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // Code generated by generate-types. DO NOT EDIT. package impl import ( "reflect" "google.golang.org/protobuf/reflect/protoreflect" ) func getterForNullableScalar(fd protoreflect.FieldDescriptor, fs reflect.StructField, conv Converter, fieldOffset offset) func(p pointer) protoreflect.Value { ft := fs.Type if ft.Kind() == reflect.Ptr { ft = ft.Elem() } if fd.Kind() == protoreflect.EnumKind { elemType := fs.Type.Elem() // Enums for nullable types. return func(p pointer) protoreflect.Value { if p.IsNil() { return conv.Zero() } rv := p.Apply(fieldOffset).Elem().AsValueOf(elemType) if rv.IsNil() { return conv.Zero() } return conv.PBValueOf(rv.Elem()) } } switch ft.Kind() { case reflect.Bool: return func(p pointer) protoreflect.Value { if p.IsNil() { return conv.Zero() } x := p.Apply(fieldOffset).BoolPtr() if *x == nil { return conv.Zero() } return protoreflect.ValueOfBool(**x) } case reflect.Int32: return func(p pointer) protoreflect.Value { if p.IsNil() { return conv.Zero() } x := p.Apply(fieldOffset).Int32Ptr() if *x == nil { return conv.Zero() } return protoreflect.ValueOfInt32(**x) } case reflect.Uint32: return func(p pointer) protoreflect.Value { if p.IsNil() { return conv.Zero() } x := p.Apply(fieldOffset).Uint32Ptr() if *x == nil { return conv.Zero() } return protoreflect.ValueOfUint32(**x) } case reflect.Int64: return func(p pointer) protoreflect.Value { if p.IsNil() { return conv.Zero() } x := p.Apply(fieldOffset).Int64Ptr() if *x == nil { return conv.Zero() } return protoreflect.ValueOfInt64(**x) } case reflect.Uint64: return func(p pointer) protoreflect.Value { if p.IsNil() { return conv.Zero() } x := p.Apply(fieldOffset).Uint64Ptr() if *x == nil { return conv.Zero() } return protoreflect.ValueOfUint64(**x) } case reflect.Float32: return func(p pointer) protoreflect.Value { if p.IsNil() { return conv.Zero() } x := p.Apply(fieldOffset).Float32Ptr() if *x == nil { return conv.Zero() } return protoreflect.ValueOfFloat32(**x) } case reflect.Float64: return func(p pointer) protoreflect.Value { if p.IsNil() { return conv.Zero() } x := p.Apply(fieldOffset).Float64Ptr() if *x == nil { return conv.Zero() } return protoreflect.ValueOfFloat64(**x) } case reflect.String: if fd.Kind() == protoreflect.BytesKind { return func(p pointer) protoreflect.Value { if p.IsNil() { return conv.Zero() } x := p.Apply(fieldOffset).StringPtr() if *x == nil { return conv.Zero() } if len(**x) == 0 { return protoreflect.ValueOfBytes(nil) } return protoreflect.ValueOfBytes([]byte(**x)) } } return func(p pointer) protoreflect.Value { if p.IsNil() { return conv.Zero() } x := p.Apply(fieldOffset).StringPtr() if *x == nil { return conv.Zero() } return protoreflect.ValueOfString(**x) } case reflect.Slice: if fd.Kind() == protoreflect.StringKind { return func(p pointer) protoreflect.Value { if p.IsNil() { return conv.Zero() } x := p.Apply(fieldOffset).Bytes() if len(*x) == 0 { return conv.Zero() } return protoreflect.ValueOfString(string(*x)) } } return func(p pointer) protoreflect.Value { if p.IsNil() { return conv.Zero() } x := p.Apply(fieldOffset).Bytes() if *x == nil { return conv.Zero() } return protoreflect.ValueOfBytes(*x) } } panic("unexpected protobuf kind: " + ft.Kind().String()) } func getterForDirectScalar(fd protoreflect.FieldDescriptor, fs reflect.StructField, conv Converter, fieldOffset offset) func(p pointer) protoreflect.Value { ft := fs.Type if fd.Kind() == protoreflect.EnumKind { // Enums for non nullable types. return func(p pointer) protoreflect.Value { if p.IsNil() { return conv.Zero() } rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() return conv.PBValueOf(rv) } } switch ft.Kind() { case reflect.Bool: return func(p pointer) protoreflect.Value { if p.IsNil() { return conv.Zero() } x := p.Apply(fieldOffset).Bool() return protoreflect.ValueOfBool(*x) } case reflect.Int32: return func(p pointer) protoreflect.Value { if p.IsNil() { return conv.Zero() } x := p.Apply(fieldOffset).Int32() return protoreflect.ValueOfInt32(*x) } case reflect.Uint32: return func(p pointer) protoreflect.Value { if p.IsNil() { return conv.Zero() } x := p.Apply(fieldOffset).Uint32() return protoreflect.ValueOfUint32(*x) } case reflect.Int64: return func(p pointer) protoreflect.Value { if p.IsNil() { return conv.Zero() } x := p.Apply(fieldOffset).Int64() return protoreflect.ValueOfInt64(*x) } case reflect.Uint64: return func(p pointer) protoreflect.Value { if p.IsNil() { return conv.Zero() } x := p.Apply(fieldOffset).Uint64() return protoreflect.ValueOfUint64(*x) } case reflect.Float32: return func(p pointer) protoreflect.Value { if p.IsNil() { return conv.Zero() } x := p.Apply(fieldOffset).Float32() return protoreflect.ValueOfFloat32(*x) } case reflect.Float64: return func(p pointer) protoreflect.Value { if p.IsNil() { return conv.Zero() } x := p.Apply(fieldOffset).Float64() return protoreflect.ValueOfFloat64(*x) } case reflect.String: if fd.Kind() == protoreflect.BytesKind { return func(p pointer) protoreflect.Value { if p.IsNil() { return conv.Zero() } x := p.Apply(fieldOffset).String() if len(*x) == 0 { return protoreflect.ValueOfBytes(nil) } return protoreflect.ValueOfBytes([]byte(*x)) } } return func(p pointer) protoreflect.Value { if p.IsNil() { return conv.Zero() } x := p.Apply(fieldOffset).String() return protoreflect.ValueOfString(*x) } case reflect.Slice: if fd.Kind() == protoreflect.StringKind { return func(p pointer) protoreflect.Value { if p.IsNil() { return conv.Zero() } x := p.Apply(fieldOffset).Bytes() return protoreflect.ValueOfString(string(*x)) } } return func(p pointer) protoreflect.Value { if p.IsNil() { return conv.Zero() } x := p.Apply(fieldOffset).Bytes() return protoreflect.ValueOfBytes(*x) } } panic("unexpected protobuf kind: " + ft.Kind().String()) }