Level sets dependency graph to consume etcd 3.1.5

This commit is contained in:
Timothy St. Clair
2017-04-04 20:54:55 -05:00
parent 1c34102d5b
commit 93c051e28f
392 changed files with 39050 additions and 21582 deletions

View File

@@ -1,4 +1,6 @@
// Copyright (c) 2013, Vastech SA (PTY) LTD. All rights reserved.
// Protocol Buffers for Go with Gadgets
//
// Copyright (c) 2013, The GoGo Authors. All rights reserved.
// http://github.com/gogo/protobuf
//
// Redistribution and use in source and binary forms, with or without
@@ -73,35 +75,35 @@ message B {
given to the marshalto plugin, will generate the following code:
func (m *B) Marshal() (data []byte, err error) {
func (m *B) Marshal() (dAtA []byte, err error) {
size := m.Size()
data = make([]byte, size)
n, err := m.MarshalTo(data)
dAtA = make([]byte, size)
n, err := m.MarshalTo(dAtA)
if err != nil {
return nil, err
}
return data[:n], nil
return dAtA[:n], nil
}
func (m *B) MarshalTo(data []byte) (int, error) {
func (m *B) MarshalTo(dAtA []byte) (int, error) {
var i int
_ = i
var l int
_ = l
data[i] = 0xa
dAtA[i] = 0xa
i++
i = encodeVarintExample(data, i, uint64(m.A.Size()))
n2, err := m.A.MarshalTo(data[i:])
i = encodeVarintExample(dAtA, i, uint64(m.A.Size()))
n2, err := m.A.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
i += n2
if len(m.G) > 0 {
for _, msg := range m.G {
data[i] = 0x12
dAtA[i] = 0x12
i++
i = encodeVarintExample(data, i, uint64(msg.Size()))
n, err := msg.MarshalTo(data[i:])
i = encodeVarintExample(dAtA, i, uint64(msg.Size()))
n, err := msg.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
@@ -109,7 +111,7 @@ given to the marshalto plugin, will generate the following code:
}
}
if m.XXX_unrecognized != nil {
i += copy(data[i:], m.XXX_unrecognized)
i += copy(dAtA[i:], m.XXX_unrecognized)
}
return i, nil
}
@@ -175,6 +177,7 @@ type marshalto struct {
protoPkg generator.Single
sortKeysPkg generator.Single
mathPkg generator.Single
typesPkg generator.Single
localName string
unsafe bool
}
@@ -199,66 +202,66 @@ func (p *marshalto) Init(g *generator.Generator) {
}
func (p *marshalto) callFixed64(varName ...string) {
p.P(`i = encodeFixed64`, p.localName, `(data, i, uint64(`, strings.Join(varName, ""), `))`)
p.P(`i = encodeFixed64`, p.localName, `(dAtA, i, uint64(`, strings.Join(varName, ""), `))`)
}
func (p *marshalto) callFixed32(varName ...string) {
p.P(`i = encodeFixed32`, p.localName, `(data, i, uint32(`, strings.Join(varName, ""), `))`)
p.P(`i = encodeFixed32`, p.localName, `(dAtA, i, uint32(`, strings.Join(varName, ""), `))`)
}
func (p *marshalto) callVarint(varName ...string) {
p.P(`i = encodeVarint`, p.localName, `(data, i, uint64(`, strings.Join(varName, ""), `))`)
p.P(`i = encodeVarint`, p.localName, `(dAtA, i, uint64(`, strings.Join(varName, ""), `))`)
}
func (p *marshalto) encodeVarint(varName string) {
p.P(`for `, varName, ` >= 1<<7 {`)
p.In()
p.P(`data[i] = uint8(uint64(`, varName, `)&0x7f|0x80)`)
p.P(`dAtA[i] = uint8(uint64(`, varName, `)&0x7f|0x80)`)
p.P(varName, ` >>= 7`)
p.P(`i++`)
p.Out()
p.P(`}`)
p.P(`data[i] = uint8(`, varName, `)`)
p.P(`dAtA[i] = uint8(`, varName, `)`)
p.P(`i++`)
}
func (p *marshalto) encodeFixed64(varName string) {
p.P(`data[i] = uint8(`, varName, `)`)
p.P(`dAtA[i] = uint8(`, varName, `)`)
p.P(`i++`)
p.P(`data[i] = uint8(`, varName, ` >> 8)`)
p.P(`dAtA[i] = uint8(`, varName, ` >> 8)`)
p.P(`i++`)
p.P(`data[i] = uint8(`, varName, ` >> 16)`)
p.P(`dAtA[i] = uint8(`, varName, ` >> 16)`)
p.P(`i++`)
p.P(`data[i] = uint8(`, varName, ` >> 24)`)
p.P(`dAtA[i] = uint8(`, varName, ` >> 24)`)
p.P(`i++`)
p.P(`data[i] = uint8(`, varName, ` >> 32)`)
p.P(`dAtA[i] = uint8(`, varName, ` >> 32)`)
p.P(`i++`)
p.P(`data[i] = uint8(`, varName, ` >> 40)`)
p.P(`dAtA[i] = uint8(`, varName, ` >> 40)`)
p.P(`i++`)
p.P(`data[i] = uint8(`, varName, ` >> 48)`)
p.P(`dAtA[i] = uint8(`, varName, ` >> 48)`)
p.P(`i++`)
p.P(`data[i] = uint8(`, varName, ` >> 56)`)
p.P(`dAtA[i] = uint8(`, varName, ` >> 56)`)
p.P(`i++`)
}
func (p *marshalto) unsafeFixed64(varName string, someType string) {
p.P(`*(*`, someType, `)(`, p.unsafePkg.Use(), `.Pointer(&data[i])) = `, varName)
p.P(`*(*`, someType, `)(`, p.unsafePkg.Use(), `.Pointer(&dAtA[i])) = `, varName)
p.P(`i+=8`)
}
func (p *marshalto) encodeFixed32(varName string) {
p.P(`data[i] = uint8(`, varName, `)`)
p.P(`dAtA[i] = uint8(`, varName, `)`)
p.P(`i++`)
p.P(`data[i] = uint8(`, varName, ` >> 8)`)
p.P(`dAtA[i] = uint8(`, varName, ` >> 8)`)
p.P(`i++`)
p.P(`data[i] = uint8(`, varName, ` >> 16)`)
p.P(`dAtA[i] = uint8(`, varName, ` >> 16)`)
p.P(`i++`)
p.P(`data[i] = uint8(`, varName, ` >> 24)`)
p.P(`dAtA[i] = uint8(`, varName, ` >> 24)`)
p.P(`i++`)
}
func (p *marshalto) unsafeFixed32(varName string, someType string) {
p.P(`*(*`, someType, `)(`, p.unsafePkg.Use(), `.Pointer(&data[i])) = `, varName)
p.P(`*(*`, someType, `)(`, p.unsafePkg.Use(), `.Pointer(&dAtA[i])) = `, varName)
p.P(`i+=4`)
}
@@ -272,7 +275,7 @@ func (p *marshalto) encodeKey(fieldNumber int32, wireType int) {
}
keybuf = append(keybuf, uint8(x))
for _, b := range keybuf {
p.P(`data[i] = `, fmt.Sprintf("%#v", b))
p.P(`dAtA[i] = `, fmt.Sprintf("%#v", b))
p.P(`i++`)
}
}
@@ -307,8 +310,8 @@ func wireToType(wire string) int {
panic("unreachable")
}
func (p *marshalto) mapField(numGen NumGen, fieldTyp descriptor.FieldDescriptorProto_Type, varName string, protoSizer bool) {
switch fieldTyp {
func (p *marshalto) mapField(numGen NumGen, field *descriptor.FieldDescriptorProto, kvField *descriptor.FieldDescriptorProto, varName string, protoSizer bool) {
switch kvField.GetType() {
case descriptor.FieldDescriptorProto_TYPE_DOUBLE:
p.callFixed64(p.mathPkg.Use(), `.Float64bits(float64(`, varName, `))`)
case descriptor.FieldDescriptorProto_TYPE_FLOAT:
@@ -328,29 +331,47 @@ func (p *marshalto) mapField(numGen NumGen, fieldTyp descriptor.FieldDescriptorP
case descriptor.FieldDescriptorProto_TYPE_BOOL:
p.P(`if `, varName, ` {`)
p.In()
p.P(`data[i] = 1`)
p.P(`dAtA[i] = 1`)
p.Out()
p.P(`} else {`)
p.In()
p.P(`data[i] = 0`)
p.P(`dAtA[i] = 0`)
p.Out()
p.P(`}`)
p.P(`i++`)
case descriptor.FieldDescriptorProto_TYPE_STRING,
descriptor.FieldDescriptorProto_TYPE_BYTES:
p.callVarint(`len(`, varName, `)`)
p.P(`i+=copy(data[i:], `, varName, `)`)
if gogoproto.IsCustomType(field) && kvField.IsBytes() {
p.callVarint(varName, `.Size()`)
p.P(`n`, numGen.Next(), `, err := `, varName, `.MarshalTo(dAtA[i:])`)
p.P(`if err != nil {`)
p.In()
p.P(`return 0, err`)
p.Out()
p.P(`}`)
p.P(`i+=n`, numGen.Current())
} else {
p.callVarint(`len(`, varName, `)`)
p.P(`i+=copy(dAtA[i:], `, varName, `)`)
}
case descriptor.FieldDescriptorProto_TYPE_SINT32:
p.callVarint(`(uint32(`, varName, `) << 1) ^ uint32((`, varName, ` >> 31))`)
case descriptor.FieldDescriptorProto_TYPE_SINT64:
p.callVarint(`(uint64(`, varName, `) << 1) ^ uint64((`, varName, ` >> 63))`)
case descriptor.FieldDescriptorProto_TYPE_MESSAGE:
if protoSizer {
if gogoproto.IsStdTime(field) {
p.callVarint(p.typesPkg.Use(), `.SizeOfStdTime(*`, varName, `)`)
p.P(`n`, numGen.Next(), `, err := `, p.typesPkg.Use(), `.StdTimeMarshalTo(*`, varName, `, dAtA[i:])`)
} else if gogoproto.IsStdDuration(field) {
p.callVarint(p.typesPkg.Use(), `.SizeOfStdDuration(*`, varName, `)`)
p.P(`n`, numGen.Next(), `, err := `, p.typesPkg.Use(), `.StdDurationMarshalTo(*`, varName, `, dAtA[i:])`)
} else if protoSizer {
p.callVarint(varName, `.ProtoSize()`)
p.P(`n`, numGen.Next(), `, err := `, varName, `.MarshalTo(dAtA[i:])`)
} else {
p.callVarint(varName, `.Size()`)
p.P(`n`, numGen.Next(), `, err := `, varName, `.MarshalTo(dAtA[i:])`)
}
p.P(`n`, numGen.Next(), `, err := `, varName, `.MarshalTo(data[i:])`)
p.P(`if err != nil {`)
p.In()
p.P(`return 0, err`)
@@ -399,7 +420,7 @@ func (p *marshalto) generateField(proto3 bool, numGen NumGen, file *generator.Fi
p.P(`if m.`, fieldname, ` != nil {`)
p.In()
}
packed := field.IsPacked()
packed := field.IsPacked() || (proto3 && field.IsPacked3())
wireType := field.WireType()
fieldNumber := field.GetNumber()
if packed {
@@ -541,7 +562,7 @@ func (p *marshalto) generateField(proto3 bool, numGen NumGen, file *generator.Fi
descriptor.FieldDescriptorProto_TYPE_ENUM:
if packed {
jvar := "j" + numGen.Next()
p.P(`data`, numGen.Next(), ` := make([]byte, len(m.`, fieldname, `)*10)`)
p.P(`dAtA`, numGen.Next(), ` := make([]byte, len(m.`, fieldname, `)*10)`)
p.P(`var `, jvar, ` int`)
if *field.Type == descriptor.FieldDescriptorProto_TYPE_INT64 ||
*field.Type == descriptor.FieldDescriptorProto_TYPE_INT32 {
@@ -554,18 +575,18 @@ func (p *marshalto) generateField(proto3 bool, numGen NumGen, file *generator.Fi
}
p.P(`for num >= 1<<7 {`)
p.In()
p.P(`data`, numGen.Current(), `[`, jvar, `] = uint8(uint64(num)&0x7f|0x80)`)
p.P(`dAtA`, numGen.Current(), `[`, jvar, `] = uint8(uint64(num)&0x7f|0x80)`)
p.P(`num >>= 7`)
p.P(jvar, `++`)
p.Out()
p.P(`}`)
p.P(`data`, numGen.Current(), `[`, jvar, `] = uint8(num)`)
p.P(`dAtA`, numGen.Current(), `[`, jvar, `] = uint8(num)`)
p.P(jvar, `++`)
p.Out()
p.P(`}`)
p.encodeKey(fieldNumber, wireType)
p.callVarint(jvar)
p.P(`i += copy(data[i:], data`, numGen.Current(), `[:`, jvar, `])`)
p.P(`i += copy(dAtA[i:], dAtA`, numGen.Current(), `[:`, jvar, `])`)
} else if repeated {
p.P(`for _, num := range m.`, fieldname, ` {`)
p.In()
@@ -729,11 +750,11 @@ func (p *marshalto) generateField(proto3 bool, numGen NumGen, file *generator.Fi
p.In()
p.P(`if b {`)
p.In()
p.P(`data[i] = 1`)
p.P(`dAtA[i] = 1`)
p.Out()
p.P(`} else {`)
p.In()
p.P(`data[i] = 0`)
p.P(`dAtA[i] = 0`)
p.Out()
p.P(`}`)
p.P(`i++`)
@@ -745,11 +766,11 @@ func (p *marshalto) generateField(proto3 bool, numGen NumGen, file *generator.Fi
p.encodeKey(fieldNumber, wireType)
p.P(`if b {`)
p.In()
p.P(`data[i] = 1`)
p.P(`dAtA[i] = 1`)
p.Out()
p.P(`} else {`)
p.In()
p.P(`data[i] = 0`)
p.P(`dAtA[i] = 0`)
p.Out()
p.P(`}`)
p.P(`i++`)
@@ -761,11 +782,11 @@ func (p *marshalto) generateField(proto3 bool, numGen NumGen, file *generator.Fi
p.encodeKey(fieldNumber, wireType)
p.P(`if m.`, fieldname, ` {`)
p.In()
p.P(`data[i] = 1`)
p.P(`dAtA[i] = 1`)
p.Out()
p.P(`} else {`)
p.In()
p.P(`data[i] = 0`)
p.P(`dAtA[i] = 0`)
p.Out()
p.P(`}`)
p.P(`i++`)
@@ -775,11 +796,11 @@ func (p *marshalto) generateField(proto3 bool, numGen NumGen, file *generator.Fi
p.encodeKey(fieldNumber, wireType)
p.P(`if m.`, fieldname, ` {`)
p.In()
p.P(`data[i] = 1`)
p.P(`dAtA[i] = 1`)
p.Out()
p.P(`} else {`)
p.In()
p.P(`data[i] = 0`)
p.P(`dAtA[i] = 0`)
p.Out()
p.P(`}`)
p.P(`i++`)
@@ -787,11 +808,11 @@ func (p *marshalto) generateField(proto3 bool, numGen NumGen, file *generator.Fi
p.encodeKey(fieldNumber, wireType)
p.P(`if *m.`, fieldname, ` {`)
p.In()
p.P(`data[i] = 1`)
p.P(`dAtA[i] = 1`)
p.Out()
p.P(`} else {`)
p.In()
p.P(`data[i] = 0`)
p.P(`dAtA[i] = 0`)
p.Out()
p.P(`}`)
p.P(`i++`)
@@ -803,7 +824,7 @@ func (p *marshalto) generateField(proto3 bool, numGen NumGen, file *generator.Fi
p.encodeKey(fieldNumber, wireType)
p.P(`l = len(s)`)
p.encodeVarint("l")
p.P(`i+=copy(data[i:], s)`)
p.P(`i+=copy(dAtA[i:], s)`)
p.Out()
p.P(`}`)
} else if proto3 {
@@ -811,17 +832,17 @@ func (p *marshalto) generateField(proto3 bool, numGen NumGen, file *generator.Fi
p.In()
p.encodeKey(fieldNumber, wireType)
p.callVarint(`len(m.`, fieldname, `)`)
p.P(`i+=copy(data[i:], m.`, fieldname, `)`)
p.P(`i+=copy(dAtA[i:], m.`, fieldname, `)`)
p.Out()
p.P(`}`)
} else if !nullable {
p.encodeKey(fieldNumber, wireType)
p.callVarint(`len(m.`, fieldname, `)`)
p.P(`i+=copy(data[i:], m.`, fieldname, `)`)
p.P(`i+=copy(dAtA[i:], m.`, fieldname, `)`)
} else {
p.encodeKey(fieldNumber, wireType)
p.callVarint(`len(*m.`, fieldname, `)`)
p.P(`i+=copy(data[i:], *m.`, fieldname, `)`)
p.P(`i+=copy(dAtA[i:], *m.`, fieldname, `)`)
}
case descriptor.FieldDescriptorProto_TYPE_GROUP:
panic(fmt.Errorf("marshaler does not support group %v", fieldname))
@@ -885,39 +906,65 @@ func (p *marshalto) generateField(proto3 bool, numGen NumGen, file *generator.Fi
p.P(`v := m.`, fieldname, `[k]`)
}
accessor := `v`
sum = append(sum, strconv.Itoa(valueKeySize))
switch m.ValueField.GetType() {
case descriptor.FieldDescriptorProto_TYPE_DOUBLE,
descriptor.FieldDescriptorProto_TYPE_FIXED64,
descriptor.FieldDescriptorProto_TYPE_SFIXED64:
sum = append(sum, strconv.Itoa(valueKeySize))
sum = append(sum, strconv.Itoa(8))
case descriptor.FieldDescriptorProto_TYPE_FLOAT,
descriptor.FieldDescriptorProto_TYPE_FIXED32,
descriptor.FieldDescriptorProto_TYPE_SFIXED32:
sum = append(sum, strconv.Itoa(valueKeySize))
sum = append(sum, strconv.Itoa(4))
case descriptor.FieldDescriptorProto_TYPE_INT64,
descriptor.FieldDescriptorProto_TYPE_UINT64,
descriptor.FieldDescriptorProto_TYPE_UINT32,
descriptor.FieldDescriptorProto_TYPE_ENUM,
descriptor.FieldDescriptorProto_TYPE_INT32:
sum = append(sum, strconv.Itoa(valueKeySize))
sum = append(sum, `sov`+p.localName+`(uint64(v))`)
case descriptor.FieldDescriptorProto_TYPE_BOOL:
sum = append(sum, strconv.Itoa(valueKeySize))
sum = append(sum, `1`)
case descriptor.FieldDescriptorProto_TYPE_STRING,
descriptor.FieldDescriptorProto_TYPE_BYTES:
case descriptor.FieldDescriptorProto_TYPE_STRING:
sum = append(sum, strconv.Itoa(valueKeySize))
sum = append(sum, `len(v)+sov`+p.localName+`(uint64(len(v)))`)
case descriptor.FieldDescriptorProto_TYPE_SINT32,
descriptor.FieldDescriptorProto_TYPE_SINT64:
sum = append(sum, `soz`+p.localName+`(uint64(v))`)
case descriptor.FieldDescriptorProto_TYPE_MESSAGE:
if nullable {
p.P(`if v == nil {`)
case descriptor.FieldDescriptorProto_TYPE_BYTES:
if gogoproto.IsCustomType(field) {
p.P(`cSize := 0`)
if gogoproto.IsNullable(field) {
p.P(`if `, accessor, ` != nil {`)
p.In()
}
p.P(`cSize = `, accessor, `.Size()`)
p.P(`cSize += `, strconv.Itoa(valueKeySize), ` + sov`+p.localName+`(uint64(cSize))`)
if gogoproto.IsNullable(field) {
p.Out()
p.P(`}`)
}
sum = append(sum, `cSize`)
} else {
p.P(`byteSize := 0`)
if proto3 {
p.P(`if len(v) > 0 {`)
} else {
p.P(`if v != nil {`)
}
p.In()
p.P(`return 0, `, p.errorsPkg.Use(), `.New("proto: map has nil element")`)
p.P(`byteSize = `, strconv.Itoa(valueKeySize), ` + len(v)+sov`+p.localName+`(uint64(len(v)))`)
p.Out()
p.P(`}`)
sum = append(sum, `byteSize`)
}
if valuegoTyp != valuegoAliasTyp {
case descriptor.FieldDescriptorProto_TYPE_SINT32,
descriptor.FieldDescriptorProto_TYPE_SINT64:
sum = append(sum, strconv.Itoa(valueKeySize))
sum = append(sum, `soz`+p.localName+`(uint64(v))`)
case descriptor.FieldDescriptorProto_TYPE_MESSAGE:
if valuegoTyp != valuegoAliasTyp &&
!gogoproto.IsStdTime(field) &&
!gogoproto.IsStdDuration(field) {
if nullable {
// cast back to the type that has the generated methods on it
accessor = `((` + valuegoTyp + `)(` + accessor + `))`
@@ -927,31 +974,73 @@ func (p *marshalto) generateField(proto3 bool, numGen NumGen, file *generator.Fi
} else if !nullable {
accessor = `(&v)`
}
if protoSizer {
p.P(`msgSize := `, accessor, `.ProtoSize()`)
p.P(`msgSize := 0`)
p.P(`if `, accessor, ` != nil {`)
p.In()
if gogoproto.IsStdTime(field) {
p.P(`msgSize = `, p.typesPkg.Use(), `.SizeOfStdTime(*`, accessor, `)`)
} else if gogoproto.IsStdDuration(field) {
p.P(`msgSize = `, p.typesPkg.Use(), `.SizeOfStdDuration(*`, accessor, `)`)
} else if protoSizer {
p.P(`msgSize = `, accessor, `.ProtoSize()`)
} else {
p.P(`msgSize := `, accessor, `.Size()`)
p.P(`msgSize = `, accessor, `.Size()`)
}
sum = append(sum, `msgSize + sov`+p.localName+`(uint64(msgSize))`)
p.P(`msgSize += `, strconv.Itoa(valueKeySize), ` + sov`+p.localName+`(uint64(msgSize))`)
p.Out()
p.P(`}`)
sum = append(sum, `msgSize`)
}
p.P(`mapSize := `, strings.Join(sum, " + "))
p.callVarint("mapSize")
p.encodeKey(1, wireToType(keywire))
p.mapField(numGen, m.KeyField.GetType(), "k", protoSizer)
p.mapField(numGen, field, m.KeyField, "k", protoSizer)
nullableMsg := nullable && (m.ValueField.GetType() == descriptor.FieldDescriptorProto_TYPE_MESSAGE ||
gogoproto.IsCustomType(field) && m.ValueField.IsBytes())
plainBytes := m.ValueField.IsBytes() && !gogoproto.IsCustomType(field)
if nullableMsg {
p.P(`if `, accessor, ` != nil { `)
p.In()
} else if plainBytes {
if proto3 {
p.P(`if len(`, accessor, `) > 0 {`)
} else {
p.P(`if `, accessor, ` != nil {`)
}
p.In()
}
p.encodeKey(2, wireToType(valuewire))
p.mapField(numGen, m.ValueField.GetType(), accessor, protoSizer)
p.mapField(numGen, field, m.ValueField, accessor, protoSizer)
if nullableMsg || plainBytes {
p.Out()
p.P(`}`)
}
p.Out()
p.P(`}`)
} else if repeated {
p.P(`for _, msg := range m.`, fieldname, ` {`)
p.In()
p.encodeKey(fieldNumber, wireType)
if protoSizer {
p.callVarint("msg.ProtoSize()")
varName := "msg"
if gogoproto.IsStdTime(field) {
if gogoproto.IsNullable(field) {
varName = "*" + varName
}
p.callVarint(p.typesPkg.Use(), `.SizeOfStdTime(`, varName, `)`)
p.P(`n, err := `, p.typesPkg.Use(), `.StdTimeMarshalTo(`, varName, `, dAtA[i:])`)
} else if gogoproto.IsStdDuration(field) {
if gogoproto.IsNullable(field) {
varName = "*" + varName
}
p.callVarint(p.typesPkg.Use(), `.SizeOfStdDuration(`, varName, `)`)
p.P(`n, err := `, p.typesPkg.Use(), `.StdDurationMarshalTo(`, varName, `, dAtA[i:])`)
} else if protoSizer {
p.callVarint(varName, ".ProtoSize()")
p.P(`n, err := `, varName, `.MarshalTo(dAtA[i:])`)
} else {
p.callVarint("msg.Size()")
p.callVarint(varName, ".Size()")
p.P(`n, err := `, varName, `.MarshalTo(dAtA[i:])`)
}
p.P(`n, err := msg.MarshalTo(data[i:])`)
p.P(`if err != nil {`)
p.In()
p.P(`return 0, err`)
@@ -962,12 +1051,26 @@ func (p *marshalto) generateField(proto3 bool, numGen NumGen, file *generator.Fi
p.P(`}`)
} else {
p.encodeKey(fieldNumber, wireType)
if protoSizer {
p.callVarint(`m.`, fieldname, `.ProtoSize()`)
varName := `m.` + fieldname
if gogoproto.IsStdTime(field) {
if gogoproto.IsNullable(field) {
varName = "*" + varName
}
p.callVarint(p.typesPkg.Use(), `.SizeOfStdTime(`, varName, `)`)
p.P(`n`, numGen.Next(), `, err := `, p.typesPkg.Use(), `.StdTimeMarshalTo(`, varName, `, dAtA[i:])`)
} else if gogoproto.IsStdDuration(field) {
if gogoproto.IsNullable(field) {
varName = "*" + varName
}
p.callVarint(p.typesPkg.Use(), `.SizeOfStdDuration(`, varName, `)`)
p.P(`n`, numGen.Next(), `, err := `, p.typesPkg.Use(), `.StdDurationMarshalTo(`, varName, `, dAtA[i:])`)
} else if protoSizer {
p.callVarint(varName, `.ProtoSize()`)
p.P(`n`, numGen.Next(), `, err := `, varName, `.MarshalTo(dAtA[i:])`)
} else {
p.callVarint(`m.`, fieldname, `.Size()`)
p.callVarint(varName, `.Size()`)
p.P(`n`, numGen.Next(), `, err := `, varName, `.MarshalTo(dAtA[i:])`)
}
p.P(`n`, numGen.Next(), `, err := m.`, fieldname, `.MarshalTo(data[i:])`)
p.P(`if err != nil {`)
p.In()
p.P(`return 0, err`)
@@ -982,7 +1085,7 @@ func (p *marshalto) generateField(proto3 bool, numGen NumGen, file *generator.Fi
p.In()
p.encodeKey(fieldNumber, wireType)
p.callVarint("len(b)")
p.P(`i+=copy(data[i:], b)`)
p.P(`i+=copy(dAtA[i:], b)`)
p.Out()
p.P(`}`)
} else if proto3 {
@@ -990,13 +1093,13 @@ func (p *marshalto) generateField(proto3 bool, numGen NumGen, file *generator.Fi
p.In()
p.encodeKey(fieldNumber, wireType)
p.callVarint(`len(m.`, fieldname, `)`)
p.P(`i+=copy(data[i:], m.`, fieldname, `)`)
p.P(`i+=copy(dAtA[i:], m.`, fieldname, `)`)
p.Out()
p.P(`}`)
} else {
p.encodeKey(fieldNumber, wireType)
p.callVarint(`len(m.`, fieldname, `)`)
p.P(`i+=copy(data[i:], m.`, fieldname, `)`)
p.P(`i+=copy(dAtA[i:], m.`, fieldname, `)`)
}
} else {
if repeated {
@@ -1008,7 +1111,7 @@ func (p *marshalto) generateField(proto3 bool, numGen NumGen, file *generator.Fi
} else {
p.callVarint(`msg.Size()`)
}
p.P(`n, err := msg.MarshalTo(data[i:])`)
p.P(`n, err := msg.MarshalTo(dAtA[i:])`)
p.P(`if err != nil {`)
p.In()
p.P(`return 0, err`)
@@ -1024,7 +1127,7 @@ func (p *marshalto) generateField(proto3 bool, numGen NumGen, file *generator.Fi
} else {
p.callVarint(`m.`, fieldname, `.Size()`)
}
p.P(`n`, numGen.Next(), `, err := m.`, fieldname, `.MarshalTo(data[i:])`)
p.P(`n`, numGen.Next(), `, err := m.`, fieldname, `.MarshalTo(dAtA[i:])`)
p.P(`if err != nil {`)
p.In()
p.P(`return 0, err`)
@@ -1035,7 +1138,7 @@ func (p *marshalto) generateField(proto3 bool, numGen NumGen, file *generator.Fi
}
case descriptor.FieldDescriptorProto_TYPE_SINT32:
if packed {
datavar := "data" + numGen.Next()
datavar := "dAtA" + numGen.Next()
jvar := "j" + numGen.Next()
p.P(datavar, ` := make([]byte, len(m.`, fieldname, ")*5)")
p.P(`var `, jvar, ` int`)
@@ -1056,7 +1159,7 @@ func (p *marshalto) generateField(proto3 bool, numGen NumGen, file *generator.Fi
p.P(`}`)
p.encodeKey(fieldNumber, wireType)
p.callVarint(jvar)
p.P(`i+=copy(data[i:], `, datavar, `[:`, jvar, `])`)
p.P(`i+=copy(dAtA[i:], `, datavar, `[:`, jvar, `])`)
} else if repeated {
p.P(`for _, num := range m.`, fieldname, ` {`)
p.In()
@@ -1083,7 +1186,7 @@ func (p *marshalto) generateField(proto3 bool, numGen NumGen, file *generator.Fi
if packed {
jvar := "j" + numGen.Next()
xvar := "x" + numGen.Next()
datavar := "data" + numGen.Next()
datavar := "dAtA" + numGen.Next()
p.P(`var `, jvar, ` int`)
p.P(datavar, ` := make([]byte, len(m.`, fieldname, `)*10)`)
p.P(`for _, num := range m.`, fieldname, ` {`)
@@ -1102,7 +1205,7 @@ func (p *marshalto) generateField(proto3 bool, numGen NumGen, file *generator.Fi
p.P(`}`)
p.encodeKey(fieldNumber, wireType)
p.callVarint(jvar)
p.P(`i+=copy(data[i:], `, datavar, `[:`, jvar, `])`)
p.P(`i+=copy(dAtA[i:], `, datavar, `[:`, jvar, `])`)
} else if repeated {
p.P(`for _, num := range m.`, fieldname, ` {`)
p.In()
@@ -1148,6 +1251,7 @@ func (p *marshalto) Generate(file *generator.FileDescriptor) {
}
p.unsafePkg = p.NewImport("unsafe")
p.errorsPkg = p.NewImport("errors")
p.typesPkg = p.NewImport("github.com/gogo/protobuf/types")
for _, message := range file.Messages() {
if message.DescriptorProto.GetOptions().GetMapEntry() {
@@ -1172,25 +1276,25 @@ func (p *marshalto) Generate(file *generator.FileDescriptor) {
}
p.atleastOne = true
p.P(`func (m *`, ccTypeName, `) Marshal() (data []byte, err error) {`)
p.P(`func (m *`, ccTypeName, `) Marshal() (dAtA []byte, err error) {`)
p.In()
if gogoproto.IsProtoSizer(file.FileDescriptorProto, message.DescriptorProto) {
p.P(`size := m.ProtoSize()`)
} else {
p.P(`size := m.Size()`)
}
p.P(`data = make([]byte, size)`)
p.P(`n, err := m.MarshalTo(data)`)
p.P(`dAtA = make([]byte, size)`)
p.P(`n, err := m.MarshalTo(dAtA)`)
p.P(`if err != nil {`)
p.In()
p.P(`return nil, err`)
p.Out()
p.P(`}`)
p.P(`return data[:n], nil`)
p.P(`return dAtA[:n], nil`)
p.Out()
p.P(`}`)
p.P(``)
p.P(`func (m *`, ccTypeName, `) MarshalTo(data []byte) (int, error) {`)
p.P(`func (m *`, ccTypeName, `) MarshalTo(dAtA []byte) (int, error) {`)
p.In()
p.P(`var i int`)
p.P(`_ = i`)
@@ -1210,7 +1314,7 @@ func (p *marshalto) Generate(file *generator.FileDescriptor) {
oneofs[fieldname] = struct{}{}
p.P(`if m.`, fieldname, ` != nil {`)
p.In()
p.P(`nn`, numGen.Next(), `, err := m.`, fieldname, `.MarshalTo(data[i:])`)
p.P(`nn`, numGen.Next(), `, err := m.`, fieldname, `.MarshalTo(dAtA[i:])`)
p.P(`if err != nil {`)
p.In()
p.P(`return 0, err`)
@@ -1224,21 +1328,17 @@ func (p *marshalto) Generate(file *generator.FileDescriptor) {
}
if message.DescriptorProto.HasExtension() {
if gogoproto.HasExtensionsMap(file.FileDescriptorProto, message.DescriptorProto) {
p.P(`if len(m.XXX_extensions) > 0 {`)
p.In()
p.P(`n, err := `, p.protoPkg.Use(), `.EncodeExtensionMap(m.XXX_extensions, data[i:])`)
p.P(`n, err := `, p.protoPkg.Use(), `.EncodeInternalExtension(m, dAtA[i:])`)
p.P(`if err != nil {`)
p.In()
p.P(`return 0, err`)
p.Out()
p.P(`}`)
p.P(`i+=n`)
p.Out()
p.P(`}`)
} else {
p.P(`if m.XXX_extensions != nil {`)
p.In()
p.P(`i+=copy(data[i:], m.XXX_extensions)`)
p.P(`i+=copy(dAtA[i:], m.XXX_extensions)`)
p.Out()
p.P(`}`)
}
@@ -1246,7 +1346,7 @@ func (p *marshalto) Generate(file *generator.FileDescriptor) {
if gogoproto.HasUnrecognized(file.FileDescriptorProto, message.DescriptorProto) {
p.P(`if m.XXX_unrecognized != nil {`)
p.In()
p.P(`i+=copy(data[i:], m.XXX_unrecognized)`)
p.P(`i+=copy(dAtA[i:], m.XXX_unrecognized)`)
p.Out()
p.P(`}`)
}
@@ -1264,7 +1364,7 @@ func (p *marshalto) Generate(file *generator.FileDescriptor) {
continue
}
ccTypeName := p.OneOfTypeName(message, field)
p.P(`func (m *`, ccTypeName, `) MarshalTo(data []byte) (int, error) {`)
p.P(`func (m *`, ccTypeName, `) MarshalTo(dAtA []byte) (int, error) {`)
p.In()
p.P(`i := 0`)
vanity.TurnOffNullableForNativeTypesWithoutDefaultsOnly(field)
@@ -1276,40 +1376,40 @@ func (p *marshalto) Generate(file *generator.FileDescriptor) {
}
if p.atleastOne {
p.P(`func encodeFixed64`, p.localName, `(data []byte, offset int, v uint64) int {`)
p.P(`func encodeFixed64`, p.localName, `(dAtA []byte, offset int, v uint64) int {`)
p.In()
p.P(`data[offset] = uint8(v)`)
p.P(`data[offset+1] = uint8(v >> 8)`)
p.P(`data[offset+2] = uint8(v >> 16)`)
p.P(`data[offset+3] = uint8(v >> 24)`)
p.P(`data[offset+4] = uint8(v >> 32)`)
p.P(`data[offset+5] = uint8(v >> 40)`)
p.P(`data[offset+6] = uint8(v >> 48)`)
p.P(`data[offset+7] = uint8(v >> 56)`)
p.P(`dAtA[offset] = uint8(v)`)
p.P(`dAtA[offset+1] = uint8(v >> 8)`)
p.P(`dAtA[offset+2] = uint8(v >> 16)`)
p.P(`dAtA[offset+3] = uint8(v >> 24)`)
p.P(`dAtA[offset+4] = uint8(v >> 32)`)
p.P(`dAtA[offset+5] = uint8(v >> 40)`)
p.P(`dAtA[offset+6] = uint8(v >> 48)`)
p.P(`dAtA[offset+7] = uint8(v >> 56)`)
p.P(`return offset+8`)
p.Out()
p.P(`}`)
p.P(`func encodeFixed32`, p.localName, `(data []byte, offset int, v uint32) int {`)
p.P(`func encodeFixed32`, p.localName, `(dAtA []byte, offset int, v uint32) int {`)
p.In()
p.P(`data[offset] = uint8(v)`)
p.P(`data[offset+1] = uint8(v >> 8)`)
p.P(`data[offset+2] = uint8(v >> 16)`)
p.P(`data[offset+3] = uint8(v >> 24)`)
p.P(`dAtA[offset] = uint8(v)`)
p.P(`dAtA[offset+1] = uint8(v >> 8)`)
p.P(`dAtA[offset+2] = uint8(v >> 16)`)
p.P(`dAtA[offset+3] = uint8(v >> 24)`)
p.P(`return offset+4`)
p.Out()
p.P(`}`)
p.P(`func encodeVarint`, p.localName, `(data []byte, offset int, v uint64) int {`)
p.P(`func encodeVarint`, p.localName, `(dAtA []byte, offset int, v uint64) int {`)
p.In()
p.P(`for v >= 1<<7 {`)
p.In()
p.P(`data[offset] = uint8(v&0x7f|0x80)`)
p.P(`dAtA[offset] = uint8(v&0x7f|0x80)`)
p.P(`v >>= 7`)
p.P(`offset++`)
p.Out()
p.P(`}`)
p.P(`data[offset] = uint8(v)`)
p.P(`dAtA[offset] = uint8(v)`)
p.P(`return offset+1`)
p.Out()
p.P(`}`)