package impl
import (
)
func ( *MessageInfo, pointer, marshalOptions) ( int) {
if !flags.ProtoLegacy {
return 0
}
:= *.Apply(.extensionOffset).Extensions()
for , := range {
:= getExtensionFieldInfo(.Type())
if .funcs.size == nil {
continue
}
, := protowire.DecodeTag(.wiretag)
+= messageset.SizeField()
+= .funcs.size(.Value(), protowire.SizeTag(messageset.FieldMessage), )
}
if := .getUnknownBytes(); != nil {
+= messageset.SizeUnknown(*)
}
return
}
func ( *MessageInfo, []byte, pointer, marshalOptions) ([]byte, error) {
if !flags.ProtoLegacy {
return , errors.New("no support for message_set_wire_format")
}
:= *.Apply(.extensionOffset).Extensions()
switch len() {
case 0:
case 1:
for , := range {
var error
, = marshalMessageSetField(, , , )
if != nil {
return ,
}
}
default:
:= make([]int, 0, len())
for := range {
= append(, int())
}
sort.Ints()
for , := range {
var error
, = marshalMessageSetField(, , [int32()], )
if != nil {
return ,
}
}
}
if := .getUnknownBytes(); != nil {
var error
, = messageset.AppendUnknown(, *)
if != nil {
return ,
}
}
return , nil
}
func ( *MessageInfo, []byte, ExtensionField, marshalOptions) ([]byte, error) {
:= getExtensionFieldInfo(.Type())
, := protowire.DecodeTag(.wiretag)
= messageset.AppendFieldStart(, )
, := .funcs.marshal(, .Value(), protowire.EncodeTag(messageset.FieldMessage, protowire.BytesType), )
if != nil {
return ,
}
= messageset.AppendFieldEnd()
return , nil
}
func ( *MessageInfo, []byte, pointer, unmarshalOptions) ( unmarshalOutput, error) {
if !flags.ProtoLegacy {
return , errors.New("no support for message_set_wire_format")
}
:= .Apply(.extensionOffset).Extensions()
if * == nil {
* = make(map[int32]ExtensionField)
}
:= *
:= true
= messageset.Unmarshal(, true, func( protowire.Number, []byte) error {
, := .unmarshalExtension(, , protowire.BytesType, , )
if == errUnknown {
:= .mutableUnknownBytes()
* = protowire.AppendTag(*, , protowire.BytesType)
* = append(*, ...)
return nil
}
if !.initialized {
= false
}
return
})
.n = len()
.initialized =
return ,
}