MCPcopy Index your code
hub / github.com/segmentio/encoding / encodeMapStringRawMessage

Method encodeMapStringRawMessage

json/encode.go:441–518  ·  view source on GitHub ↗
(b []byte, p unsafe.Pointer)

Source from the content-addressed store, hash-verified

439}
440
441func (e encoder) encodeMapStringRawMessage(b []byte, p unsafe.Pointer) ([]byte, error) {
442 m := *(*map[string]RawMessage)(p)
443 if m == nil {
444 return append(b, "null"...), nil
445 }
446
447 if (e.flags & SortMapKeys) == 0 {
448 // Optimized code path when the program does not need the map keys to be
449 // sorted.
450 b = append(b, '{')
451
452 if len(m) != 0 {
453 var err error
454 i := 0
455
456 for k, v := range m {
457 if i != 0 {
458 b = append(b, ',')
459 }
460
461 // encodeString doesn't return errors so we ignore it here
462 b, _ = e.encodeString(b, unsafe.Pointer(&k))
463 b = append(b, ':')
464
465 b, err = e.encodeRawMessage(b, unsafe.Pointer(&v))
466 if err != nil {
467 break
468 }
469
470 i++
471 }
472 }
473
474 b = append(b, '}')
475 return b, nil
476 }
477
478 s := mapslicePool.Get().(*mapslice)
479 if cap(s.elements) < len(m) {
480 s.elements = make([]element, 0, align(10, uintptr(len(m))))
481 }
482 for key, raw := range m {
483 s.elements = append(s.elements, element{key: key, raw: raw})
484 }
485 sort.Sort(s)
486
487 start := len(b)
488 var err error
489 b = append(b, '{')
490
491 for i, elem := range s.elements {
492 if i != 0 {
493 b = append(b, ',')
494 }
495
496 b, _ = e.encodeString(b, unsafe.Pointer(&elem.key))
497 b = append(b, ':')
498

Callers

nothing calls this directly

Calls 3

encodeStringMethod · 0.95
encodeRawMessageMethod · 0.95
alignFunction · 0.70

Tested by

no test coverage detected