- 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.