MCPcopy Create free account
hub / github.com/OpenFodder/openfodder / write_msgpack

Method write_msgpack

Source/Utils/json.hpp:13097–13413  ·  view source on GitHub ↗

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

Source from the content-addressed store, hash-verified

13095 @param[in] j JSON value to serialize
13096 */
13097 void write_msgpack(const BasicJsonType& j)
13098 {
13099 switch (j.type())
13100 {
13101 case value_t::null: // nil
13102 {
13103 oa->write_character(to_char_type(0xC0));
13104 break;
13105 }
13106
13107 case value_t::boolean: // true and false
13108 {
13109 oa->write_character(j.m_value.boolean
13110 ? to_char_type(0xC3)
13111 : to_char_type(0xC2));
13112 break;
13113 }
13114
13115 case value_t::number_integer:
13116 {
13117 if (j.m_value.number_integer >= 0)
13118 {
13119 // MessagePack does not differentiate between positive
13120 // signed integers and unsigned integers. Therefore, we used
13121 // the code from the value_t::number_unsigned case here.
13122 if (j.m_value.number_unsigned < 128)
13123 {
13124 // positive fixnum
13125 write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
13126 }
13127 else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint8_t>::max)())
13128 {
13129 // uint 8
13130 oa->write_character(to_char_type(0xCC));
13131 write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
13132 }
13133 else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint16_t>::max)())
13134 {
13135 // uint 16
13136 oa->write_character(to_char_type(0xCD));
13137 write_number(static_cast<std::uint16_t>(j.m_value.number_integer));
13138 }
13139 else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint32_t>::max)())
13140 {
13141 // uint 32
13142 oa->write_character(to_char_type(0xCE));
13143 write_number(static_cast<std::uint32_t>(j.m_value.number_integer));
13144 }
13145 else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint64_t>::max)())
13146 {
13147 // uint 64
13148 oa->write_character(to_char_type(0xCF));
13149 write_number(static_cast<std::uint64_t>(j.m_value.number_integer));
13150 }
13151 }
13152 else
13153 {
13154 if (j.m_value.number_integer >= -32)

Callers 1

to_msgpackFunction · 0.80

Calls 6

typeMethod · 0.80
has_subtypeMethod · 0.80
subtypeMethod · 0.80
write_characterMethod · 0.45
sizeMethod · 0.45
write_charactersMethod · 0.45

Tested by

no test coverage detected