package protodesc
import (
)
type descsByName map[protoreflect.FullName]protoreflect.Descriptor
func ( descsByName) ( []*descriptorpb.EnumDescriptorProto, protoreflect.Descriptor, *strs.Builder) ( []filedesc.Enum, error) {
= make([]filedesc.Enum, len())
for , := range {
:= &[]
.L2 = new(filedesc.EnumL2)
if .L0, = .makeBase(, , .GetName(), , ); != nil {
return nil,
}
if := .GetOptions(); != nil {
= proto.Clone().(*descriptorpb.EnumOptions)
.L2.Options = func() protoreflect.ProtoMessage { return }
}
for , := range .GetReservedName() {
.L2.ReservedNames.List = append(.L2.ReservedNames.List, protoreflect.Name())
}
for , := range .GetReservedRange() {
.L2.ReservedRanges.List = append(.L2.ReservedRanges.List, [2]protoreflect.EnumNumber{
protoreflect.EnumNumber(.GetStart()),
protoreflect.EnumNumber(.GetEnd()),
})
}
if .L2.Values.List, = .initEnumValuesFromDescriptorProto(.GetValue(), , ); != nil {
return nil,
}
}
return , nil
}
func ( descsByName) ( []*descriptorpb.EnumValueDescriptorProto, protoreflect.Descriptor, *strs.Builder) ( []filedesc.EnumValue, error) {
= make([]filedesc.EnumValue, len())
for , := range {
:= &[]
if .L0, = .makeBase(, , .GetName(), , ); != nil {
return nil,
}
if := .GetOptions(); != nil {
= proto.Clone().(*descriptorpb.EnumValueOptions)
.L1.Options = func() protoreflect.ProtoMessage { return }
}
.L1.Number = protoreflect.EnumNumber(.GetNumber())
}
return , nil
}
func ( descsByName) ( []*descriptorpb.DescriptorProto, protoreflect.Descriptor, *strs.Builder) ( []filedesc.Message, error) {
= make([]filedesc.Message, len())
for , := range {
:= &[]
.L2 = new(filedesc.MessageL2)
if .L0, = .makeBase(, , .GetName(), , ); != nil {
return nil,
}
if := .GetOptions(); != nil {
= proto.Clone().(*descriptorpb.MessageOptions)
.L2.Options = func() protoreflect.ProtoMessage { return }
.L1.IsMapEntry = .GetMapEntry()
.L1.IsMessageSet = .GetMessageSetWireFormat()
}
for , := range .GetReservedName() {
.L2.ReservedNames.List = append(.L2.ReservedNames.List, protoreflect.Name())
}
for , := range .GetReservedRange() {
.L2.ReservedRanges.List = append(.L2.ReservedRanges.List, [2]protoreflect.FieldNumber{
protoreflect.FieldNumber(.GetStart()),
protoreflect.FieldNumber(.GetEnd()),
})
}
for , := range .GetExtensionRange() {
.L2.ExtensionRanges.List = append(.L2.ExtensionRanges.List, [2]protoreflect.FieldNumber{
protoreflect.FieldNumber(.GetStart()),
protoreflect.FieldNumber(.GetEnd()),
})
var func() protoreflect.ProtoMessage
if := .GetOptions(); != nil {
= proto.Clone().(*descriptorpb.ExtensionRangeOptions)
= func() protoreflect.ProtoMessage { return }
}
.L2.ExtensionRangeOptions = append(.L2.ExtensionRangeOptions, )
}
if .L2.Fields.List, = .initFieldsFromDescriptorProto(.GetField(), , ); != nil {
return nil,
}
if .L2.Oneofs.List, = .initOneofsFromDescriptorProto(.GetOneofDecl(), , ); != nil {
return nil,
}
if .L1.Enums.List, = .initEnumDeclarations(.GetEnumType(), , ); != nil {
return nil,
}
if .L1.Messages.List, = .(.GetNestedType(), , ); != nil {
return nil,
}
if .L1.Extensions.List, = .initExtensionDeclarations(.GetExtension(), , ); != nil {
return nil,
}
}
return , nil
}
func ( descsByName) ( []*descriptorpb.FieldDescriptorProto, protoreflect.Descriptor, *strs.Builder) ( []filedesc.Field, error) {
= make([]filedesc.Field, len())
for , := range {
:= &[]
if .L0, = .makeBase(, , .GetName(), , ); != nil {
return nil,
}
.L1.IsProto3Optional = .GetProto3Optional()
if := .GetOptions(); != nil {
= proto.Clone().(*descriptorpb.FieldOptions)
.L1.Options = func() protoreflect.ProtoMessage { return }
.L1.IsWeak = .GetWeak()
.L1.HasPacked = .Packed != nil
.L1.IsPacked = .GetPacked()
}
.L1.Number = protoreflect.FieldNumber(.GetNumber())
.L1.Cardinality = protoreflect.Cardinality(.GetLabel())
if .Type != nil {
.L1.Kind = protoreflect.Kind(.GetType())
}
if .JsonName != nil {
.L1.StringName.InitJSON(.GetJsonName())
}
}
return , nil
}
func ( descsByName) ( []*descriptorpb.OneofDescriptorProto, protoreflect.Descriptor, *strs.Builder) ( []filedesc.Oneof, error) {
= make([]filedesc.Oneof, len())
for , := range {
:= &[]
if .L0, = .makeBase(, , .GetName(), , ); != nil {
return nil,
}
if := .GetOptions(); != nil {
= proto.Clone().(*descriptorpb.OneofOptions)
.L1.Options = func() protoreflect.ProtoMessage { return }
}
}
return , nil
}
func ( descsByName) ( []*descriptorpb.FieldDescriptorProto, protoreflect.Descriptor, *strs.Builder) ( []filedesc.Extension, error) {
= make([]filedesc.Extension, len())
for , := range {
:= &[]
.L2 = new(filedesc.ExtensionL2)
if .L0, = .makeBase(, , .GetName(), , ); != nil {
return nil,
}
if := .GetOptions(); != nil {
= proto.Clone().(*descriptorpb.FieldOptions)
.L2.Options = func() protoreflect.ProtoMessage { return }
.L2.IsPacked = .GetPacked()
}
.L1.Number = protoreflect.FieldNumber(.GetNumber())
.L1.Cardinality = protoreflect.Cardinality(.GetLabel())
if .Type != nil {
.L1.Kind = protoreflect.Kind(.GetType())
}
if .JsonName != nil {
.L2.StringName.InitJSON(.GetJsonName())
}
}
return , nil
}
func ( descsByName) ( []*descriptorpb.ServiceDescriptorProto, protoreflect.Descriptor, *strs.Builder) ( []filedesc.Service, error) {
= make([]filedesc.Service, len())
for , := range {
:= &[]
.L2 = new(filedesc.ServiceL2)
if .L0, = .makeBase(, , .GetName(), , ); != nil {
return nil,
}
if := .GetOptions(); != nil {
= proto.Clone().(*descriptorpb.ServiceOptions)
.L2.Options = func() protoreflect.ProtoMessage { return }
}
if .L2.Methods.List, = .initMethodsFromDescriptorProto(.GetMethod(), , ); != nil {
return nil,
}
}
return , nil
}
func ( descsByName) ( []*descriptorpb.MethodDescriptorProto, protoreflect.Descriptor, *strs.Builder) ( []filedesc.Method, error) {
= make([]filedesc.Method, len())
for , := range {
:= &[]
if .L0, = .makeBase(, , .GetName(), , ); != nil {
return nil,
}
if := .GetOptions(); != nil {
= proto.Clone().(*descriptorpb.MethodOptions)
.L1.Options = func() protoreflect.ProtoMessage { return }
}
.L1.IsStreamingClient = .GetClientStreaming()
.L1.IsStreamingServer = .GetServerStreaming()
}
return , nil
}
func ( descsByName) (, protoreflect.Descriptor, string, int, *strs.Builder) (filedesc.BaseL0, error) {
if !protoreflect.Name().IsValid() {
return filedesc.BaseL0{}, errors.New("descriptor %q has an invalid nested name: %q", .FullName(), )
}
var protoreflect.FullName
if , := .(protoreflect.EnumDescriptor); {
= .AppendFullName(.FullName().Parent(), protoreflect.Name())
} else {
= .AppendFullName(.FullName(), protoreflect.Name())
}
if , := []; {
return filedesc.BaseL0{}, errors.New("descriptor %q already declared", )
}
[] =
return filedesc.BaseL0{
FullName: ,
ParentFile: .ParentFile().(*filedesc.File),
Parent: ,
Index: ,
}, nil
}