MCPcopy Create free account
hub / github.com/Predelnik/DSpellCheck / write_msgpack

Method write_msgpack

deps/json/json.hpp:15366–15683  ·  view source on GitHub ↗

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

Source from the content-addressed store, hash-verified

15364 @param[in] j JSON value to serialize
15365 */
15366 void write_msgpack(const BasicJsonType& j)
15367 {
15368 switch (j.type())
15369 {
15370 case value_t::null: // nil
15371 {
15372 oa->write_character(to_char_type(0xC0));
15373 break;
15374 }
15375
15376 case value_t::boolean: // true and false
15377 {
15378 oa->write_character(j.m_value.boolean
15379 ? to_char_type(0xC3)
15380 : to_char_type(0xC2));
15381 break;
15382 }
15383
15384 case value_t::number_integer:
15385 {
15386 if (j.m_value.number_integer >= 0)
15387 {
15388 // MessagePack does not differentiate between positive
15389 // signed integers and unsigned integers. Therefore, we used
15390 // the code from the value_t::number_unsigned case here.
15391 if (j.m_value.number_unsigned < 128)
15392 {
15393 // positive fixnum
15394 write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
15395 }
15396 else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint8_t>::max)())
15397 {
15398 // uint 8
15399 oa->write_character(to_char_type(0xCC));
15400 write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
15401 }
15402 else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint16_t>::max)())
15403 {
15404 // uint 16
15405 oa->write_character(to_char_type(0xCD));
15406 write_number(static_cast<std::uint16_t>(j.m_value.number_integer));
15407 }
15408 else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint32_t>::max)())
15409 {
15410 // uint 32
15411 oa->write_character(to_char_type(0xCE));
15412 write_number(static_cast<std::uint32_t>(j.m_value.number_integer));
15413 }
15414 else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint64_t>::max)())
15415 {
15416 // uint 64
15417 oa->write_character(to_char_type(0xCF));
15418 write_number(static_cast<std::uint64_t>(j.m_value.number_integer));
15419 }
15420 }
15421 else
15422 {
15423 if (j.m_value.number_integer >= -32)

Callers 1

to_msgpackFunction · 0.80

Calls 5

c_strMethod · 0.80
dataMethod · 0.80
typeMethod · 0.45
write_characterMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected