本文整理汇总了Golang中github.com/gogo/protobuf/gogoproto.IsCustomName函数的典型用法代码示例。如果您正苦于以下问题:Golang IsCustomName函数的具体用法?Golang IsCustomName怎么用?Golang IsCustomName使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了IsCustomName函数的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的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: 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
示例3: GetFieldName
func (g *Generator) GetFieldName(message *Descriptor, field *descriptor.FieldDescriptorProto) string {
goTyp, _ := g.GoType(message, field)
fieldname := CamelCase(*field.Name)
if gogoproto.IsCustomName(field) {
fieldname = gogoproto.GetCustomName(field)
}
if gogoproto.IsEmbed(field) {
fieldname = EmbedFieldName(goTyp)
}
if field.OneofIndex != nil {
fieldname = message.OneofDecl[int(*field.OneofIndex)].GetName()
fieldname = CamelCase(fieldname)
}
for _, f := range methodNames {
if f == fieldname {
return fieldname + "_"
}
}
if !gogoproto.IsProtoSizer(message.file, message.DescriptorProto) {
if fieldname == "Size" {
return fieldname + "_"
}
}
return fieldname
}
开发者ID:peter-edge,项目名称:protoeasy-go,代码行数:25,代码来源:helper.go
示例4: 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
示例5: Generate
func (p *plugin) Generate(file *generator.FileDescriptor) {
for _, msg := range file.Messages() {
for _, os := range overwriters {
possible := true
for _, overwriter := range os {
if overwriter(file.FileDescriptorProto, msg.DescriptorProto) {
possible = false
}
}
if possible {
p.checkOverwrite(msg, os)
}
}
p.checkNameSpace(msg)
for _, field := range msg.GetField() {
if gogoproto.IsEmbed(field) && gogoproto.IsCustomName(field) {
fmt.Fprintf(os.Stderr, "ERROR: field %v with custom name %v cannot be embedded", *field.Name, gogoproto.GetCustomName(field))
os.Exit(1)
}
}
p.checkRepeated(msg)
}
for _, e := range file.GetExtension() {
if gogoproto.IsEmbed(e) {
fmt.Fprintf(os.Stderr, "ERROR: extended field %v cannot be embedded", generator.CamelCase(*e.Name))
os.Exit(1)
}
}
}
开发者ID:40a,项目名称:bootkube,代码行数:29,代码来源:embedcheck.go
示例6: 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
示例7: Generate
func (p *test) Generate(imports generator.PluginImports, file *generator.FileDescriptor) bool {
used := false
testingPkg := imports.NewImport("testing")
randPkg := imports.NewImport("math/rand")
timePkg := imports.NewImport("time")
for _, message := range file.Messages() {
if !gogoproto.HasTestGen(file.FileDescriptorProto, message.DescriptorProto) {
continue
}
if message.DescriptorProto.GetOptions().GetMapEntry() {
continue
}
used = true
ccTypeName := generator.CamelCaseSlice(message.TypeName())
p.P(`func Test`, ccTypeName, `Copy(t *`, testingPkg.Use(), `.T) {`)
p.In()
p.P(`popr := `, randPkg.Use(), `.New(`, randPkg.Use(), `.NewSource(`, timePkg.Use(), `.Now().UnixNano()))`)
p.P(`in := NewPopulated`, ccTypeName, `(popr, true)`)
p.P(`out := in.Copy()`)
p.P(`if !in.Equal(out) {`)
p.In()
p.P(`t.Fatalf("%#v != %#v", in, out)`)
p.Out()
p.P(`}`)
for _, f := range message.Field {
fName := generator.CamelCase(*f.Name)
if gogoproto.IsCustomName(f) {
fName = gogoproto.GetCustomName(f)
}
if f.OneofIndex != nil {
odp := message.OneofDecl[int(*f.OneofIndex)]
fName = generator.CamelCase(odp.GetName())
}
p.P(`if &in.`, fName, ` == &out.`, fName, ` {`)
p.In()
p.P(`t.Fatalf("`, fName, `: %#v == %#v", &in.`, fName, `, &out.`, fName, `)`)
p.Out()
p.P(`}`)
}
p.Out()
p.P(`}`)
}
return used
}
开发者ID:ChristianKniep,项目名称:swarmkit,代码行数:52,代码来源:deepcopytest.go
示例8: GetFieldName
func (g *Generator) GetFieldName(message *Descriptor, field *descriptor.FieldDescriptorProto) string {
goTyp, _ := g.GoType(message, field)
fieldname := CamelCase(*field.Name)
if gogoproto.IsCustomName(field) {
fieldname = gogoproto.GetCustomName(field)
}
if gogoproto.IsEmbed(field) {
fieldname = EmbedFieldName(goTyp)
}
for _, f := range methodNames {
if f == fieldname {
return fieldname + "_"
}
}
return fieldname
}
开发者ID:mwitkow,项目名称:protobuf-1,代码行数:16,代码来源:helper.go
示例9: 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
示例10: genOneOf
func (d *deepCopyGen) genOneOf(m *generator.Descriptor, oneof *descriptor.OneofDescriptorProto, fields []*descriptor.FieldDescriptorProto) {
oneOfName := generator.CamelCase(oneof.GetName())
d.P("if o.", oneOfName, " != nil {")
d.In()
d.P("switch o.", oneOfName, ".(type) {")
for _, f := range fields {
ccTypeName := generator.CamelCaseSlice(m.TypeName())
fName := generator.CamelCase(*f.Name)
if gogoproto.IsCustomName(f) {
fName = gogoproto.GetCustomName(f)
}
tName := ccTypeName + "_" + fName
d.P("case *", tName, ":")
d.In()
d.P("v := ", tName, " {")
d.In()
var rhs string
if f.IsMessage() {
goType := d.TypeName(d.ObjectNamed(f.GetTypeName())) // elides [] or *
rhs = "&" + goType + "{}"
} else {
rhs = "o.Get" + fName + "()"
}
d.P(fName, ": ", rhs, ",")
d.Out()
d.P("}")
if f.IsMessage() {
d.genCopyFunc("v."+fName, "o.Get"+fName+"()")
}
d.P("m.", oneOfName, " = &v")
d.Out()
}
d.Out()
d.P("}")
d.Out()
d.P("}")
d.P()
}
开发者ID:yongtang,项目名称:swarmkit,代码行数:45,代码来源:deepcopy.go
示例11: CustomNameID
// CustomNameID preprocess the field, and set the [(gogoproto.customname) = "..."]
// if necessary, in order to avoid setting `gogoproto.customname` manually.
// The automatically assigned name should conform to Golang convention.
func CustomNameID(file *descriptor.FileDescriptorProto) {
f := func(field *descriptor.FieldDescriptorProto) {
// Skip if [(gogoproto.customname) = "..."] has already been set.
if gogoproto.IsCustomName(field) {
return
}
// Skip if embedded
if gogoproto.IsEmbed(field) {
return
}
if field.OneofIndex != nil {
return
}
fieldName := generator.CamelCase(*field.Name)
switch {
case *field.Name == "id":
// id -> ID
fieldName = "ID"
case strings.HasPrefix(*field.Name, "id_"):
// id_some -> IDSome
fieldName = "ID" + fieldName[2:]
case strings.HasSuffix(*field.Name, "_id"):
// some_id -> SomeID
fieldName = fieldName[:len(fieldName)-2] + "ID"
case strings.HasSuffix(*field.Name, "_ids"):
// some_ids -> SomeIDs
fieldName = fieldName[:len(fieldName)-3] + "IDs"
default:
return
}
if field.Options == nil {
field.Options = &descriptor.FieldOptions{}
}
if err := proto.SetExtension(field.Options, gogoproto.E_Customname, &fieldName); err != nil {
panic(err)
}
}
// Iterate through all fields in file
vanity.ForEachFieldExcludingExtensions(file.MessageType, f)
}
开发者ID:yongtang,项目名称:swarmkit,代码行数:45,代码来源:customnameid.go
示例12: 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
示例13: genMsgDeepCopy
func (d *deepCopyGen) genMsgDeepCopy(m *generator.Descriptor) {
if !plugin.DeepcopyEnabled(m.Options) {
return
}
ccTypeName := generator.CamelCaseSlice(m.TypeName())
d.gen.P("func (m *", ccTypeName, ") Copy() *", ccTypeName, "{")
d.gen.P("\tif m == nil {")
d.gen.P("\t\treturn nil")
d.gen.P("\t}")
d.gen.P()
d.gen.P("\to := &", ccTypeName, "{")
var funcs []func()
oneOfFuncs := make(map[string][]func())
for _, f := range m.Field {
fName := generator.CamelCase(*f.Name)
if gogoproto.IsCustomName(f) {
fName = gogoproto.GetCustomName(f)
}
notNullablePrefix := ""
if !gogoproto.IsNullable(f) {
notNullablePrefix = "*"
}
// Handle all kinds of message type
if f.IsMessage() {
// Handle map type
if mapfunc := d.genMapWriter(m, f, notNullablePrefix); mapfunc != nil {
funcs = append(funcs, mapfunc)
continue
}
// Handle any message which is not repeated or part of oneof
if !f.IsRepeated() && f.OneofIndex == nil {
d.gen.P("\t\t", fName, ": ", notNullablePrefix, "m.", fName, ".Copy(),")
continue
}
}
// Handle repeated field
if f.IsRepeated() {
funcs = append(funcs, d.genRepeatedWriter(m, f, notNullablePrefix))
continue
}
// Handle oneof type
if f.OneofIndex != nil {
d.genOneOfWriter(m, f, oneOfFuncs)
continue
}
// Handle all kinds of scalar type
d.gen.P("\t\t", fName, ": m.", fName, ",")
}
d.gen.P("\t}")
d.gen.P()
for _, fn := range funcs {
fn()
}
// Sort map keys from oneOfFuncs so that generated code has consistent
// ordering.
oneOfKeys := make([]string, 0, len(oneOfFuncs))
for key := range oneOfFuncs {
oneOfKeys = append(oneOfKeys, key)
}
sort.Strings(oneOfKeys)
for _, key := range oneOfKeys {
oneOfNameFuncs := oneOfFuncs[key]
for _, oneOfFunc := range oneOfNameFuncs {
oneOfFunc()
}
d.gen.P("\t}")
d.gen.P()
}
d.gen.P("\treturn o")
d.gen.P("}")
d.gen.P()
}
开发者ID:docker,项目名称:swarmkit,代码行数:87,代码来源:deepcopy.go
示例14: genMsgDeepCopy
func (d *deepCopyGen) genMsgDeepCopy(m *generator.Descriptor) {
ccTypeName := generator.CamelCaseSlice(m.TypeName())
// Generate backwards compatible, type-safe Copy() function.
d.P("func (m *", ccTypeName, ") Copy() *", ccTypeName, "{")
d.In()
d.P("if m == nil {")
d.In()
d.P("return nil")
d.Out()
d.P("}")
d.P("o := &", ccTypeName, "{}")
d.P("o.CopyFrom(m)")
d.P("return o")
d.Out()
d.P("}")
d.P()
if len(m.Field) == 0 {
d.P("func (m *", ccTypeName, ") CopyFrom(src interface{})", " {}")
return
}
d.P("func (m *", ccTypeName, ") CopyFrom(src interface{})", " {")
d.P()
d.P("o := src.(*", ccTypeName, ")")
// shallow copy handles all scalars
d.P("*m = *o")
oneofByIndex := [][]*descriptor.FieldDescriptorProto{}
for _, f := range m.Field {
fName := generator.CamelCase(*f.Name)
if gogoproto.IsCustomName(f) {
fName = gogoproto.GetCustomName(f)
}
// Handle oneof type, we defer them to a loop below
if f.OneofIndex != nil {
if len(oneofByIndex) <= int(*f.OneofIndex) {
oneofByIndex = append(oneofByIndex, []*descriptor.FieldDescriptorProto{})
}
oneofByIndex[*f.OneofIndex] = append(oneofByIndex[*f.OneofIndex], f)
continue
}
// Handle all kinds of message type
if f.IsMessage() {
// Handle map type
if d.genMap(m, f) {
continue
}
// Handle any message which is not repeated or part of oneof
if !f.IsRepeated() && f.OneofIndex == nil {
if !gogoproto.IsNullable(f) {
d.genCopyFunc("&m."+fName, "&o."+fName)
} else {
d.P("if o.", fName, " != nil {")
d.In()
// allocate dst object
d.P("m.", fName, " = &", d.TypeName(d.ObjectNamed(f.GetTypeName())), "{}")
// copy into the allocated struct
d.genCopyFunc("m."+fName, "o."+fName)
d.Out()
d.P("}")
}
continue
}
}
// Handle repeated field
if f.IsRepeated() {
d.genRepeated(m, f)
continue
}
// skip: field was a scalar handled by shallow copy!
}
for i, oo := range m.GetOneofDecl() {
d.genOneOf(m, oo, oneofByIndex[i])
}
d.P("}")
d.P()
}
开发者ID:yongtang,项目名称:swarmkit,代码行数:90,代码来源:deepcopy.go
注:本文中的github.com/gogo/protobuf/gogoproto.IsCustomName函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论