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

Method encodeMapStringBool

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

Source from the content-addressed store, hash-verified

665}
666
667func (e encoder) encodeMapStringBool(b []byte, p unsafe.Pointer) ([]byte, error) {
668 m := *(*map[string]bool)(p)
669 if m == nil {
670 return append(b, "null"...), nil
671 }
672
673 if (e.flags & SortMapKeys) == 0 {
674 // Optimized code path when the program does not need the map keys to be
675 // sorted.
676 b = append(b, '{')
677
678 if len(m) != 0 {
679 i := 0
680
681 for k, v := range m {
682 if i != 0 {
683 b = append(b, ',')
684 }
685
686 // encodeString never returns an error so we ignore it here
687 b, _ = e.encodeString(b, unsafe.Pointer(&k))
688 if v {
689 b = append(b, ":true"...)
690 } else {
691 b = append(b, ":false"...)
692 }
693
694 i++
695 }
696 }
697
698 b = append(b, '}')
699 return b, nil
700 }
701
702 s := mapslicePool.Get().(*mapslice)
703 if cap(s.elements) < len(m) {
704 s.elements = make([]element, 0, align(10, uintptr(len(m))))
705 }
706 for key, val := range m {
707 s.elements = append(s.elements, element{key: key, val: val})
708 }
709 sort.Sort(s)
710
711 b = append(b, '{')
712
713 for i, elem := range s.elements {
714 if i != 0 {
715 b = append(b, ',')
716 }
717
718 // encodeString never returns an error so we ignore it here
719 b, _ = e.encodeString(b, unsafe.Pointer(&elem.key))
720 if elem.val.(bool) {
721 b = append(b, ":true"...)
722 } else {
723 b = append(b, ":false"...)
724 }

Callers

nothing calls this directly

Calls 2

encodeStringMethod · 0.95
alignFunction · 0.70

Tested by

no test coverage detected