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

Method encodeMapStringString

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

Source from the content-addressed store, hash-verified

518}
519
520func (e encoder) encodeMapStringString(b []byte, p unsafe.Pointer) ([]byte, error) {
521 m := *(*map[string]string)(p)
522 if m == nil {
523 return append(b, "null"...), nil
524 }
525
526 if (e.flags & SortMapKeys) == 0 {
527 // Optimized code path when the program does not need the map keys to be
528 // sorted.
529 b = append(b, '{')
530
531 if len(m) != 0 {
532 i := 0
533
534 for k, v := range m {
535 if i != 0 {
536 b = append(b, ',')
537 }
538
539 // encodeString never returns an error so we ignore it here
540 b, _ = e.encodeString(b, unsafe.Pointer(&k))
541 b = append(b, ':')
542 b, _ = e.encodeString(b, unsafe.Pointer(&v))
543
544 i++
545 }
546 }
547
548 b = append(b, '}')
549 return b, nil
550 }
551
552 s := mapslicePool.Get().(*mapslice)
553 if cap(s.elements) < len(m) {
554 s.elements = make([]element, 0, align(10, uintptr(len(m))))
555 }
556 for key, val := range m {
557 v := val
558 s.elements = append(s.elements, element{key: key, val: &v})
559 }
560 sort.Sort(s)
561
562 b = append(b, '{')
563
564 for i, elem := range s.elements {
565 if i != 0 {
566 b = append(b, ',')
567 }
568
569 // encodeString never returns an error so we ignore it here
570 b, _ = e.encodeString(b, unsafe.Pointer(&elem.key))
571 b = append(b, ':')
572 b, _ = e.encodeString(b, unsafe.Pointer(elem.val.(*string)))
573 }
574
575 for i := range s.elements {
576 s.elements[i] = element{}
577 }

Callers

nothing calls this directly

Calls 2

encodeStringMethod · 0.95
alignFunction · 0.70

Tested by

no test coverage detected