(b []byte, p unsafe.Pointer)
| 518 | } |
| 519 | |
| 520 | func (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 | } |
nothing calls this directly
no test coverage detected