From 48e7b4c23b089c088c11e51c824d78d0f0949b40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Neboj=C5=A1a=20Cvetkovi=C4=87?= Date: Tue, 7 Jan 2025 21:10:38 +0000 Subject: [PATCH] BJData Fixes (#4588) --- docs/mkdocs/docs/api/basic_json/to_bjdata.md | 5 +++-- include/nlohmann/detail/output/binary_writer.hpp | 8 ++++---- single_include/nlohmann/json.hpp | 8 ++++---- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/docs/mkdocs/docs/api/basic_json/to_bjdata.md b/docs/mkdocs/docs/api/basic_json/to_bjdata.md index a82512d9e..aaa0d03a5 100644 --- a/docs/mkdocs/docs/api/basic_json/to_bjdata.md +++ b/docs/mkdocs/docs/api/basic_json/to_bjdata.md @@ -37,10 +37,11 @@ The exact mapping and its limitations is described on a [dedicated page](../../f `use_type` (in) : whether to add type annotations to container types (must be combined with `#!cpp use_size = true`); optional, +`#!cpp false` by default. `version` (in) -: which version of BJData to use (see [draft 3](../../features/binary_formats/bjdata.md#draft-3-binary-format)); optional, -`#!cpp false` by default. +: which version of BJData to use (see [draft 3](../../features/binary_formats/bjdata.md#draft-3-binary-format)); +optional, `#!cpp bjdata_version_t::draft2` by default. ## Return value diff --git a/include/nlohmann/detail/output/binary_writer.hpp b/include/nlohmann/detail/output/binary_writer.hpp index 71f1ebd17..db7ed3651 100644 --- a/include/nlohmann/detail/output/binary_writer.hpp +++ b/include/nlohmann/detail/output/binary_writer.hpp @@ -748,7 +748,7 @@ class binary_writer const bool use_type, const bool add_prefix = true, const bool use_bjdata = false, const bjdata_version_t bjdata_version = bjdata_version_t::draft2) { - const bool bjdata_draft3 = bjdata_version == bjdata_version_t::draft3; + const bool bjdata_draft3 = use_bjdata && bjdata_version == bjdata_version_t::draft3; switch (j.type()) { @@ -857,11 +857,11 @@ class binary_writer oa->write_character(to_char_type('[')); } - if (use_type && ((use_bjdata && bjdata_draft3) || !j.m_data.m_value.binary->empty())) + if (use_type && (bjdata_draft3 || !j.m_data.m_value.binary->empty())) { JSON_ASSERT(use_count); oa->write_character(to_char_type('$')); - oa->write_character(use_bjdata && bjdata_draft3 ? 'B' : 'U'); + oa->write_character(bjdata_draft3 ? 'B' : 'U'); } if (use_count) @@ -880,7 +880,7 @@ class binary_writer { for (size_t i = 0; i < j.m_data.m_value.binary->size(); ++i) { - oa->write_character(to_char_type((use_bjdata && bjdata_draft3) ? 'B' : 'U')); + oa->write_character(to_char_type(bjdata_draft3 ? 'B' : 'U')); oa->write_character(j.m_data.m_value.binary->data()[i]); } } diff --git a/single_include/nlohmann/json.hpp b/single_include/nlohmann/json.hpp index 118df4a3c..9be8b892e 100644 --- a/single_include/nlohmann/json.hpp +++ b/single_include/nlohmann/json.hpp @@ -16384,7 +16384,7 @@ class binary_writer const bool use_type, const bool add_prefix = true, const bool use_bjdata = false, const bjdata_version_t bjdata_version = bjdata_version_t::draft2) { - const bool bjdata_draft3 = bjdata_version == bjdata_version_t::draft3; + const bool bjdata_draft3 = use_bjdata && bjdata_version == bjdata_version_t::draft3; switch (j.type()) { @@ -16493,11 +16493,11 @@ class binary_writer oa->write_character(to_char_type('[')); } - if (use_type && ((use_bjdata && bjdata_draft3) || !j.m_data.m_value.binary->empty())) + if (use_type && (bjdata_draft3 || !j.m_data.m_value.binary->empty())) { JSON_ASSERT(use_count); oa->write_character(to_char_type('$')); - oa->write_character(use_bjdata && bjdata_draft3 ? 'B' : 'U'); + oa->write_character(bjdata_draft3 ? 'B' : 'U'); } if (use_count) @@ -16516,7 +16516,7 @@ class binary_writer { for (size_t i = 0; i < j.m_data.m_value.binary->size(); ++i) { - oa->write_character(to_char_type((use_bjdata && bjdata_draft3) ? 'B' : 'U')); + oa->write_character(to_char_type(bjdata_draft3 ? 'B' : 'U')); oa->write_character(j.m_data.m_value.binary->data()[i]); } }