mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-12-07 09:43:15 +00:00
Level sets dependency graph to consume etcd 3.1.5
This commit is contained in:
350
vendor/github.com/gogo/protobuf/plugin/marshalto/marshalto.go
generated
vendored
350
vendor/github.com/gogo/protobuf/plugin/marshalto/marshalto.go
generated
vendored
@@ -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(`}`)
|
||||
|
||||
Reference in New Issue
Block a user