MCPcopy
hub / github.com/uptrace/uptrace / encodeMap

Method encodeMap

pkg/msgp/encoder.go:103–123  ·  view source on GitHub ↗
(b []byte, p unsafe.Pointer, t reflect.Type, encodeKey, encodeValue encodeFunc, sortKeys sortFunc)

Source from the content-addressed store, hash-verified

101 return b, nil
102}
103func (e encoder) encodeMap(b []byte, p unsafe.Pointer, t reflect.Type, encodeKey, encodeValue encodeFunc, sortKeys sortFunc) (_ []byte, err error) {
104 m := reflect.NewAt(t, p).Elem()
105 if m.IsNil() {
106 return AppendNil(b), nil
107 }
108 keys := m.MapKeys()
109 if sortKeys != nil && (e.flags&SortedMapKeys) != 0 {
110 sortKeys(keys)
111 }
112 b = AppendMapLen(b, len(keys))
113 for _, k := range keys {
114 v := m.MapIndex(k)
115 if b, err = encodeKey(e, b, (*eface)(unsafe.Pointer(&k)).ptr); err != nil {
116 return b, err
117 }
118 if b, err = encodeValue(e, b, (*eface)(unsafe.Pointer(&v)).ptr); err != nil {
119 return b, err
120 }
121 }
122 return b, nil
123}
124func (e encoder) encodeMapInterfaceInterface(b []byte, p unsafe.Pointer) ([]byte, error) {
125 return AppendMapInterfaceInterface(b, *(*map[any]any)(p), e.flags)
126}

Callers 1

createMapEncodeFuncFunction · 0.80

Calls 3

AppendNilFunction · 0.85
AppendMapLenFunction · 0.85
PointerMethod · 0.80

Tested by

no test coverage detected