package msgpack
import (
)
func ( *Encoder, reflect.Value) error {
if .IsNil() {
return .EncodeNil()
}
if := .EncodeMapLen(.Len()); != nil {
return
}
:= .MapRange()
for .Next() {
if := .EncodeValue(.Key()); != nil {
return
}
if := .EncodeValue(.Value()); != nil {
return
}
}
return nil
}
func ( *Encoder, reflect.Value) error {
if .IsNil() {
return .EncodeNil()
}
if := .EncodeMapLen(.Len()); != nil {
return
}
:= .Convert(mapStringStringType).Interface().(map[string]string)
if .flags&sortMapKeysFlag != 0 {
return .encodeSortedMapStringString()
}
for , := range {
if := .EncodeString(); != nil {
return
}
if := .EncodeString(); != nil {
return
}
}
return nil
}
func ( *Encoder, reflect.Value) error {
if .IsNil() {
return .EncodeNil()
}
:= .Convert(mapStringInterfaceType).Interface().(map[string]interface{})
if .flags&sortMapKeysFlag != 0 {
return .EncodeMapSorted()
}
return .EncodeMap()
}
func ( *Encoder) ( map[string]interface{}) error {
if == nil {
return .EncodeNil()
}
if := .EncodeMapLen(len()); != nil {
return
}
for , := range {
if := .EncodeString(); != nil {
return
}
if := .Encode(); != nil {
return
}
}
return nil
}
func ( *Encoder) ( map[string]interface{}) error {
if == nil {
return .EncodeNil()
}
if := .EncodeMapLen(len()); != nil {
return
}
:= make([]string, 0, len())
for := range {
= append(, )
}
sort.Strings()
for , := range {
if := .EncodeString(); != nil {
return
}
if := .Encode([]); != nil {
return
}
}
return nil
}
func ( *Encoder) ( map[string]string) error {
:= make([]string, 0, len())
for := range {
= append(, )
}
sort.Strings()
for , := range {
:= .EncodeString()
if != nil {
return
}
if = .EncodeString([]); != nil {
return
}
}
return nil
}
func ( *Encoder) ( int) error {
if < 16 {
return .writeCode(msgpcode.FixedMapLow | byte())
}
if <= math.MaxUint16 {
return .write2(msgpcode.Map16, uint16())
}
return .write4(msgpcode.Map32, uint32())
}
func ( *Encoder, reflect.Value) error {
:= structs.Fields(.Type(), .structTag)
if .flags&arrayEncodedStructsFlag != 0 || .AsArray {
return encodeStructValueAsArray(, , .List)
}
:= .OmitEmpty(, .flags&omitEmptyFlag != 0)
if := .EncodeMapLen(len()); != nil {
return
}
for , := range {
if := .EncodeString(.name); != nil {
return
}
if := .EncodeValue(, ); != nil {
return
}
}
return nil
}
func ( *Encoder, reflect.Value, []*field) error {
if := .EncodeArrayLen(len()); != nil {
return
}
for , := range {
if := .EncodeValue(, ); != nil {
return
}
}
return nil
}