parent
7eabb6ba36
commit
3c68a796df
10 changed files with 40 additions and 26 deletions
2
Makefile
2
Makefile
|
@ -104,7 +104,7 @@ doctest:
|
||||||
# -Wno-keyword-macro: unit-tests use "#define private public"
|
# -Wno-keyword-macro: unit-tests use "#define private public"
|
||||||
# -Wno-deprecated-declarations: the library deprecated some functions
|
# -Wno-deprecated-declarations: the library deprecated some functions
|
||||||
# -Wno-weak-vtables: exception class is defined inline, but has virtual method
|
# -Wno-weak-vtables: exception class is defined inline, but has virtual method
|
||||||
# -Wno-range-loop-analysis: iterator_wrapper tests "for(const auto i...)"
|
# -Wno-range-loop-analysis: items tests "for(const auto i...)"
|
||||||
# -Wno-float-equal: not all comparisons in the tests can be replaced by Approx
|
# -Wno-float-equal: not all comparisons in the tests can be replaced by Approx
|
||||||
# -Wno-switch-enum -Wno-covered-switch-default: pedantic/contradicting warnings about switches
|
# -Wno-switch-enum -Wno-covered-switch-default: pedantic/contradicting warnings about switches
|
||||||
# -Wno-padded: padding is nothing to warn about
|
# -Wno-padded: padding is nothing to warn about
|
||||||
|
|
|
@ -933,7 +933,7 @@ I deeply appreciate the help of the following people.
|
||||||
- [bogemic](https://github.com/bogemic) fixed some C++17 deprecation warnings.
|
- [bogemic](https://github.com/bogemic) fixed some C++17 deprecation warnings.
|
||||||
- [Eren Okka](https://github.com/erengy) fixed some MSVC warnings.
|
- [Eren Okka](https://github.com/erengy) fixed some MSVC warnings.
|
||||||
- [abolz](https://github.com/abolz) integrated the Grisu2 algorithm for proper floating-point formatting, allowing more roundtrip checks to succeed.
|
- [abolz](https://github.com/abolz) integrated the Grisu2 algorithm for proper floating-point formatting, allowing more roundtrip checks to succeed.
|
||||||
|
- [Vadim Evard](https://github.com/Pipeliner) fixed a Markdown issue in the README.
|
||||||
|
|
||||||
Thanks a lot for helping out! Please [let me know](mailto:mail@nlohmann.me) if I forgot someone.
|
Thanks a lot for helping out! Please [let me know](mailto:mail@nlohmann.me) if I forgot someone.
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ namespace nlohmann
|
||||||
{
|
{
|
||||||
namespace detail
|
namespace detail
|
||||||
{
|
{
|
||||||
/// proxy class for the iterator_wrapper functions
|
/// proxy class for the items() function
|
||||||
template<typename IteratorType> class iteration_proxy
|
template<typename IteratorType> class iteration_proxy
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -351,14 +351,15 @@ class serializer
|
||||||
{
|
{
|
||||||
if (codepoint <= 0xFFFF)
|
if (codepoint <= 0xFFFF)
|
||||||
{
|
{
|
||||||
std::snprintf(string_buffer.data() + bytes, 7, "\\u%04x", codepoint);
|
std::snprintf(string_buffer.data() + bytes, 7, "\\u%04x",
|
||||||
|
static_cast<uint16_t>(codepoint));
|
||||||
bytes += 6;
|
bytes += 6;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
std::snprintf(string_buffer.data() + bytes, 13, "\\u%04x\\u%04x",
|
std::snprintf(string_buffer.data() + bytes, 13, "\\u%04x\\u%04x",
|
||||||
(0xD7C0 + (codepoint >> 10)),
|
static_cast<uint16_t>(0xD7C0 + (codepoint >> 10)),
|
||||||
(0xDC00 + (codepoint & 0x3FF)));
|
static_cast<uint16_t>(0xDC00 + (codepoint & 0x3FF)));
|
||||||
bytes += 12;
|
bytes += 12;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -598,7 +599,7 @@ class serializer
|
||||||
|
|
||||||
codep = (state != UTF8_ACCEPT)
|
codep = (state != UTF8_ACCEPT)
|
||||||
? (byte & 0x3fu) | (codep << 6)
|
? (byte & 0x3fu) | (codep << 6)
|
||||||
: (0xff >> type) & (byte);
|
: static_cast<uint32_t>(0xff >> type) & (byte);
|
||||||
|
|
||||||
state = utf8d[256u + state * 16u + type];
|
state = utf8d[256u + state * 16u + type];
|
||||||
return state;
|
return state;
|
||||||
|
|
|
@ -4480,18 +4480,24 @@ class basic_json
|
||||||
|
|
||||||
@note The name of this function is not yet final and may change in the
|
@note The name of this function is not yet final and may change in the
|
||||||
future.
|
future.
|
||||||
|
|
||||||
|
@deprecated This stream operator is deprecated and will be removed in
|
||||||
|
future 4.0.0 of the library. Please use @ref items() instead;
|
||||||
|
that is, replace `json::iterator_wrapper(j)` with `j.items()`.
|
||||||
*/
|
*/
|
||||||
|
JSON_DEPRECATED
|
||||||
static iteration_proxy<iterator> iterator_wrapper(reference ref) noexcept
|
static iteration_proxy<iterator> iterator_wrapper(reference ref) noexcept
|
||||||
{
|
{
|
||||||
return iteration_proxy<iterator>(ref);
|
return ref.items();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@copydoc iterator_wrapper(reference)
|
@copydoc iterator_wrapper(reference)
|
||||||
*/
|
*/
|
||||||
|
JSON_DEPRECATED
|
||||||
static iteration_proxy<const_iterator> iterator_wrapper(const_reference ref) noexcept
|
static iteration_proxy<const_iterator> iterator_wrapper(const_reference ref) noexcept
|
||||||
{
|
{
|
||||||
return iteration_proxy<const_iterator>(ref);
|
return ref.items();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
@ -6127,8 +6133,8 @@ class basic_json
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@brief serialize to stream
|
@brief serialize to stream
|
||||||
@deprecated This stream operator is deprecated and will be removed in a
|
@deprecated This stream operator is deprecated and will be removed in
|
||||||
future version of the library. Please use
|
future 4.0.0 of the library. Please use
|
||||||
@ref operator<<(std::ostream&, const basic_json&)
|
@ref operator<<(std::ostream&, const basic_json&)
|
||||||
instead; that is, replace calls like `j >> o;` with `o << j;`.
|
instead; that is, replace calls like `j >> o;` with `o << j;`.
|
||||||
@since version 1.0.0; deprecated since version 3.0.0
|
@since version 1.0.0; deprecated since version 3.0.0
|
||||||
|
@ -6313,8 +6319,8 @@ class basic_json
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@brief deserialize from stream
|
@brief deserialize from stream
|
||||||
@deprecated This stream operator is deprecated and will be removed in a
|
@deprecated This stream operator is deprecated and will be removed in
|
||||||
future version of the library. Please use
|
version 4.0.0 of the library. Please use
|
||||||
@ref operator>>(std::istream&, basic_json&)
|
@ref operator>>(std::istream&, basic_json&)
|
||||||
instead; that is, replace calls like `j << i;` with `i >> j;`.
|
instead; that is, replace calls like `j << i;` with `i >> j;`.
|
||||||
@since version 1.0.0; deprecated since version 3.0.0
|
@since version 1.0.0; deprecated since version 3.0.0
|
||||||
|
|
BIN
doc/avatars.png
BIN
doc/avatars.png
Binary file not shown.
Before Width: | Height: | Size: 574 KiB After Width: | Height: | Size: 576 KiB |
29
src/json.hpp
29
src/json.hpp
|
@ -4445,7 +4445,7 @@ namespace nlohmann
|
||||||
{
|
{
|
||||||
namespace detail
|
namespace detail
|
||||||
{
|
{
|
||||||
/// proxy class for the iterator_wrapper functions
|
/// proxy class for the items() function
|
||||||
template<typename IteratorType> class iteration_proxy
|
template<typename IteratorType> class iteration_proxy
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
|
@ -8498,14 +8498,15 @@ class serializer
|
||||||
{
|
{
|
||||||
if (codepoint <= 0xFFFF)
|
if (codepoint <= 0xFFFF)
|
||||||
{
|
{
|
||||||
std::snprintf(string_buffer.data() + bytes, 7, "\\u%04x", codepoint);
|
std::snprintf(string_buffer.data() + bytes, 7, "\\u%04x",
|
||||||
|
static_cast<uint16_t>(codepoint));
|
||||||
bytes += 6;
|
bytes += 6;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
std::snprintf(string_buffer.data() + bytes, 13, "\\u%04x\\u%04x",
|
std::snprintf(string_buffer.data() + bytes, 13, "\\u%04x\\u%04x",
|
||||||
(0xD7C0 + (codepoint >> 10)),
|
static_cast<uint16_t>(0xD7C0 + (codepoint >> 10)),
|
||||||
(0xDC00 + (codepoint & 0x3FF)));
|
static_cast<uint16_t>(0xDC00 + (codepoint & 0x3FF)));
|
||||||
bytes += 12;
|
bytes += 12;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8745,7 +8746,7 @@ class serializer
|
||||||
|
|
||||||
codep = (state != UTF8_ACCEPT)
|
codep = (state != UTF8_ACCEPT)
|
||||||
? (byte & 0x3fu) | (codep << 6)
|
? (byte & 0x3fu) | (codep << 6)
|
||||||
: (0xff >> type) & (byte);
|
: static_cast<uint32_t>(0xff >> type) & (byte);
|
||||||
|
|
||||||
state = utf8d[256u + state * 16u + type];
|
state = utf8d[256u + state * 16u + type];
|
||||||
return state;
|
return state;
|
||||||
|
@ -13308,18 +13309,24 @@ class basic_json
|
||||||
|
|
||||||
@note The name of this function is not yet final and may change in the
|
@note The name of this function is not yet final and may change in the
|
||||||
future.
|
future.
|
||||||
|
|
||||||
|
@deprecated This stream operator is deprecated and will be removed in
|
||||||
|
future 4.0.0 of the library. Please use @ref items() instead;
|
||||||
|
that is, replace `json::iterator_wrapper(j)` with `j.items()`.
|
||||||
*/
|
*/
|
||||||
|
JSON_DEPRECATED
|
||||||
static iteration_proxy<iterator> iterator_wrapper(reference ref) noexcept
|
static iteration_proxy<iterator> iterator_wrapper(reference ref) noexcept
|
||||||
{
|
{
|
||||||
return iteration_proxy<iterator>(ref);
|
return ref.items();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@copydoc iterator_wrapper(reference)
|
@copydoc iterator_wrapper(reference)
|
||||||
*/
|
*/
|
||||||
|
JSON_DEPRECATED
|
||||||
static iteration_proxy<const_iterator> iterator_wrapper(const_reference ref) noexcept
|
static iteration_proxy<const_iterator> iterator_wrapper(const_reference ref) noexcept
|
||||||
{
|
{
|
||||||
return iteration_proxy<const_iterator>(ref);
|
return ref.items();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
@ -14955,8 +14962,8 @@ class basic_json
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@brief serialize to stream
|
@brief serialize to stream
|
||||||
@deprecated This stream operator is deprecated and will be removed in a
|
@deprecated This stream operator is deprecated and will be removed in
|
||||||
future version of the library. Please use
|
future 4.0.0 of the library. Please use
|
||||||
@ref operator<<(std::ostream&, const basic_json&)
|
@ref operator<<(std::ostream&, const basic_json&)
|
||||||
instead; that is, replace calls like `j >> o;` with `o << j;`.
|
instead; that is, replace calls like `j >> o;` with `o << j;`.
|
||||||
@since version 1.0.0; deprecated since version 3.0.0
|
@since version 1.0.0; deprecated since version 3.0.0
|
||||||
|
@ -15141,8 +15148,8 @@ class basic_json
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@brief deserialize from stream
|
@brief deserialize from stream
|
||||||
@deprecated This stream operator is deprecated and will be removed in a
|
@deprecated This stream operator is deprecated and will be removed in
|
||||||
future version of the library. Please use
|
version 4.0.0 of the library. Please use
|
||||||
@ref operator>>(std::istream&, basic_json&)
|
@ref operator>>(std::istream&, basic_json&)
|
||||||
instead; that is, replace calls like `j << i;` with `i >> j;`.
|
instead; that is, replace calls like `j << i;` with `i >> j;`.
|
||||||
@since version 1.0.0; deprecated since version 3.0.0
|
@since version 1.0.0; deprecated since version 3.0.0
|
||||||
|
|
|
@ -25,7 +25,7 @@ SOURCES = src/unit.cpp \
|
||||||
src/unit-element_access1.cpp \
|
src/unit-element_access1.cpp \
|
||||||
src/unit-element_access2.cpp \
|
src/unit-element_access2.cpp \
|
||||||
src/unit-inspection.cpp \
|
src/unit-inspection.cpp \
|
||||||
src/unit-iterator_wrapper.cpp \
|
src/unit-items.cpp \
|
||||||
src/unit-iterators1.cpp \
|
src/unit-iterators1.cpp \
|
||||||
src/unit-iterators2.cpp \
|
src/unit-iterators2.cpp \
|
||||||
src/unit-merge_patch.cpp \
|
src/unit-merge_patch.cpp \
|
||||||
|
|
|
@ -843,7 +843,7 @@ TEST_CASE("regression tests")
|
||||||
{
|
{
|
||||||
json j = json::parse("166020696663385964490");
|
json j = json::parse("166020696663385964490");
|
||||||
CHECK(j.is_number_float());
|
CHECK(j.is_number_float());
|
||||||
CHECK(j.get<json::number_float_t>() == static_cast<json::number_float_t>(166020696663385964490.0));
|
CHECK(j.get<json::number_float_t>() == 166020696663385964490.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("issue #405 - Heap-buffer-overflow (OSS-Fuzz issue 342)")
|
SECTION("issue #405 - Heap-buffer-overflow (OSS-Fuzz issue 342)")
|
||||||
|
|
Loading…
Reference in a new issue