- msgpack::type::variant behaves as MessagePack format.
e.g.)
12.34 => double
12.0 => uint64_t
-12.34 => double
-12.0 => int64_t
- msgpack::type::variant::as_double() can be used even if interval type is
int64_t and/or uint64_t.
- msgpack::type::variant::as_*() don't return non const reference
internal value.
- fix coding style
To remove boost dependency, `-DMSGPACK_USE_BOOST=OFF` for cmake.
By default, `-DMSGPACK_USE_BOOST` is `ON`.
NOTE: In order to build tests `-DMSGPACK_USE_BOOST=ON` is required.
For C++ compiler, the option `-DMSGPACK_NO_BOOST` is required to remove
boost.
- Enhance CMakeLists.txt files.
- Move to Boost Test from Google Test to support pre-C++11 compilers.
- Add more configurations on CI matrix builds.
- Other minor fixes
On 32-bit unix platforms, 0xffffffffUL is a 32-bit value so the compiler
complains about converting it to a signed value.
/home/runner/work/msgpack-c/msgpack-c/test/msgpack_cpp11.cpp:1085:20: error: constant expression evaluates to 4294967295 which cannot be narrowed to type '__time_t' (aka 'long') [-Wc++11-narrowing]
timespec val1{ 0xffffffffUL, 0 };
^~~~~~~~~~~~
/home/runner/work/msgpack-c/msgpack-c/test/msgpack_cpp11.cpp:1085:20: note: insert an explicit cast to silence this issue
timespec val1{ 0xffffffffUL, 0 };
^~~~~~~~~~~~
static_cast<__time_t>( )
/home/runner/work/msgpack-c/msgpack-c/test/msgpack_cpp11.cpp:1085:20: warning: implicit conversion changes signedness: 'unsigned long' to '__time_t' (aka 'long') [-Wsign-conversion]
timespec val1{ 0xffffffffUL, 0 };
~ ^~~~~~~~~~~~
Since we're trying to test how the maximum 32-bit value that fits in
timespec.tv_sec is handled, directly use the maximum 32-bit value for
the appropriate (un)signed type used for timespec.tv_sec.
We don't just cast to the value, as the compiler suggests, because that
would result in an extremely negative value.
In MSGPACK_CHECKED_CALL, the return value of snprintf is incorrectly
assumed to mean success if it is less than or equal to the buffer size.
The call should only be considered a success if the return value is less
than the buffer size.
This commit adds two unit tests that illustrates the issue and fixes the
issue, making the unit tests pass.
Fixed `msgpack::object` packing visitor and equal comparison visitor.
NOTE:
In the function `visit_ext(const char* v, uint32_t size)`, v contains
type and size means buffer `v` size. See #175.