mirror of
https://github.com/nlohmann/json.git
synced 2026-10-25 23:38:58 +00:00
Merge branches 'develop' and 'feature/optional' of https://github.com/nlohmann/json into feature/optional
This commit is contained in:
1187 files changed
+7567
-6299349
No files matched your search
@@ -990,11 +990,11 @@ inline char* format_buffer(char* buf, int len, int decimal_exponent,
|
||||
// digits[000]
|
||||
// len <= max_exp + 2
|
||||
|
||||
std::memset(buf + k, '0', static_cast<size_t>(n - k));
|
||||
std::memset(buf + k, '0', static_cast<size_t>(n) - static_cast<size_t>(k));
|
||||
// Make it look like a floating-point number (#362, #378)
|
||||
buf[n + 0] = '.';
|
||||
buf[n + 1] = '0';
|
||||
return buf + (n + 2);
|
||||
return buf + (static_cast<size_t>(n) + 2);
|
||||
}
|
||||
|
||||
if (0 < n and n <= max_exp)
|
||||
@@ -1004,9 +1004,9 @@ inline char* format_buffer(char* buf, int len, int decimal_exponent,
|
||||
|
||||
assert(k > n);
|
||||
|
||||
std::memmove(buf + (n + 1), buf + n, static_cast<size_t>(k - n));
|
||||
std::memmove(buf + (static_cast<size_t>(n) + 1), buf + n, static_cast<size_t>(k) - static_cast<size_t>(n));
|
||||
buf[n] = '.';
|
||||
return buf + (k + 1);
|
||||
return buf + (static_cast<size_t>(k) + 1U);
|
||||
}
|
||||
|
||||
if (min_exp < n and n <= 0)
|
||||
@@ -1014,11 +1014,11 @@ inline char* format_buffer(char* buf, int len, int decimal_exponent,
|
||||
// 0.[000]digits
|
||||
// len <= 2 + (-min_exp - 1) + max_digits10
|
||||
|
||||
std::memmove(buf + (2 + -n), buf, static_cast<size_t>(k));
|
||||
std::memmove(buf + (2 + static_cast<size_t>(-n)), buf, static_cast<size_t>(k));
|
||||
buf[0] = '0';
|
||||
buf[1] = '.';
|
||||
std::memset(buf + 2, '0', static_cast<size_t>(-n));
|
||||
return buf + (2 + (-n) + k);
|
||||
return buf + (2U + static_cast<size_t>(-n) + static_cast<size_t>(k));
|
||||
}
|
||||
|
||||
if (k == 1)
|
||||
@@ -1033,9 +1033,9 @@ inline char* format_buffer(char* buf, int len, int decimal_exponent,
|
||||
// d.igitsE+123
|
||||
// len <= max_digits10 + 1 + 5
|
||||
|
||||
std::memmove(buf + 2, buf + 1, static_cast<size_t>(k - 1));
|
||||
std::memmove(buf + 2, buf + 1, static_cast<size_t>(k) - 1);
|
||||
buf[1] = '.';
|
||||
buf += 1 + k;
|
||||
buf += 1 + static_cast<size_t>(k);
|
||||
}
|
||||
|
||||
*buf++ = 'e';
|
||||
|
||||
@@ -67,6 +67,28 @@ struct external_constructor<value_t::string>
|
||||
}
|
||||
};
|
||||
|
||||
template<>
|
||||
struct external_constructor<value_t::binary>
|
||||
{
|
||||
template<typename BasicJsonType>
|
||||
static void construct(BasicJsonType& j, const typename BasicJsonType::binary_t& b)
|
||||
{
|
||||
j.m_type = value_t::binary;
|
||||
typename BasicJsonType::internal_binary_t value{b};
|
||||
j.m_value = value;
|
||||
j.assert_invariant();
|
||||
}
|
||||
|
||||
template<typename BasicJsonType>
|
||||
static void construct(BasicJsonType& j, typename BasicJsonType::binary_t&& b)
|
||||
{
|
||||
j.m_type = value_t::binary;
|
||||
typename BasicJsonType::internal_binary_t value{std::move(b)};
|
||||
j.m_value = value;
|
||||
j.assert_invariant();
|
||||
}
|
||||
};
|
||||
|
||||
template<>
|
||||
struct external_constructor<value_t::number_float>
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user