From e54f03f73ba6a2710fad457a299590ade22c3477 Mon Sep 17 00:00:00 2001 From: Matthew Bauer Date: Thu, 2 Jul 2020 17:40:02 -0400 Subject: [PATCH] Tag binary values in cbor if set CBOR has tags, which work similarly to "subtype"s: https://www.iana.org/assignments/cbor-tags/cbor-tags.xhtml Unsure if this makes sense. Note that the subtype must just be one byte wide. --- include/nlohmann/detail/output/binary_writer.hpp | 6 ++++++ single_include/nlohmann/json.hpp | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/include/nlohmann/detail/output/binary_writer.hpp b/include/nlohmann/detail/output/binary_writer.hpp index 3bac0227..580bc2e5 100644 --- a/include/nlohmann/detail/output/binary_writer.hpp +++ b/include/nlohmann/detail/output/binary_writer.hpp @@ -279,6 +279,12 @@ class binary_writer case value_t::binary: { + if (j.m_value.binary->has_subtype()) + { + write_number(static_cast(0xd8)); + write_number(j.m_value.binary->subtype()); + } + // step 1: write control byte and the binary array size const auto N = j.m_value.binary->size(); if (N <= 0x17) diff --git a/single_include/nlohmann/json.hpp b/single_include/nlohmann/json.hpp index 7ab24c84..9269df1a 100644 --- a/single_include/nlohmann/json.hpp +++ b/single_include/nlohmann/json.hpp @@ -12641,6 +12641,12 @@ class binary_writer case value_t::binary: { + if (j.m_value.binary->has_subtype()) + { + write_number(static_cast(0xd8)); + write_number(j.m_value.binary->subtype()); + } + // step 1: write control byte and the binary array size const auto N = j.m_value.binary->size(); if (N <= 0x17)