MCPcopy Create free account
hub / github.com/bytedance/Fastbot_Android / write_msgpack

Method write_msgpack

native/thirdpart/json/json.hpp:11601–11835  ·  view source on GitHub ↗

! @param[in] j JSON value to serialize */

Source from the content-addressed store, hash-verified

11599 @param[in] j JSON value to serialize
11600 */
11601 void write_msgpack(const BasicJsonType& j)
11602 {
11603 switch (j.type())
11604 {
11605 case value_t::null: // nil
11606 {
11607 oa->write_character(to_char_type(0xC0));
11608 break;
11609 }
11610
11611 case value_t::boolean: // true and false
11612 {
11613 oa->write_character(j.m_value.boolean
11614 ? to_char_type(0xC3)
11615 : to_char_type(0xC2));
11616 break;
11617 }
11618
11619 case value_t::number_integer:
11620 {
11621 if (j.m_value.number_integer >= 0)
11622 {
11623 // MessagePack does not differentiate between positive
11624 // signed integers and unsigned integers. Therefore, we used
11625 // the code from the value_t::number_unsigned case here.
11626 if (j.m_value.number_unsigned < 128)
11627 {
11628 // positive fixnum
11629 write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
11630 }
11631 else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint8_t>::max)())
11632 {
11633 // uint 8
11634 oa->write_character(to_char_type(0xCC));
11635 write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
11636 }
11637 else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint16_t>::max)())
11638 {
11639 // uint 16
11640 oa->write_character(to_char_type(0xCD));
11641 write_number(static_cast<std::uint16_t>(j.m_value.number_integer));
11642 }
11643 else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint32_t>::max)())
11644 {
11645 // uint 32
11646 oa->write_character(to_char_type(0xCE));
11647 write_number(static_cast<std::uint32_t>(j.m_value.number_integer));
11648 }
11649 else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint64_t>::max)())
11650 {
11651 // uint 64
11652 oa->write_character(to_char_type(0xCF));
11653 write_number(static_cast<std::uint64_t>(j.m_value.number_integer));
11654 }
11655 }
11656 else
11657 {
11658 if (j.m_value.number_integer >= -32)

Callers 1

to_msgpackFunction · 0.80

Calls 3

write_characterMethod · 0.45
sizeMethod · 0.45
c_strMethod · 0.45

Tested by

no test coverage detected