MCPcopy Index your code
hub / github.com/vmihailenco/msgpack / decodeStructValue

Function decodeStructValue

decode_map.go:291–325  ·  view source on GitHub ↗
(d *Decoder, v reflect.Value)

Source from the content-addressed store, hash-verified

289}
290
291func decodeStructValue(d *Decoder, v reflect.Value) error {
292 c, err := d.readCode()
293 if err != nil {
294 return err
295 }
296
297 n, err := d.mapLen(c)
298 if err == nil {
299 return d.decodeStruct(v, n)
300 }
301
302 var err2 error
303 n, err2 = d.arrayLen(c)
304 if err2 != nil {
305 return err
306 }
307
308 if n <= 0 {
309 v.Set(reflect.Zero(v.Type()))
310 return nil
311 }
312
313 fields := structs.Fields(v.Type(), d.structTag)
314 if n != len(fields.List) {
315 return errArrayStruct
316 }
317
318 for _, f := range fields.List {
319 if err := f.DecodeValue(d, v); err != nil {
320 return err
321 }
322 }
323
324 return nil
325}
326
327func (d *Decoder) decodeStruct(v reflect.Value, n int) error {
328 if n == -1 {

Callers

nothing calls this directly

Calls 7

readCodeMethod · 0.80
mapLenMethod · 0.80
decodeStructMethod · 0.80
arrayLenMethod · 0.80
SetMethod · 0.80
FieldsMethod · 0.80
DecodeValueMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…