本文整理汇总了Golang中github.com/gogo/protobuf/protoc-gen-gogo/descriptor.FieldDescriptorProto类的典型用法代码示例。如果您正苦于以下问题:Golang FieldDescriptorProto类的具体用法?Golang FieldDescriptorProto怎么用?Golang FieldDescriptorProto使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了FieldDescriptorProto类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: genRepeatedWriter
func (d *deepCopyGen) genRepeatedWriter(m *generator.Descriptor, f *descriptor.FieldDescriptorProto, notNullablePrefix string) func() {
fName := generator.CamelCase(*f.Name)
if gogoproto.IsCustomName(f) {
fName = gogoproto.GetCustomName(f)
}
typename, _ := d.gen.GoType(m, f)
isMessage := f.IsMessage()
repeatedFunc := func() {
d.gen.P("\tif m.", fName, " != nil {")
d.gen.P("\t\to.", fName, " = make(", typename, ", 0, len(m.", fName, "))")
if isMessage {
d.gen.P("\t\tfor _, v := range m.", fName, " {")
d.gen.P("\t\t\to.", fName, " = append(o.", fName, ", ", notNullablePrefix, "v.Copy())")
d.gen.P("\t\t}")
} else {
d.gen.P("\t\to.", fName, " = append(o.", fName, ", m.", fName, "...)")
}
d.gen.P("\t}")
d.gen.P()
}
return repeatedFunc
}
开发者ID:docker,项目名称:swarmkit,代码行数:25,代码来源:deepcopy.go
示例2: hasLoop
func (p *plugin) hasLoop(field *descriptor.FieldDescriptorProto, visited []*generator.Descriptor, excludes []*generator.Descriptor) *generator.Descriptor {
if field.IsMessage() || p.IsGroup(field) {
fieldMessage := p.ObjectNamed(field.GetTypeName()).(*generator.Descriptor)
fieldTypeName := generator.CamelCaseSlice(fieldMessage.TypeName())
for _, message := range visited {
messageTypeName := generator.CamelCaseSlice(message.TypeName())
if fieldTypeName == messageTypeName {
for _, e := range excludes {
if fieldTypeName == generator.CamelCaseSlice(e.TypeName()) {
return nil
}
}
return fieldMessage
}
}
for _, f := range fieldMessage.Field {
visited = append(visited, fieldMessage)
loopTo := p.hasLoop(f, visited, excludes)
if loopTo != nil {
return loopTo
}
}
}
return nil
}
开发者ID:nolenroyalty,项目名称:bangarang,代码行数:25,代码来源:populate.go
示例3: genMapWriter
func (d *deepCopyGen) genMapWriter(m *generator.Descriptor, f *descriptor.FieldDescriptorProto, notNullablePrefix string) func() {
fName := generator.CamelCase(*f.Name)
if gogoproto.IsCustomName(f) {
fName = gogoproto.GetCustomName(f)
}
dv := d.gen.ObjectNamed(f.GetTypeName())
if desc, ok := dv.(*generator.Descriptor); ok && desc.GetOptions().GetMapEntry() {
mt := d.gen.GoMapType(desc, f)
typename := mt.GoType
valueIsMessage := mt.ValueField.IsMessage()
mapfunc := func() {
d.gen.P("\tif m.", fName, " != nil {")
d.gen.P("\t\to.", fName, " = make(", typename, ")")
d.gen.P("\t\tfor k, v := range m.", fName, " {")
if valueIsMessage {
d.gen.P("\t\t\to.", fName, "[k] = ", notNullablePrefix, "v.Copy()")
} else {
d.gen.P("\t\t\to.", fName, "[k] = v")
}
d.gen.P("\t\t}")
d.gen.P("\t}")
d.gen.P()
}
return mapfunc
}
return nil
}
开发者ID:docker,项目名称:swarmkit,代码行数:30,代码来源:deepcopy.go
示例4: genOneOfWriter
func (d *deepCopyGen) genOneOfWriter(m *generator.Descriptor, f *descriptor.FieldDescriptorProto, oneOfFuncs map[string][]func()) {
ccTypeName := generator.CamelCaseSlice(m.TypeName())
fName := generator.CamelCase(*f.Name)
if gogoproto.IsCustomName(f) {
fName = gogoproto.GetCustomName(f)
}
odp := m.OneofDecl[int(*f.OneofIndex)]
oneOfName := generator.CamelCase(odp.GetName())
oneOfNameFuncs, ok := oneOfFuncs[oneOfName]
if !ok {
oneOfFunc := func() {
d.gen.P("\tswitch m.", oneOfName, ".(type) {")
}
oneOfNameFuncs = append(oneOfNameFuncs, oneOfFunc)
}
isMessage := f.IsMessage()
oneOfFunc := func() {
tName := ccTypeName + "_" + fName
d.gen.P("\tcase *", tName, ":")
d.gen.P("\t\ti := &", tName, " {")
if isMessage {
d.gen.P("\t\t\t", fName, ": m.Get", fName, "().Copy(),")
} else {
d.gen.P("\t\t\t", fName, ": m.Get", fName, "(),")
}
d.gen.P("\t\t}")
d.gen.P()
d.gen.P("\t\to.", oneOfName, " = i")
}
oneOfNameFuncs = append(oneOfNameFuncs, oneOfFunc)
oneOfFuncs[oneOfName] = oneOfNameFuncs
}
开发者ID:docker,项目名称:swarmkit,代码行数:35,代码来源:deepcopy.go
示例5: genRepeated
func (d *deepCopyGen) genRepeated(m *generator.Descriptor, f *descriptor.FieldDescriptorProto) {
fName := generator.CamelCase(*f.Name)
if gogoproto.IsCustomName(f) {
fName = gogoproto.GetCustomName(f)
}
typename, _ := d.GoType(m, f)
d.P("if o.", fName, " != nil {")
d.In()
if f.IsMessage() {
d.P("m.", fName, " = make(", typename, ", len(o.", fName, "))")
// TODO(stevvooe): Handle custom type here?
goType := d.TypeName(d.ObjectNamed(f.GetTypeName())) // elides [] or *
d.P("for i := range m.", fName, " {")
d.In()
if !gogoproto.IsNullable(f) {
d.genCopyFunc("&m."+fName+"[i]", "&o."+fName+"[i]")
} else {
d.P("m.", fName, "[i] = &", goType, "{}")
d.genCopyFunc("m."+fName+"[i]", "o."+fName+"[i]")
}
d.Out()
d.P("}")
} else {
d.P("m.", fName, " = make(", typename, ", len(o.", fName, "))")
d.P("copy(m.", fName, ", ", "o.", fName, ")")
}
d.Out()
d.P("}")
d.P()
}
开发者ID:yongtang,项目名称:swarmkit,代码行数:34,代码来源:deepcopy.go
示例6: ProtoToType
func ProtoToType(field *descriptor.FieldDescriptorProto) Type {
decType := Decoded(ProtoToEncodedType(field.GetType()))
if !field.IsRepeated() {
return decType
}
return Type(int32(decType) + 100)
}
开发者ID:katydid,项目名称:v0.1,代码行数:7,代码来源:proto.go
示例7: isFloat
func isFloat(f *descriptor.FieldDescriptorProto) bool {
switch f.GetType() {
case descriptor.FieldDescriptorProto_TYPE_DOUBLE,
descriptor.FieldDescriptorProto_TYPE_FLOAT:
return true
}
return false
}
开发者ID:gpaul,项目名称:letmegrpc,代码行数:8,代码来源:form.go
示例8: TurnOffNullableForNativeTypesWithoutDefaultsOnly
func TurnOffNullableForNativeTypesWithoutDefaultsOnly(field *descriptor.FieldDescriptorProto) {
if field.IsRepeated() || field.IsMessage() {
return
}
if field.DefaultValue != nil {
return
}
SetBoolFieldOption(gogoproto.E_Nullable, false)(field)
}
开发者ID:otsimo,项目名称:otsimoctl,代码行数:9,代码来源:field.go
示例9: NeedsNilCheck
func NeedsNilCheck(proto3 bool, field *google_protobuf.FieldDescriptorProto) bool {
nullable := IsNullable(field)
if field.IsMessage() || IsCustomType(field) {
return nullable
}
if proto3 {
return false
}
return nullable || *field.Type == google_protobuf.FieldDescriptorProto_TYPE_BYTES
}
开发者ID:otsimo,项目名称:catalog,代码行数:10,代码来源:helper.go
示例10: IsMap
func (g *Generator) IsMap(field *descriptor.FieldDescriptorProto) bool {
if !field.IsMessage() {
return false
}
byName := g.ObjectNamed(field.GetTypeName())
desc, ok := byName.(*Descriptor)
if byName == nil || !ok || !desc.GetOptions().GetMapEntry() {
return false
}
return true
}
开发者ID:peter-edge,项目名称:protoeasy-go,代码行数:11,代码来源:helper.go
示例11: AddTrans
func (this *visitor) AddTrans(srcToken int, field *descriptor.FieldDescriptorProto, dstToken int) {
input := field.GetKeyUint64()
if _, ok := this.trans[srcToken]; !ok {
this.trans[srcToken] = make(map[uint64]int)
}
if _, ok := this.trans[srcToken][input]; ok {
panic("transition already exists")
}
this.trans[srcToken][input] = dstToken
this.types[dstToken] = *field.Type
}
开发者ID:katydid,项目名称:v0.1,代码行数:11,代码来源:visitor.go
示例12: getEnumVal
func (p *plugin) getEnumVal(field *descriptor.FieldDescriptorProto, goTyp string) string {
enum := p.ObjectNamed(field.GetTypeName()).(*generator.EnumDescriptor)
l := len(enum.Value)
values := make([]string, l)
for i := range enum.Value {
values[i] = strconv.Itoa(int(*enum.Value[i].Number))
}
arr := "[]int32{" + strings.Join(values, ",") + "}"
val := strings.Join([]string{generator.GoTypeToName(goTyp), `(`, arr, `[r.Intn(`, fmt.Sprintf("%d", l), `)])`}, "")
return val
}
开发者ID:nolenroyalty,项目名称:bangarang,代码行数:11,代码来源:populate.go
示例13: isNumber
func isNumber(f *descriptor.FieldDescriptorProto) bool {
switch f.GetType() {
case descriptor.FieldDescriptorProto_TYPE_INT32,
descriptor.FieldDescriptorProto_TYPE_INT64,
descriptor.FieldDescriptorProto_TYPE_SINT32,
descriptor.FieldDescriptorProto_TYPE_SINT64,
descriptor.FieldDescriptorProto_TYPE_UINT32,
descriptor.FieldDescriptorProto_TYPE_UINT64:
return true
}
return false
}
开发者ID:gpaul,项目名称:letmegrpc,代码行数:12,代码来源:form.go
示例14: fixFieldName
// fixFieldName changes field names like
// 'id' -> 'ID'
func fixFieldName(field *gogo.FieldDescriptorProto) {
if gogoproto.IsCustomName(field) {
return // Skip if a custom name is specified.
}
if field.Options == nil {
field.Options = new(gogo.FieldOptions)
}
name := field.GetName()
name = snaker.SnakeToCamel(name)
name = lintName(name)
// Use gogoproto.customname
proto.SetExtension(field.Options, gogoproto.E_Customname, &name)
}
开发者ID:jerrodrurik,项目名称:protoc-gen-cleango,代码行数:18,代码来源:main.go
示例15: GoMapValueTypes
// GoMapValueTypes returns the map value Go type and the alias map value Go type (for casting), taking into
// account whether the map is nullable or the value is a message.
func GoMapValueTypes(mapField, valueField *descriptor.FieldDescriptorProto, goValueType, goValueAliasType string) (nullable bool, outGoType string, outGoAliasType string) {
nullable = gogoproto.IsNullable(mapField) && (valueField.IsMessage() || gogoproto.IsCustomType(mapField))
if nullable {
// ensure the non-aliased Go value type is a pointer for consistency
if strings.HasPrefix(goValueType, "*") {
outGoType = goValueType
} else {
outGoType = "*" + goValueType
}
outGoAliasType = goValueAliasType
} else {
outGoType = strings.Replace(goValueType, "*", "", 1)
outGoAliasType = strings.Replace(goValueAliasType, "*", "", 1)
}
return
}
开发者ID:peter-edge,项目名称:protoeasy-go,代码行数:18,代码来源:helper.go
示例16: CustomBuildField
func CustomBuildField(fileDescriptorSet *descriptor.FileDescriptorSet, msg *descriptor.DescriptorProto, f *descriptor.FieldDescriptorProto, help string, proto3 bool) string {
fieldname := f.GetName()
if fieldname != "WeirdName" {
return BuildField(fileDescriptorSet, msg, f, help, proto3)
}
s := `s += '<div class="field form-group"><label class="col-sm-2 control-label">` + fieldname + `: </label><div class="col-sm-10">';
s += '<select class="form-control" name="` + fieldname + `">';
`
stringOptions := []string{"option1", "another string", "192.168.1.1"}
for _, stringOption := range stringOptions {
s += `s += '<option value="` + stringOption + `" ' + selected("` + stringOption + `", json["` + fieldname + `"]) + '>` + stringOption + `</option>';
`
}
s += `s += '</select></div></div>';
`
return s
}
开发者ID:gpaul,项目名称:letmegrpc,代码行数:17,代码来源:form_test.go
示例17: GetMapValueField
func (g *Generator) GetMapValueField(field, valField *descriptor.FieldDescriptorProto) *descriptor.FieldDescriptorProto {
if gogoproto.IsCustomType(field) && gogoproto.IsCastValue(field) {
g.Fail("cannot have a customtype and casttype: ", field.String())
}
valField = proto.Clone(valField).(*descriptor.FieldDescriptorProto)
if valField.Options == nil {
valField.Options = &descriptor.FieldOptions{}
}
stdtime := gogoproto.IsStdTime(field)
if stdtime {
if err := proto.SetExtension(valField.Options, gogoproto.E_Stdtime, &stdtime); err != nil {
g.Fail(err.Error())
}
}
stddur := gogoproto.IsStdDuration(field)
if stddur {
if err := proto.SetExtension(valField.Options, gogoproto.E_Stdduration, &stddur); err != nil {
g.Fail(err.Error())
}
}
if valType := gogoproto.GetCastValue(field); len(valType) > 0 {
if err := proto.SetExtension(valField.Options, gogoproto.E_Casttype, &valType); err != nil {
g.Fail(err.Error())
}
}
if valType := gogoproto.GetCustomType(field); len(valType) > 0 {
if err := proto.SetExtension(valField.Options, gogoproto.E_Customtype, &valType); err != nil {
g.Fail(err.Error())
}
}
nullable := gogoproto.IsNullable(field)
if err := proto.SetExtension(valField.Options, gogoproto.E_Nullable, &nullable); err != nil {
g.Fail(err.Error())
}
return valField
}
开发者ID:peter-edge,项目名称:protoeasy-go,代码行数:40,代码来源:helper.go
示例18: genMap
func (d *deepCopyGen) genMap(m *generator.Descriptor, f *descriptor.FieldDescriptorProto) bool {
fName := generator.CamelCase(*f.Name)
if gogoproto.IsCustomName(f) {
fName = gogoproto.GetCustomName(f)
}
dv := d.ObjectNamed(f.GetTypeName())
desc, ok := dv.(*generator.Descriptor)
if !ok || !desc.GetOptions().GetMapEntry() {
return false
}
mt := d.GoMapType(desc, f)
typename := mt.GoType
d.P("if o.", fName, " != nil {")
d.In()
d.P("m.", fName, " = make(", typename, ", ", "len(o.", fName, "))")
d.P("for k, v := range o.", fName, " {")
d.In()
if mt.ValueField.IsMessage() {
if !gogoproto.IsNullable(f) {
d.P("n := ", d.TypeName(d.ObjectNamed(mt.ValueField.GetTypeName())), "{}")
d.genCopyFunc("&n", "&v")
d.P("m.", fName, "[k] = ", "n")
} else {
d.P("m.", fName, "[k] = &", d.TypeName(d.ObjectNamed(mt.ValueField.GetTypeName())), "{}")
d.genCopyFunc("m."+fName+"[k]", "v")
}
} else {
d.P("m.", fName, "[k] = v")
}
d.Out()
d.P("}")
d.Out()
d.P("}")
d.P()
return true
}
开发者ID:yongtang,项目名称:swarmkit,代码行数:40,代码来源:deepcopy.go
示例19: newSingleField
func newSingleField(desc protoparser.DescMap, f *descriptor.FieldDescriptorProto) fieldEncoder {
switch f.GetType() {
case descriptor.FieldDescriptorProto_TYPE_DOUBLE:
return newDoubleField(f)
case descriptor.FieldDescriptorProto_TYPE_FLOAT:
return newFloatField(f)
case descriptor.FieldDescriptorProto_TYPE_INT64:
return newIntField(f)
case descriptor.FieldDescriptorProto_TYPE_UINT64:
return newUintField(f)
case descriptor.FieldDescriptorProto_TYPE_INT32:
return newIntField(f)
case descriptor.FieldDescriptorProto_TYPE_FIXED64:
return newFixed64UintField(f)
case descriptor.FieldDescriptorProto_TYPE_FIXED32:
return newFixed32UintField(f)
case descriptor.FieldDescriptorProto_TYPE_BOOL:
return newBoolField(f)
case descriptor.FieldDescriptorProto_TYPE_STRING:
return newStringField(f)
case descriptor.FieldDescriptorProto_TYPE_MESSAGE:
return newMsgField(desc, f, desc.LookupMessage(f))
case descriptor.FieldDescriptorProto_TYPE_BYTES:
return newBytesField(f)
case descriptor.FieldDescriptorProto_TYPE_UINT32:
return newUintField(f)
case descriptor.FieldDescriptorProto_TYPE_ENUM:
return newIntField(f)
case descriptor.FieldDescriptorProto_TYPE_SFIXED32:
return newFixed32IntField(f)
case descriptor.FieldDescriptorProto_TYPE_SFIXED64:
return newFixed64IntField(f)
case descriptor.FieldDescriptorProto_TYPE_SINT32:
return newSint32Field(f)
case descriptor.FieldDescriptorProto_TYPE_SINT64:
return newSint64Field(f)
}
panic("unsupported field type " + f.GetType().String())
}
开发者ID:katydid,项目名称:katydid,代码行数:39,代码来源:proto.go
示例20: GetMapKeyField
func (g *Generator) GetMapKeyField(field, keyField *descriptor.FieldDescriptorProto) *descriptor.FieldDescriptorProto {
if !gogoproto.IsCastKey(field) {
return keyField
}
keyField = proto.Clone(keyField).(*descriptor.FieldDescriptorProto)
if keyField.Options == nil {
keyField.Options = &descriptor.FieldOptions{}
}
keyType := gogoproto.GetCastKey(field)
if err := proto.SetExtension(keyField.Options, gogoproto.E_Casttype, &keyType); err != nil {
g.Fail(err.Error())
}
return keyField
}
开发者ID:peter-edge,项目名称:protoeasy-go,代码行数:14,代码来源:helper.go
注:本文中的github.com/gogo/protobuf/protoc-gen-gogo/descriptor.FieldDescriptorProto类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论