MCPcopy Create free account
hub / github.com/PABannier/bark.cpp / write_msgpack

Method write_msgpack

examples/server/json.hpp:15328–15645  ·  view source on GitHub ↗

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

Source from the content-addressed store, hash-verified

15326 @param[in] j JSON value to serialize
15327 */
15328 void write_msgpack(const BasicJsonType& j)
15329 {
15330 switch (j.type())
15331 {
15332 case value_t::null: // nil
15333 {
15334 oa->write_character(to_char_type(0xC0));
15335 break;
15336 }
15337
15338 case value_t::boolean: // true and false
15339 {
15340 oa->write_character(j.m_value.boolean
15341 ? to_char_type(0xC3)
15342 : to_char_type(0xC2));
15343 break;
15344 }
15345
15346 case value_t::number_integer:
15347 {
15348 if (j.m_value.number_integer >= 0)
15349 {
15350 // MessagePack does not differentiate between positive
15351 // signed integers and unsigned integers. Therefore, we used
15352 // the code from the value_t::number_unsigned case here.
15353 if (j.m_value.number_unsigned < 128)
15354 {
15355 // positive fixnum
15356 write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
15357 }
15358 else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint8_t>::max)())
15359 {
15360 // uint 8
15361 oa->write_character(to_char_type(0xCC));
15362 write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
15363 }
15364 else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint16_t>::max)())
15365 {
15366 // uint 16
15367 oa->write_character(to_char_type(0xCD));
15368 write_number(static_cast<std::uint16_t>(j.m_value.number_integer));
15369 }
15370 else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint32_t>::max)())
15371 {
15372 // uint 32
15373 oa->write_character(to_char_type(0xCE));
15374 write_number(static_cast<std::uint32_t>(j.m_value.number_integer));
15375 }
15376 else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint64_t>::max)())
15377 {
15378 // uint 64
15379 oa->write_character(to_char_type(0xCF));
15380 write_number(static_cast<std::uint64_t>(j.m_value.number_integer));
15381 }
15382 }
15383 else
15384 {
15385 if (j.m_value.number_integer >= -32)

Callers 1

to_msgpackFunction · 0.80

Calls 3

dataMethod · 0.80
write_characterMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected