! @param[in] j JSON value to serialize @param[in] use_count whether to use '#' prefixes (optimized format) @param[in] use_type whether to use '$' prefixes (optimized format) @param[in] add_prefix whether prefixes need to be used for this value */
| 13419 | @param[in] add_prefix whether prefixes need to be used for this value |
| 13420 | */ |
| 13421 | void write_ubjson(const BasicJsonType& j, const bool use_count, |
| 13422 | const bool use_type, const bool add_prefix = true) |
| 13423 | { |
| 13424 | switch (j.type()) |
| 13425 | { |
| 13426 | case value_t::null: |
| 13427 | { |
| 13428 | if (add_prefix) |
| 13429 | { |
| 13430 | oa->write_character(to_char_type('Z')); |
| 13431 | } |
| 13432 | break; |
| 13433 | } |
| 13434 | |
| 13435 | case value_t::boolean: |
| 13436 | { |
| 13437 | if (add_prefix) |
| 13438 | { |
| 13439 | oa->write_character(j.m_value.boolean |
| 13440 | ? to_char_type('T') |
| 13441 | : to_char_type('F')); |
| 13442 | } |
| 13443 | break; |
| 13444 | } |
| 13445 | |
| 13446 | case value_t::number_integer: |
| 13447 | { |
| 13448 | write_number_with_ubjson_prefix(j.m_value.number_integer, add_prefix); |
| 13449 | break; |
| 13450 | } |
| 13451 | |
| 13452 | case value_t::number_unsigned: |
| 13453 | { |
| 13454 | write_number_with_ubjson_prefix(j.m_value.number_unsigned, add_prefix); |
| 13455 | break; |
| 13456 | } |
| 13457 | |
| 13458 | case value_t::number_float: |
| 13459 | { |
| 13460 | write_number_with_ubjson_prefix(j.m_value.number_float, add_prefix); |
| 13461 | break; |
| 13462 | } |
| 13463 | |
| 13464 | case value_t::string: |
| 13465 | { |
| 13466 | if (add_prefix) |
| 13467 | { |
| 13468 | oa->write_character(to_char_type('S')); |
| 13469 | } |
| 13470 | write_number_with_ubjson_prefix(j.m_value.string->size(), true); |
| 13471 | oa->write_characters( |
| 13472 | reinterpret_cast<const CharType*>(j.m_value.string->c_str()), |
| 13473 | j.m_value.string->size()); |
| 13474 | break; |
| 13475 | } |
| 13476 | |
| 13477 | case value_t::array: |
| 13478 | { |
no test coverage detected