Documentation ¶
Overview ¶
Package gogoproto provides extensions for protocol buffers to achieve:
- fast marshalling and unmarshalling.
- peace of mind by optionally generating test and benchmark code.
- more canonical Go structures.
- less typing by optionally generating extra helper code.
- goprotobuf compatibility
More Canonical Go Structures ¶
A lot of time working with a goprotobuf struct will lead you to a place where you create another struct that is easier to work with and then have a function to copy the values between the two structs. You might also find that basic structs that started their life as part of an API need to be sent over the wire. With gob, you could just send it. With goprotobuf, you need to make a parallel struct. Gogoprotobuf tries to fix these problems with the nullable, embed, customtype and customname field extensions.
- nullable, if false, a field is generated without a pointer (see warning below).
- embed, if true, the field is generated as an embedded field.
- customtype, It works with the Marshal and Unmarshal methods, to allow you to have your own types in your struct, but marshal to bytes. For example, custom.Uuid or custom.Fixed128
- customname (beta), Changes the generated fieldname. This is especially useful when generated methods conflict with fieldnames.
- casttype (beta), Changes the generated fieldtype. All generated code assumes that this type is castable to the protocol buffer field type. It does not work for structs or enums.
- castkey (beta), Changes the generated fieldtype for a map key. All generated code assumes that this type is castable to the protocol buffer field type. Only supported on maps.
- castvalue (beta), Changes the generated fieldtype for a map value. All generated code assumes that this type is castable to the protocol buffer field type. Only supported on maps.
Warning about nullable: According to the Protocol Buffer specification, you should be able to tell whether a field is set or unset. With the option nullable=false this feature is lost, since your non-nullable fields will always be set. It can be seen as a layer on top of Protocol Buffers, where before and after marshalling all non-nullable fields are set and they cannot be unset.
Let us look at:
github.com/gogo/protobuf/test/example/example.proto
for a quicker overview.
The following message:
package test; import "github.com/gogo/protobuf/gogoproto/gogo.proto"; message A { optional string Description = 1 [(gogoproto.nullable) = false]; optional int64 Number = 2 [(gogoproto.nullable) = false]; optional bytes Id = 3 [(gogoproto.customtype) = "github.com/gogo/protobuf/test/custom.Uuid", (gogoproto.nullable) = false]; }
Will generate a go struct which looks a lot like this:
type A struct { Description string Number int64 Id github_com_gogo_protobuf_test_custom.Uuid }
You will see there are no pointers, since all fields are non-nullable. You will also see a custom type which marshals to a string. Be warned it is your responsibility to test your custom types thoroughly. You should think of every possible empty and nil case for your marshaling, unmarshaling and size methods.
Next we will embed the message A in message B.
message B { optional A A = 1 [(gogoproto.nullable) = false, (gogoproto.embed) = true]; repeated bytes G = 2 [(gogoproto.customtype) = "github.com/gogo/protobuf/test/custom.Uint128", (gogoproto.nullable) = false]; }
See below that A is embedded in B.
type B struct { A G []github_com_gogo_protobuf_test_custom.Uint128 }
Also see the repeated custom type.
type Uint128 [2]uint64
Next we will create a custom name for one of our fields.
message C { optional int64 size = 1 [(gogoproto.customname) = "MySize"]; }
See below that the field's name is MySize and not Size.
type C struct { MySize *int64 }
The is useful when having a protocol buffer message with a field name which conflicts with a generated method. As an example, having a field name size and using the sizer plugin to generate a Size method will cause a go compiler error. Using customname you can fix this error without changing the field name. This is typically useful when working with a protocol buffer that was designed before these methods and/or the go language were avialable.
Gogoprotobuf also has some more subtle changes, these could be changed back:
- the generated package name for imports do not have the extra /filename.pb, but are actually the imports specified in the .proto file.
Gogoprotobuf also has lost some features which should be brought back with time:
- Marshalling and unmarshalling with reflect and without the unsafe package, this requires work in pointer_reflect.go
Why does nullable break protocol buffer specifications:
The protocol buffer specification states, somewhere, that you should be able to tell whether a field is set or unset. With the option nullable=false this feature is lost, since your non-nullable fields will always be set. It can be seen as a layer on top of protocol buffers, where before and after marshalling all non-nullable fields are set and they cannot be unset.
Goprotobuf Compatibility:
Gogoprotobuf is compatible with Goprotobuf, because it is compatible with protocol buffers. Gogoprotobuf generates the same code as goprotobuf if no extensions are used. The enumprefix, getters and stringer extensions can be used to remove some of the unnecessary code generated by goprotobuf:
- gogoproto_import, if false, the generated code imports github.com/golang/protobuf/proto instead of github.com/gogo/protobuf/proto.
- goproto_enum_prefix, if false, generates the enum constant names without the messagetype prefix
- goproto_enum_stringer (experimental), if false, the enum is generated without the default string method, this is useful for rather using enum_stringer, or allowing you to write your own string method.
- goproto_getters, if false, the message is generated without get methods, this is useful when you would rather want to use face
- goproto_stringer, if false, the message is generated without the default string method, this is useful for rather using stringer, or allowing you to write your own string method.
- goproto_extensions_map (beta), if false, the extensions field is generated as type []byte instead of type map[int32]proto.Extension
- goproto_unrecognized (beta), if false, XXX_unrecognized field is not generated. This is useful in conjunction with gogoproto.nullable=false, to generate structures completely devoid of pointers and reduce GC pressure at the cost of losing information about unrecognized fields.
- goproto_registration (beta), if true, the generated files will register all messages and types against both gogo/protobuf and golang/protobuf. This is necessary when using third-party packages which read registrations from golang/protobuf (such as the grpc-gateway).
Less Typing and Peace of Mind is explained in their specific plugin folders godoc:
- github.com/gogo/protobuf/plugin/<extension_name>
If you do not use any of these extension the code that is generated will be the same as if goprotobuf has generated it.
The most complete way to see examples is to look at
github.com/gogo/protobuf/test/thetest.proto
Gogoprototest is a seperate project, because we want to keep gogoprotobuf independant of goprotobuf, but we still want to test it thoroughly.
Index ¶
- Variables
- func EnabledGoEnumPrefix(file *google_protobuf.FileDescriptorProto, ...) bool
- func EnabledGoStringer(file *google_protobuf.FileDescriptorProto, ...) bool
- func GetCastKey(field *google_protobuf.FieldDescriptorProto) string
- func GetCastType(field *google_protobuf.FieldDescriptorProto) string
- func GetCastValue(field *google_protobuf.FieldDescriptorProto) string
- func GetCustomName(field *google_protobuf.FieldDescriptorProto) string
- func GetCustomType(field *google_protobuf.FieldDescriptorProto) string
- func GetEnumCustomName(field *google_protobuf.EnumDescriptorProto) string
- func GetEnumValueCustomName(field *google_protobuf.EnumValueDescriptorProto) string
- func GetJsonTag(field *google_protobuf.FieldDescriptorProto) *string
- func GetMoreTags(field *google_protobuf.FieldDescriptorProto) *string
- func HasBenchGen(file *google_protobuf.FileDescriptorProto, ...) bool
- func HasCompare(file *google_protobuf.FileDescriptorProto, ...) bool
- func HasDescription(file *google_protobuf.FileDescriptorProto, ...) bool
- func HasEnumDecl(file *google_protobuf.FileDescriptorProto, ...) bool
- func HasEqual(file *google_protobuf.FileDescriptorProto, ...) bool
- func HasExtensionsMap(file *google_protobuf.FileDescriptorProto, ...) bool
- func HasGoGetters(file *google_protobuf.FileDescriptorProto, ...) bool
- func HasGoString(file *google_protobuf.FileDescriptorProto, ...) bool
- func HasMessageName(file *google_protobuf.FileDescriptorProto, ...) bool
- func HasPopulate(file *google_protobuf.FileDescriptorProto, ...) bool
- func HasTestGen(file *google_protobuf.FileDescriptorProto, ...) bool
- func HasTypeDecl(file *google_protobuf.FileDescriptorProto, ...) bool
- func HasUnrecognized(file *google_protobuf.FileDescriptorProto, ...) bool
- func HasVerboseEqual(file *google_protobuf.FileDescriptorProto, ...) bool
- func ImportsGoGoProto(file *google_protobuf.FileDescriptorProto) bool
- func IsCastKey(field *google_protobuf.FieldDescriptorProto) bool
- func IsCastType(field *google_protobuf.FieldDescriptorProto) bool
- func IsCastValue(field *google_protobuf.FieldDescriptorProto) bool
- func IsCustomName(field *google_protobuf.FieldDescriptorProto) bool
- func IsCustomType(field *google_protobuf.FieldDescriptorProto) bool
- func IsEmbed(field *google_protobuf.FieldDescriptorProto) bool
- func IsEnumCustomName(field *google_protobuf.EnumDescriptorProto) bool
- func IsEnumStringer(file *google_protobuf.FileDescriptorProto, ...) bool
- func IsEnumValueCustomName(field *google_protobuf.EnumValueDescriptorProto) bool
- func IsFace(file *google_protobuf.FileDescriptorProto, ...) bool
- func IsGoEnumStringer(file *google_protobuf.FileDescriptorProto, ...) bool
- func IsMarshaler(file *google_protobuf.FileDescriptorProto, ...) bool
- func IsNullable(field *google_protobuf.FieldDescriptorProto) bool
- func IsProto3(file *google_protobuf.FileDescriptorProto) bool
- func IsProtoSizer(file *google_protobuf.FileDescriptorProto, ...) bool
- func IsSizer(file *google_protobuf.FileDescriptorProto, ...) bool
- func IsStableMarshaler(file *google_protobuf.FileDescriptorProto, ...) bool
- func IsStdDuration(field *google_protobuf.FieldDescriptorProto) bool
- func IsStdTime(field *google_protobuf.FieldDescriptorProto) bool
- func IsStringer(file *google_protobuf.FileDescriptorProto, ...) bool
- func IsUnion(file *google_protobuf.FileDescriptorProto, ...) bool
- func IsUnmarshaler(file *google_protobuf.FileDescriptorProto, ...) bool
- func IsUnsafeMarshaler(file *google_protobuf.FileDescriptorProto, ...) bool
- func IsUnsafeUnmarshaler(file *google_protobuf.FileDescriptorProto, ...) bool
- func NeedsNilCheck(proto3 bool, field *google_protobuf.FieldDescriptorProto) bool
- func RegistersGolangProto(file *google_protobuf.FileDescriptorProto) bool
- type EnableFunc
Constants ¶
This section is empty.
Variables ¶
var E_Benchgen = &proto.ExtensionDesc{ ExtendedType: (*descriptor.MessageOptions)(nil), ExtensionType: (*bool)(nil), Field: 64016, Name: "gogoproto.benchgen", Tag: "varint,64016,opt,name=benchgen", Filename: "gogo.proto", }
var E_BenchgenAll = &proto.ExtensionDesc{ ExtendedType: (*descriptor.FileOptions)(nil), ExtensionType: (*bool)(nil), Field: 63016, Name: "gogoproto.benchgen_all", Tag: "varint,63016,opt,name=benchgen_all,json=benchgenAll", Filename: "gogo.proto", }
var E_Castkey = &proto.ExtensionDesc{ ExtendedType: (*descriptor.FieldOptions)(nil), ExtensionType: (*string)(nil), Field: 65008, Name: "gogoproto.castkey", Tag: "bytes,65008,opt,name=castkey", Filename: "gogo.proto", }
var E_Casttype = &proto.ExtensionDesc{ ExtendedType: (*descriptor.FieldOptions)(nil), ExtensionType: (*string)(nil), Field: 65007, Name: "gogoproto.casttype", Tag: "bytes,65007,opt,name=casttype", Filename: "gogo.proto", }
var E_Castvalue = &proto.ExtensionDesc{ ExtendedType: (*descriptor.FieldOptions)(nil), ExtensionType: (*string)(nil), Field: 65009, Name: "gogoproto.castvalue", Tag: "bytes,65009,opt,name=castvalue", Filename: "gogo.proto", }
var E_Compare = &proto.ExtensionDesc{ ExtendedType: (*descriptor.MessageOptions)(nil), ExtensionType: (*bool)(nil), Field: 64029, Name: "gogoproto.compare", Tag: "varint,64029,opt,name=compare", Filename: "gogo.proto", }
var E_CompareAll = &proto.ExtensionDesc{ ExtendedType: (*descriptor.FileOptions)(nil), ExtensionType: (*bool)(nil), Field: 63029, Name: "gogoproto.compare_all", Tag: "varint,63029,opt,name=compare_all,json=compareAll", Filename: "gogo.proto", }
var E_Customname = &proto.ExtensionDesc{ ExtendedType: (*descriptor.FieldOptions)(nil), ExtensionType: (*string)(nil), Field: 65004, Name: "gogoproto.customname", Tag: "bytes,65004,opt,name=customname", Filename: "gogo.proto", }
var E_Customtype = &proto.ExtensionDesc{ ExtendedType: (*descriptor.FieldOptions)(nil), ExtensionType: (*string)(nil), Field: 65003, Name: "gogoproto.customtype", Tag: "bytes,65003,opt,name=customtype", Filename: "gogo.proto", }
var E_Description = &proto.ExtensionDesc{ ExtendedType: (*descriptor.MessageOptions)(nil), ExtensionType: (*bool)(nil), Field: 64014, Name: "gogoproto.description", Tag: "varint,64014,opt,name=description", Filename: "gogo.proto", }
var E_DescriptionAll = &proto.ExtensionDesc{ ExtendedType: (*descriptor.FileOptions)(nil), ExtensionType: (*bool)(nil), Field: 63014, Name: "gogoproto.description_all", Tag: "varint,63014,opt,name=description_all,json=descriptionAll", Filename: "gogo.proto", }
var E_Embed = &proto.ExtensionDesc{ ExtendedType: (*descriptor.FieldOptions)(nil), ExtensionType: (*bool)(nil), Field: 65002, Name: "gogoproto.embed", Tag: "varint,65002,opt,name=embed", Filename: "gogo.proto", }
var E_EnumCustomname = &proto.ExtensionDesc{ ExtendedType: (*descriptor.EnumOptions)(nil), ExtensionType: (*string)(nil), Field: 62023, Name: "gogoproto.enum_customname", Tag: "bytes,62023,opt,name=enum_customname,json=enumCustomname", Filename: "gogo.proto", }
var E_EnumStringer = &proto.ExtensionDesc{ ExtendedType: (*descriptor.EnumOptions)(nil), ExtensionType: (*bool)(nil), Field: 62022, Name: "gogoproto.enum_stringer", Tag: "varint,62022,opt,name=enum_stringer,json=enumStringer", Filename: "gogo.proto", }
var E_EnumStringerAll = &proto.ExtensionDesc{ ExtendedType: (*descriptor.FileOptions)(nil), ExtensionType: (*bool)(nil), Field: 63022, Name: "gogoproto.enum_stringer_all", Tag: "varint,63022,opt,name=enum_stringer_all,json=enumStringerAll", Filename: "gogo.proto", }
var E_Enumdecl = &proto.ExtensionDesc{ ExtendedType: (*descriptor.EnumOptions)(nil), ExtensionType: (*bool)(nil), Field: 62024, Name: "gogoproto.enumdecl", Tag: "varint,62024,opt,name=enumdecl", Filename: "gogo.proto", }
var E_EnumdeclAll = &proto.ExtensionDesc{ ExtendedType: (*descriptor.FileOptions)(nil), ExtensionType: (*bool)(nil), Field: 63031, Name: "gogoproto.enumdecl_all", Tag: "varint,63031,opt,name=enumdecl_all,json=enumdeclAll", Filename: "gogo.proto", }
var E_EnumvalueCustomname = &proto.ExtensionDesc{ ExtendedType: (*descriptor.EnumValueOptions)(nil), ExtensionType: (*string)(nil), Field: 66001, Name: "gogoproto.enumvalue_customname", Tag: "bytes,66001,opt,name=enumvalue_customname,json=enumvalueCustomname", Filename: "gogo.proto", }
var E_Equal = &proto.ExtensionDesc{ ExtendedType: (*descriptor.MessageOptions)(nil), ExtensionType: (*bool)(nil), Field: 64013, Name: "gogoproto.equal", Tag: "varint,64013,opt,name=equal", Filename: "gogo.proto", }
var E_EqualAll = &proto.ExtensionDesc{ ExtendedType: (*descriptor.FileOptions)(nil), ExtensionType: (*bool)(nil), Field: 63013, Name: "gogoproto.equal_all", Tag: "varint,63013,opt,name=equal_all,json=equalAll", Filename: "gogo.proto", }
var E_Face = &proto.ExtensionDesc{ ExtendedType: (*descriptor.MessageOptions)(nil), ExtensionType: (*bool)(nil), Field: 64005, Name: "gogoproto.face", Tag: "varint,64005,opt,name=face", Filename: "gogo.proto", }
var E_FaceAll = &proto.ExtensionDesc{ ExtendedType: (*descriptor.FileOptions)(nil), ExtensionType: (*bool)(nil), Field: 63005, Name: "gogoproto.face_all", Tag: "varint,63005,opt,name=face_all,json=faceAll", Filename: "gogo.proto", }
var E_GogoprotoImport = &proto.ExtensionDesc{ ExtendedType: (*descriptor.FileOptions)(nil), ExtensionType: (*bool)(nil), Field: 63027, Name: "gogoproto.gogoproto_import", Tag: "varint,63027,opt,name=gogoproto_import,json=gogoprotoImport", Filename: "gogo.proto", }
var E_GoprotoEnumPrefix = &proto.ExtensionDesc{ ExtendedType: (*descriptor.EnumOptions)(nil), ExtensionType: (*bool)(nil), Field: 62001, Name: "gogoproto.goproto_enum_prefix", Tag: "varint,62001,opt,name=goproto_enum_prefix,json=goprotoEnumPrefix", Filename: "gogo.proto", }
var E_GoprotoEnumPrefixAll = &proto.ExtensionDesc{ ExtendedType: (*descriptor.FileOptions)(nil), ExtensionType: (*bool)(nil), Field: 63002, Name: "gogoproto.goproto_enum_prefix_all", Tag: "varint,63002,opt,name=goproto_enum_prefix_all,json=goprotoEnumPrefixAll", Filename: "gogo.proto", }
var E_GoprotoEnumStringer = &proto.ExtensionDesc{ ExtendedType: (*descriptor.EnumOptions)(nil), ExtensionType: (*bool)(nil), Field: 62021, Name: "gogoproto.goproto_enum_stringer", Tag: "varint,62021,opt,name=goproto_enum_stringer,json=goprotoEnumStringer", Filename: "gogo.proto", }
var E_GoprotoEnumStringerAll = &proto.ExtensionDesc{ ExtendedType: (*descriptor.FileOptions)(nil), ExtensionType: (*bool)(nil), Field: 63021, Name: "gogoproto.goproto_enum_stringer_all", Tag: "varint,63021,opt,name=goproto_enum_stringer_all,json=goprotoEnumStringerAll", Filename: "gogo.proto", }
var E_GoprotoExtensionsMap = &proto.ExtensionDesc{ ExtendedType: (*descriptor.MessageOptions)(nil), ExtensionType: (*bool)(nil), Field: 64025, Name: "gogoproto.goproto_extensions_map", Tag: "varint,64025,opt,name=goproto_extensions_map,json=goprotoExtensionsMap", Filename: "gogo.proto", }
var E_GoprotoExtensionsMapAll = &proto.ExtensionDesc{ ExtendedType: (*descriptor.FileOptions)(nil), ExtensionType: (*bool)(nil), Field: 63025, Name: "gogoproto.goproto_extensions_map_all", Tag: "varint,63025,opt,name=goproto_extensions_map_all,json=goprotoExtensionsMapAll", Filename: "gogo.proto", }
var E_GoprotoGetters = &proto.ExtensionDesc{ ExtendedType: (*descriptor.MessageOptions)(nil), ExtensionType: (*bool)(nil), Field: 64001, Name: "gogoproto.goproto_getters", Tag: "varint,64001,opt,name=goproto_getters,json=goprotoGetters", Filename: "gogo.proto", }
var E_GoprotoGettersAll = &proto.ExtensionDesc{ ExtendedType: (*descriptor.FileOptions)(nil), ExtensionType: (*bool)(nil), Field: 63001, Name: "gogoproto.goproto_getters_all", Tag: "varint,63001,opt,name=goproto_getters_all,json=goprotoGettersAll", Filename: "gogo.proto", }
var E_GoprotoRegistration = &proto.ExtensionDesc{ ExtendedType: (*descriptor.FileOptions)(nil), ExtensionType: (*bool)(nil), Field: 63032, Name: "gogoproto.goproto_registration", Tag: "varint,63032,opt,name=goproto_registration,json=goprotoRegistration", Filename: "gogo.proto", }
var E_GoprotoStringer = &proto.ExtensionDesc{ ExtendedType: (*descriptor.MessageOptions)(nil), ExtensionType: (*bool)(nil), Field: 64003, Name: "gogoproto.goproto_stringer", Tag: "varint,64003,opt,name=goproto_stringer,json=goprotoStringer", Filename: "gogo.proto", }
var E_GoprotoStringerAll = &proto.ExtensionDesc{ ExtendedType: (*descriptor.FileOptions)(nil), ExtensionType: (*bool)(nil), Field: 63003, Name: "gogoproto.goproto_stringer_all", Tag: "varint,63003,opt,name=goproto_stringer_all,json=goprotoStringerAll", Filename: "gogo.proto", }
var E_GoprotoUnrecognized = &proto.ExtensionDesc{ ExtendedType: (*descriptor.MessageOptions)(nil), ExtensionType: (*bool)(nil), Field: 64026, Name: "gogoproto.goproto_unrecognized", Tag: "varint,64026,opt,name=goproto_unrecognized,json=goprotoUnrecognized", Filename: "gogo.proto", }
var E_GoprotoUnrecognizedAll = &proto.ExtensionDesc{ ExtendedType: (*descriptor.FileOptions)(nil), ExtensionType: (*bool)(nil), Field: 63026, Name: "gogoproto.goproto_unrecognized_all", Tag: "varint,63026,opt,name=goproto_unrecognized_all,json=goprotoUnrecognizedAll", Filename: "gogo.proto", }
var E_Gostring = &proto.ExtensionDesc{ ExtendedType: (*descriptor.MessageOptions)(nil), ExtensionType: (*bool)(nil), Field: 64006, Name: "gogoproto.gostring", Tag: "varint,64006,opt,name=gostring", Filename: "gogo.proto", }
var E_GostringAll = &proto.ExtensionDesc{ ExtendedType: (*descriptor.FileOptions)(nil), ExtensionType: (*bool)(nil), Field: 63006, Name: "gogoproto.gostring_all", Tag: "varint,63006,opt,name=gostring_all,json=gostringAll", Filename: "gogo.proto", }
var E_Jsontag = &proto.ExtensionDesc{ ExtendedType: (*descriptor.FieldOptions)(nil), ExtensionType: (*string)(nil), Field: 65005, Name: "gogoproto.jsontag", Tag: "bytes,65005,opt,name=jsontag", Filename: "gogo.proto", }
var E_Marshaler = &proto.ExtensionDesc{ ExtendedType: (*descriptor.MessageOptions)(nil), ExtensionType: (*bool)(nil), Field: 64017, Name: "gogoproto.marshaler", Tag: "varint,64017,opt,name=marshaler", Filename: "gogo.proto", }
var E_MarshalerAll = &proto.ExtensionDesc{ ExtendedType: (*descriptor.FileOptions)(nil), ExtensionType: (*bool)(nil), Field: 63017, Name: "gogoproto.marshaler_all", Tag: "varint,63017,opt,name=marshaler_all,json=marshalerAll", Filename: "gogo.proto", }
var E_Messagename = &proto.ExtensionDesc{ ExtendedType: (*descriptor.MessageOptions)(nil), ExtensionType: (*bool)(nil), Field: 64033, Name: "gogoproto.messagename", Tag: "varint,64033,opt,name=messagename", Filename: "gogo.proto", }
var E_MessagenameAll = &proto.ExtensionDesc{ ExtendedType: (*descriptor.FileOptions)(nil), ExtensionType: (*bool)(nil), Field: 63033, Name: "gogoproto.messagename_all", Tag: "varint,63033,opt,name=messagename_all,json=messagenameAll", Filename: "gogo.proto", }
descriptor.FieldOptions)(nil), ExtensionType: (*string)(nil), Field: 65006, Name: "gogoproto.moretags", Tag: "bytes,65006,opt,name=moretags", Filename: "gogo.proto", }ExtendedType: (*
var E_Nullable = &proto.ExtensionDesc{ ExtendedType: (*descriptor.FieldOptions)(nil), ExtensionType: (*bool)(nil), Field: 65001, Name: "gogoproto.nullable", Tag: "varint,65001,opt,name=nullable", Filename: "gogo.proto", }
var E_Onlyone = &proto.ExtensionDesc{ ExtendedType: (*descriptor.MessageOptions)(nil), ExtensionType: (*bool)(nil), Field: 64009, Name: "gogoproto.onlyone", Tag: "varint,64009,opt,name=onlyone", Filename: "gogo.proto", }
var E_OnlyoneAll = &proto.ExtensionDesc{ ExtendedType: (*descriptor.FileOptions)(nil), ExtensionType: (*bool)(nil), Field: 63009, Name: "gogoproto.onlyone_all", Tag: "varint,63009,opt,name=onlyone_all,json=onlyoneAll", Filename: "gogo.proto", }
var E_Populate = &proto.ExtensionDesc{ ExtendedType: (*descriptor.MessageOptions)(nil), ExtensionType: (*bool)(nil), Field: 64007, Name: "gogoproto.populate", Tag: "varint,64007,opt,name=populate", Filename: "gogo.proto", }
var E_PopulateAll = &proto.ExtensionDesc{ ExtendedType: (*descriptor.FileOptions)(nil), ExtensionType: (*bool)(nil), Field: 63007, Name: "gogoproto.populate_all", Tag: "varint,63007,opt,name=populate_all,json=populateAll", Filename: "gogo.proto", }
var E_Protosizer = &proto.ExtensionDesc{ ExtendedType: (*descriptor.MessageOptions)(nil), ExtensionType: (*bool)(nil), Field: 64028, Name: "gogoproto.protosizer", Tag: "varint,64028,opt,name=protosizer", Filename: "gogo.proto", }
var E_ProtosizerAll = &proto.ExtensionDesc{ ExtendedType: (*descriptor.FileOptions)(nil), ExtensionType: (*bool)(nil), Field: 63028, Name: "gogoproto.protosizer_all", Tag: "varint,63028,opt,name=protosizer_all,json=protosizerAll", Filename: "gogo.proto", }
var E_Sizer = &proto.ExtensionDesc{ ExtendedType: (*descriptor.MessageOptions)(nil), ExtensionType: (*bool)(nil), Field: 64020, Name: "gogoproto.sizer", Tag: "varint,64020,opt,name=sizer", Filename: "gogo.proto", }
var E_SizerAll = &proto.ExtensionDesc{ ExtendedType: (*descriptor.FileOptions)(nil), ExtensionType: (*bool)(nil), Field: 63020, Name: "gogoproto.sizer_all", Tag: "varint,63020,opt,name=sizer_all,json=sizerAll", Filename: "gogo.proto", }
var E_StableMarshaler = &proto.ExtensionDesc{ ExtendedType: (*descriptor.MessageOptions)(nil), ExtensionType: (*bool)(nil), Field: 64019, Name: "gogoproto.stable_marshaler", Tag: "varint,64019,opt,name=stable_marshaler,json=stableMarshaler", Filename: "gogo.proto", }
var E_StableMarshalerAll = &proto.ExtensionDesc{ ExtendedType: (*descriptor.FileOptions)(nil), ExtensionType: (*bool)(nil), Field: 63019, Name: "gogoproto.stable_marshaler_all", Tag: "varint,63019,opt,name=stable_marshaler_all,json=stableMarshalerAll", Filename: "gogo.proto", }
var E_Stdduration = &proto.ExtensionDesc{ ExtendedType: (*descriptor.FieldOptions)(nil), ExtensionType: (*bool)(nil), Field: 65011, Name: "gogoproto.stdduration", Tag: "varint,65011,opt,name=stdduration", Filename: "gogo.proto", }
var E_Stdtime = &proto.ExtensionDesc{ ExtendedType: (*descriptor.FieldOptions)(nil), ExtensionType: (*bool)(nil), Field: 65010, Name: "gogoproto.stdtime", Tag: "varint,65010,opt,name=stdtime", Filename: "gogo.proto", }
var E_Stringer = &proto.ExtensionDesc{ ExtendedType: (*descriptor.MessageOptions)(nil), ExtensionType: (*bool)(nil), Field: 67008, Name: "gogoproto.stringer", Tag: "varint,67008,opt,name=stringer", Filename: "gogo.proto", }
var E_StringerAll = &proto.ExtensionDesc{ ExtendedType: (*descriptor.FileOptions)(nil), ExtensionType: (*bool)(nil), Field: 63008, Name: "gogoproto.stringer_all", Tag: "varint,63008,opt,name=stringer_all,json=stringerAll", Filename: "gogo.proto", }
var E_Testgen = &proto.ExtensionDesc{ ExtendedType: (*descriptor.MessageOptions)(nil), ExtensionType: (*bool)(nil), Field: 64015, Name: "gogoproto.testgen", Tag: "varint,64015,opt,name=testgen", Filename: "gogo.proto", }
var E_TestgenAll = &proto.ExtensionDesc{ ExtendedType: (*descriptor.FileOptions)(nil), ExtensionType: (*bool)(nil), Field: 63015, Name: "gogoproto.testgen_all", Tag: "varint,63015,opt,name=testgen_all,json=testgenAll", Filename: "gogo.proto", }
var E_Typedecl = &proto.ExtensionDesc{ ExtendedType: (*descriptor.MessageOptions)(nil), ExtensionType: (*bool)(nil), Field: 64030, Name: "gogoproto.typedecl", Tag: "varint,64030,opt,name=typedecl", Filename: "gogo.proto", }
var E_TypedeclAll = &proto.ExtensionDesc{ ExtendedType: (*descriptor.FileOptions)(nil), ExtensionType: (*bool)(nil), Field: 63030, Name: "gogoproto.typedecl_all", Tag: "varint,63030,opt,name=typedecl_all,json=typedeclAll", Filename: "gogo.proto", }
var E_Unmarshaler = &proto.ExtensionDesc{ ExtendedType: (*descriptor.MessageOptions)(nil), ExtensionType: (*bool)(nil), Field: 64018, Name: "gogoproto.unmarshaler", Tag: "varint,64018,opt,name=unmarshaler", Filename: "gogo.proto", }
var E_UnmarshalerAll = &proto.ExtensionDesc{ ExtendedType: (*descriptor.FileOptions)(nil), ExtensionType: (*bool)(nil), Field: 63018, Name: "gogoproto.unmarshaler_all", Tag: "varint,63018,opt,name=unmarshaler_all,json=unmarshalerAll", Filename: "gogo.proto", }
var E_UnsafeMarshaler = &proto.ExtensionDesc{ ExtendedType: (*descriptor.MessageOptions)(nil), ExtensionType: (*bool)(nil), Field: 64023, Name: "gogoproto.unsafe_marshaler", Tag: "varint,64023,opt,name=unsafe_marshaler,json=unsafeMarshaler", Filename: "gogo.proto", }
var E_UnsafeMarshalerAll = &proto.ExtensionDesc{ ExtendedType: (*descriptor.FileOptions)(nil), ExtensionType: (*bool)(nil), Field: 63023, Name: "gogoproto.unsafe_marshaler_all", Tag: "varint,63023,opt,name=unsafe_marshaler_all,json=unsafeMarshalerAll", Filename: "gogo.proto", }
var E_UnsafeUnmarshaler = &proto.ExtensionDesc{ ExtendedType: (*descriptor.MessageOptions)(nil), ExtensionType: (*bool)(nil), Field: 64024, Name: "gogoproto.unsafe_unmarshaler", Tag: "varint,64024,opt,name=unsafe_unmarshaler,json=unsafeUnmarshaler", Filename: "gogo.proto", }
var E_UnsafeUnmarshalerAll = &proto.ExtensionDesc{ ExtendedType: (*descriptor.FileOptions)(nil), ExtensionType: (*bool)(nil), Field: 63024, Name: "gogoproto.unsafe_unmarshaler_all", Tag: "varint,63024,opt,name=unsafe_unmarshaler_all,json=unsafeUnmarshalerAll", Filename: "gogo.proto", }
var E_VerboseEqual = &proto.ExtensionDesc{ ExtendedType: (*descriptor.MessageOptions)(nil), ExtensionType: (*bool)(nil), Field: 64004, Name: "gogoproto.verbose_equal", Tag: "varint,64004,opt,name=verbose_equal,json=verboseEqual", Filename: "gogo.proto", }
var E_VerboseEqualAll = &proto.ExtensionDesc{ ExtendedType: (*descriptor.FileOptions)(nil), ExtensionType: (*bool)(nil), Field: 63004, Name: "gogoproto.verbose_equal_all", Tag: "varint,63004,opt,name=verbose_equal_all,json=verboseEqualAll", Filename: "gogo.proto", }
Functions ¶
func EnabledGoEnumPrefix ¶
func EnabledGoEnumPrefix(file *google_protobuf.FileDescriptorProto, enum *google_protobuf.EnumDescriptorProto) bool
func EnabledGoStringer ¶
func EnabledGoStringer(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool
func GetCastKey ¶
func GetCastKey(field *google_protobuf.FieldDescriptorProto) string
func GetCastType ¶
func GetCastType(field *google_protobuf.FieldDescriptorProto) string
func GetCastValue ¶
func GetCastValue(field *google_protobuf.FieldDescriptorProto) string
func GetCustomName ¶
func GetCustomName(field *google_protobuf.FieldDescriptorProto) string
func GetCustomType ¶
func GetCustomType(field *google_protobuf.FieldDescriptorProto) string
func GetEnumCustomName ¶
func GetEnumCustomName(field *google_protobuf.EnumDescriptorProto) string
func GetEnumValueCustomName ¶
func GetEnumValueCustomName(field *google_protobuf.EnumValueDescriptorProto) string
func GetJsonTag ¶
func GetJsonTag(field *google_protobuf.FieldDescriptorProto) *string
func GetMoreTags ¶
func GetMoreTags(field *google_protobuf.FieldDescriptorProto) *string
func HasBenchGen ¶
func HasBenchGen(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool
func HasCompare ¶
func HasCompare(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool
func HasDescription ¶
func HasDescription(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool
func HasEnumDecl ¶
func HasEnumDecl(file *google_protobuf.FileDescriptorProto, enum *google_protobuf.EnumDescriptorProto) bool
func HasEqual ¶
func HasEqual(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool
func HasExtensionsMap ¶
func HasExtensionsMap(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool
func HasGoGetters ¶
func HasGoGetters(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool
func HasGoString ¶
func HasGoString(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool
func HasMessageName ¶ added in v1.1.0
func HasMessageName(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool
func HasPopulate ¶
func HasPopulate(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool
func HasTestGen ¶
func HasTestGen(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool
func HasTypeDecl ¶
func HasTypeDecl(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool
func HasUnrecognized ¶
func HasUnrecognized(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool
func HasVerboseEqual ¶
func HasVerboseEqual(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool
func ImportsGoGoProto ¶
func ImportsGoGoProto(file *google_protobuf.FileDescriptorProto) bool
func IsCastKey ¶
func IsCastKey(field *google_protobuf.FieldDescriptorProto) bool
func IsCastType ¶
func IsCastType(field *google_protobuf.FieldDescriptorProto) bool
func IsCastValue ¶
func IsCastValue(field *google_protobuf.FieldDescriptorProto) bool
func IsCustomName ¶
func IsCustomName(field *google_protobuf.FieldDescriptorProto) bool
func IsCustomType ¶
func IsCustomType(field *google_protobuf.FieldDescriptorProto) bool
func IsEmbed ¶
func IsEmbed(field *google_protobuf.FieldDescriptorProto) bool
func IsEnumCustomName ¶
func IsEnumCustomName(field *google_protobuf.EnumDescriptorProto) bool
func IsEnumStringer ¶
func IsEnumStringer(file *google_protobuf.FileDescriptorProto, enum *google_protobuf.EnumDescriptorProto) bool
func IsEnumValueCustomName ¶
func IsEnumValueCustomName(field *google_protobuf.EnumValueDescriptorProto) bool
func IsFace ¶
func IsFace(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool
func IsGoEnumStringer ¶
func IsGoEnumStringer(file *google_protobuf.FileDescriptorProto, enum *google_protobuf.EnumDescriptorProto) bool
func IsMarshaler ¶
func IsMarshaler(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool
func IsNullable ¶
func IsNullable(field *google_protobuf.FieldDescriptorProto) bool
func IsProto3 ¶
func IsProto3(file *google_protobuf.FileDescriptorProto) bool
func IsProtoSizer ¶
func IsProtoSizer(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool
func IsSizer ¶
func IsSizer(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool
func IsStableMarshaler ¶
func IsStableMarshaler(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool
func IsStdDuration ¶
func IsStdDuration(field *google_protobuf.FieldDescriptorProto) bool
func IsStdTime ¶
func IsStdTime(field *google_protobuf.FieldDescriptorProto) bool
func IsStringer ¶
func IsStringer(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool
func IsUnion ¶
func IsUnion(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool
func IsUnmarshaler ¶
func IsUnmarshaler(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool
func IsUnsafeMarshaler ¶
func IsUnsafeMarshaler(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool
func IsUnsafeUnmarshaler ¶
func IsUnsafeUnmarshaler(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool
func NeedsNilCheck ¶
func NeedsNilCheck(proto3 bool, field *google_protobuf.FieldDescriptorProto) bool
func RegistersGolangProto ¶
func RegistersGolangProto(file *google_protobuf.FileDescriptorProto) bool
Types ¶
type EnableFunc ¶
type EnableFunc func(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool