Merge pull request #2244 from matthewbauer/tag-cbor

Tag binary values in cbor if set
This commit is contained in:
Niels Lohmann 2020-07-17 14:05:48 +02:00 committed by GitHub
commit a10d486e36
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 14 additions and 0 deletions

View file

@ -279,6 +279,12 @@ class binary_writer
case value_t::binary: case value_t::binary:
{ {
if (j.m_value.binary->has_subtype())
{
write_number(static_cast<std::uint8_t>(0xd8));
write_number(j.m_value.binary->subtype());
}
// step 1: write control byte and the binary array size // step 1: write control byte and the binary array size
const auto N = j.m_value.binary->size(); const auto N = j.m_value.binary->size();
if (N <= 0x17) if (N <= 0x17)

View file

@ -12795,6 +12795,12 @@ class binary_writer
case value_t::binary: case value_t::binary:
{ {
if (j.m_value.binary->has_subtype())
{
write_number(static_cast<std::uint8_t>(0xd8));
write_number(j.m_value.binary->subtype());
}
// step 1: write control byte and the binary array size // step 1: write control byte and the binary array size
const auto N = j.m_value.binary->size(); const auto N = j.m_value.binary->size();
if (N <= 0x17) if (N <= 0x17)

View file

@ -2503,6 +2503,8 @@ TEST_CASE("examples from RFC 7049 Appendix A")
std::vector<uint8_t> expected((std::istreambuf_iterator<char>(f_bin)), std::vector<uint8_t> expected((std::istreambuf_iterator<char>(f_bin)),
std::istreambuf_iterator<char>()); std::istreambuf_iterator<char>());
CHECK(j == json::binary(expected)); CHECK(j == json::binary(expected));
CHECK(json::to_cbor(json::binary(std::vector<uint8_t> {}, 0x42)) == std::vector<uint8_t> {0xd8, 0x42, 0x40});
} }
SECTION("arrays") SECTION("arrays")