mirror of
https://github.com/msgpack/msgpack-c.git
synced 2025-10-22 16:02:30 +02:00
Compare commits
45 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
6e7deb8091 | ||
![]() |
66fa561256 | ||
![]() |
243fb27c3c | ||
![]() |
746e983bf3 | ||
![]() |
766afb90ed | ||
![]() |
403567c1c5 | ||
![]() |
f3fe1b801e | ||
![]() |
4fdbc7518f | ||
![]() |
0dbdb3d974 | ||
![]() |
d7d5be414f | ||
![]() |
4d36456799 | ||
![]() |
b1725d4007 | ||
![]() |
102dba8e24 | ||
![]() |
1a372058a6 | ||
![]() |
f8b691f622 | ||
![]() |
7893d4d8c9 | ||
![]() |
9a3cd0c951 | ||
![]() |
46684265d5 | ||
![]() |
9e0d87b725 | ||
![]() |
bbc03b2b0a | ||
![]() |
b4d28c3d9d | ||
![]() |
cc1098998f | ||
![]() |
d9c5978958 | ||
![]() |
d05daa1df6 | ||
![]() |
534466894e | ||
![]() |
d04520044f | ||
![]() |
c0fb6b3b8c | ||
![]() |
19df3314f4 | ||
![]() |
b530b7f21a | ||
![]() |
ed49ea3c95 | ||
![]() |
7918c19f8f | ||
![]() |
0d7caecdb5 | ||
![]() |
f8b0ad1766 | ||
![]() |
7ed7af90b6 | ||
![]() |
4a94f836a7 | ||
![]() |
b36e548db2 | ||
![]() |
e6c276edf3 | ||
![]() |
befc3cdd0c | ||
![]() |
2e2e93ba2e | ||
![]() |
3b2bb56243 | ||
![]() |
9c4562382b | ||
![]() |
08b0c88c21 | ||
![]() |
d105f97ea0 | ||
![]() |
bd0665bed3 | ||
![]() |
8dc865d92d |
56
.github/depends/boost.sh
vendored
Executable file
56
.github/depends/boost.sh
vendored
Executable file
@@ -0,0 +1,56 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
usage()
|
||||||
|
{
|
||||||
|
cat <<EOL
|
||||||
|
-b - 32-bit or 64-bit library, maybe 32, 64 or both
|
||||||
|
-t - the toolset, maybe gcc, clang or both
|
||||||
|
EOL
|
||||||
|
}
|
||||||
|
|
||||||
|
build_boost()
|
||||||
|
{
|
||||||
|
BASE=`pwd`/..
|
||||||
|
./b2 -j4 --toolset=$1 --prefix=${BASE}/usr --libdir="${BASE}/usr/$1/lib$2" --with-chrono --with-context --with-filesystem --with-system --with-timer address-model=$2 install
|
||||||
|
}
|
||||||
|
|
||||||
|
bit="64"
|
||||||
|
toolset="gcc"
|
||||||
|
|
||||||
|
while getopts "b:t:" c; do
|
||||||
|
case "$c" in
|
||||||
|
b)
|
||||||
|
bit="$OPTARG"
|
||||||
|
[ "$bit" != "32" ] && [ "$bit" != "64" ] && [ "$bit" != "both" ] && usage && exit 1
|
||||||
|
;;
|
||||||
|
t)
|
||||||
|
toolset="$OPTARG"
|
||||||
|
[ "$toolset" != "gcc" ] && [ "$toolset" != "clang" ] && [ "$toolset" != "both" ] && usage && exit 1
|
||||||
|
;;
|
||||||
|
?*)
|
||||||
|
echo "invalid arguments." && exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
wget https://dl.bintray.com/boostorg/release/1.71.0/source/boost_1_71_0.tar.bz2
|
||||||
|
tar xf boost_1_71_0.tar.bz2
|
||||||
|
cd boost_1_71_0
|
||||||
|
./bootstrap.sh
|
||||||
|
|
||||||
|
build()
|
||||||
|
{
|
||||||
|
if [ "$bit" = "both" ]; then
|
||||||
|
build_boost $1 32
|
||||||
|
build_boost $1 64
|
||||||
|
else
|
||||||
|
build_boost $1 $bit
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ "$toolset" = "both" ]; then
|
||||||
|
build gcc
|
||||||
|
build clang
|
||||||
|
else
|
||||||
|
build $toolset
|
||||||
|
fi
|
62
.github/workflows/coverage.yml
vendored
Normal file
62
.github/workflows/coverage.yml
vendored
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
name: coverage
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
types: [opened, synchronize]
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
tags:
|
||||||
|
- '*'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
|
||||||
|
codecov:
|
||||||
|
timeout-minutes: 30
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v1
|
||||||
|
- name: install depends
|
||||||
|
run: |
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install g++-multilib lcov
|
||||||
|
- name: Cache boost
|
||||||
|
id: cache-boost
|
||||||
|
uses: actions/cache@v1
|
||||||
|
with:
|
||||||
|
path: usr
|
||||||
|
key: ${{ runner.os }}-boost-20200107
|
||||||
|
- name: Build boost
|
||||||
|
if: steps.cache-boost.outputs.cache-hit != 'true'
|
||||||
|
run: ./.github/depends/boost.sh -b both -t gcc
|
||||||
|
- name: Compile tests
|
||||||
|
run: |
|
||||||
|
# install gtest
|
||||||
|
BASE=`pwd`
|
||||||
|
wget https://github.com/google/googletest/archive/release-1.7.0.zip -O googletest-release-1.7.0.zip
|
||||||
|
unzip -q googletest-release-1.7.0.zip
|
||||||
|
cd googletest-release-1.7.0
|
||||||
|
g++ -m64 src/gtest-all.cc -I. -Iinclude -c -fPIC
|
||||||
|
g++ -m64 src/gtest_main.cc -I. -Iinclude -c -fPIC
|
||||||
|
ar -rv libgtest.a gtest-all.o
|
||||||
|
ar -rv libgtest_main.a gtest_main.o
|
||||||
|
mkdir -p ${BASE}/usr/include
|
||||||
|
cp -r include/gtest ${BASE}/usr/include
|
||||||
|
mkdir -p ${BASE}/usr/lib
|
||||||
|
mv *.a ${BASE}/usr/lib
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
mkdir build && cd build
|
||||||
|
CMAKE_LIBRARY_PATH="${BASE}/build" GTEST_ROOT="${BASE}/usr" CMAKE_PREFIX_PATH="${BASE}/usr/gcc/lib64/cmake" cmake -DMSGPACK_CXX17=ON -DMSGPACK_32BIT=OFF -DMSGPACK_BOOST=ON -DBUILD_SHARED_LIBS=ON -DMSGPACK_CHAR_SIGN=signed -DMSGPACK_USE_X3_PARSE=ON -DMSGPACK_ENABLE_CXX=ON -DMSGPACK_BUILD_EXAMPLES=ON -DMSGPACK_BUILD_TESTS=ON -DCMAKE_BUILD_TYPE=Debug -DMSGPACK_GEN_COVERAGE=ON ..
|
||||||
|
make -j4
|
||||||
|
make test
|
||||||
|
- name: Upload coverage to Codecov
|
||||||
|
working-directory: build
|
||||||
|
run: |
|
||||||
|
# Create lcov report
|
||||||
|
lcov --capture --directory . --output-file coverage.info
|
||||||
|
lcov --remove coverage.info '/usr/*' --output-file coverage.info # filter system-files
|
||||||
|
lcov --list coverage.info # debug info
|
||||||
|
# Uploading report to CodeCov
|
||||||
|
bash <(curl -s https://codecov.io/bash) -f coverage.info || echo "Codecov did not collect coverage reports"
|
304
.github/workflows/gha.yml
vendored
Normal file
304
.github/workflows/gha.yml
vendored
Normal file
@@ -0,0 +1,304 @@
|
|||||||
|
name: CI
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
types: [opened, synchronize]
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
tags:
|
||||||
|
- '*'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
macos:
|
||||||
|
runs-on: macos-latest
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
pattern: [0, 1, 2, 3]
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v1
|
||||||
|
- name: Cache boost
|
||||||
|
id: cache-boost
|
||||||
|
uses: actions/cache@v1
|
||||||
|
with:
|
||||||
|
path: usr
|
||||||
|
key: ${{ runner.os }}-boost-20200107
|
||||||
|
- name: Build boost
|
||||||
|
if: steps.cache-boost.outputs.cache-hit != 'true'
|
||||||
|
run: ./.github/depends/boost.sh -b 64 -t clang
|
||||||
|
- name: build and test
|
||||||
|
env:
|
||||||
|
CC: clang
|
||||||
|
CXX: clang++
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
BASE=`pwd`;
|
||||||
|
|
||||||
|
# matrix config
|
||||||
|
if [ ${{ matrix.pattern }} == 0 ]; then
|
||||||
|
ACTION="ci/build_cmake.sh"
|
||||||
|
export CXX17="ON"
|
||||||
|
export ARCH="64"
|
||||||
|
export BOOST="ON"
|
||||||
|
SHARED="ON"
|
||||||
|
export CHAR_SIGN="unsigned"
|
||||||
|
export API_VERSION="1"
|
||||||
|
fi
|
||||||
|
if [ ${{ matrix.pattern }} == 1 ]; then
|
||||||
|
ACTION="ci/build_cmake.sh"
|
||||||
|
export CXX17="ON"
|
||||||
|
export ARCH="64"
|
||||||
|
export BOOST="ON"
|
||||||
|
export SHARED="ON"
|
||||||
|
export CHAR_SIGN="signed"
|
||||||
|
export API_VERSION="3"
|
||||||
|
fi
|
||||||
|
if [ ${{ matrix.pattern }} == 2 ]; then
|
||||||
|
ACTION="ci/build_cmake.sh"
|
||||||
|
export CXX17="ON"
|
||||||
|
export ARCH="64"
|
||||||
|
export SHARED="ON"
|
||||||
|
export CHAR_SIGN="signed"
|
||||||
|
export API_VERSION="2"
|
||||||
|
fi
|
||||||
|
if [ ${{ matrix.pattern }} == 3 ]; then
|
||||||
|
ACTION="ci/build_cmake.sh"
|
||||||
|
export ARCH="64"
|
||||||
|
export SHARED="ON"
|
||||||
|
export CHAR_SIGN="unsigned"
|
||||||
|
export API_VERSION="2"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# install gtest
|
||||||
|
wget https://github.com/google/googletest/archive/release-1.7.0.zip -O googletest-release-1.7.0.zip
|
||||||
|
unzip -q googletest-release-1.7.0.zip
|
||||||
|
cd googletest-release-1.7.0
|
||||||
|
$CXX -m${ARCH} src/gtest-all.cc -I. -Iinclude -c
|
||||||
|
$CXX -m${ARCH} src/gtest_main.cc -I. -Iinclude -c
|
||||||
|
ar -rv libgtest.a gtest-all.o
|
||||||
|
ar -rv libgtest_main.a gtest_main.o
|
||||||
|
mkdir -p ${BASE}/usr/include
|
||||||
|
cp -r include/gtest ${BASE}/usr/include
|
||||||
|
mkdir -p ${BASE}/usr/lib
|
||||||
|
mv *.a ${BASE}/usr/lib
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
# build and test
|
||||||
|
CMAKE_CXX_COMPILER="${CXX}" CMAKE_C_COMPILER="${CC}" CMAKE_LIBRARY_PATH="${BASE}/usr/lib:${BASE}/build" GTEST_ROOT="${BASE}/usr" CMAKE_PREFIX_PATH="${BASE}/usr/clang/lib${ARCH}/cmake" CFLAGS="-Werror -g" CXXFLAGS="-Werror -g" ${ACTION}
|
||||||
|
cat Files.cmake| grep ".*\.[h|hpp]" | perl -pe 's/ //g' | sort > tmp1 && find include -name "*.h" -o -name "*.hpp" | sort > tmp2 && diff tmp1 tmp2
|
||||||
|
|
||||||
|
linux:
|
||||||
|
runs-on: ubuntu-18.04
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
pattern: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v1
|
||||||
|
- name: install depends
|
||||||
|
run: |
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install g++-multilib clang-8 valgrind
|
||||||
|
- name: Cache boost
|
||||||
|
id: cache-boost
|
||||||
|
uses: actions/cache@v1
|
||||||
|
with:
|
||||||
|
path: usr
|
||||||
|
key: ${{ runner.os }}-boost-20200107
|
||||||
|
- name: Build boost
|
||||||
|
if: steps.cache-boost.outputs.cache-hit != 'true'
|
||||||
|
run: ./.github/depends/boost.sh -b both -t gcc
|
||||||
|
- name: build and test
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
BASE=`pwd`;
|
||||||
|
|
||||||
|
# matrix config
|
||||||
|
if [ ${{ matrix.pattern }} == 0 ]; then
|
||||||
|
export CC=clang
|
||||||
|
export CXX=clang++
|
||||||
|
ACTION="ci/build_cmake.sh"
|
||||||
|
export ARCH="64"
|
||||||
|
export BOOST="ON"
|
||||||
|
export SHARED="ON"
|
||||||
|
export CHAR_SIGN="unsigned"
|
||||||
|
export API_VERSION="2"
|
||||||
|
fi
|
||||||
|
if [ ${{ matrix.pattern }} == 1 ]; then
|
||||||
|
export CC=clang
|
||||||
|
export CXX=clang++
|
||||||
|
ACTION="ci/build_cmake.sh"
|
||||||
|
export ARCH="32"
|
||||||
|
export SHARED="ON"
|
||||||
|
export CHAR_SIGN="signed"
|
||||||
|
export API_VERSION="2"
|
||||||
|
fi
|
||||||
|
if [ ${{ matrix.pattern }} == 2 ]; then
|
||||||
|
export CC=clang
|
||||||
|
export CXX=clang++
|
||||||
|
ACTION="ci/build_cmake.sh"
|
||||||
|
export CXX17="ON"
|
||||||
|
export ARCH="64"
|
||||||
|
export BOOST="ON"
|
||||||
|
export SHARED="ON"
|
||||||
|
export CHAR_SIGN="signed"
|
||||||
|
export API_VERSION="3"
|
||||||
|
export X3_PARSE="ON"
|
||||||
|
fi
|
||||||
|
if [ ${{ matrix.pattern }} == 3 ]; then
|
||||||
|
export CC=clang
|
||||||
|
export CXX=clang++
|
||||||
|
ACTION="ci/build_cmake.sh"
|
||||||
|
export CXX17="ON"
|
||||||
|
export ARCH="32"
|
||||||
|
export SHARED="OFF"
|
||||||
|
export CHAR_SIGN="unsigned"
|
||||||
|
export API_VERSION="2"
|
||||||
|
fi
|
||||||
|
if [ ${{ matrix.pattern }} == 4 ]; then
|
||||||
|
export CC=gcc
|
||||||
|
export CXX=g++
|
||||||
|
ACTION="ci/build_cmake.sh"
|
||||||
|
export CXX17="ON"
|
||||||
|
export ARCH="64"
|
||||||
|
export SHARED="ON"
|
||||||
|
export CHAR_SIGN="signed"
|
||||||
|
export API_VERSION="2"
|
||||||
|
fi
|
||||||
|
if [ ${{ matrix.pattern }} == 5 ]; then
|
||||||
|
export CC=gcc
|
||||||
|
export CXX=g++
|
||||||
|
ACTION="ci/build_cmake.sh"
|
||||||
|
export CXX17="ON"
|
||||||
|
export ARCH="32"
|
||||||
|
export BOOST="ON"
|
||||||
|
export SHARED="ON"
|
||||||
|
export CHAR_SIGN="unsigned"
|
||||||
|
export API_VERSION="3"
|
||||||
|
export X3_PARSE="ON"
|
||||||
|
fi
|
||||||
|
if [ ${{ matrix.pattern }} == 6 ]; then
|
||||||
|
export CC=gcc
|
||||||
|
export CXX=g++
|
||||||
|
ACTION="ci/build_cmake.sh"
|
||||||
|
export ARCH="64"
|
||||||
|
export SHARED="ON"
|
||||||
|
export CHAR_SIGN="unsigned"
|
||||||
|
export API_VERSION="2"
|
||||||
|
fi
|
||||||
|
if [ ${{ matrix.pattern }} == 7 ]; then
|
||||||
|
export CC=gcc
|
||||||
|
export CXX=g++
|
||||||
|
ACTION="ci/build_cmake.sh"
|
||||||
|
export ARCH="32"
|
||||||
|
export BOOST="ON"
|
||||||
|
export SHARED="OFF"
|
||||||
|
export CHAR_SIGN="signed"
|
||||||
|
export API_VERSION="1"
|
||||||
|
fi
|
||||||
|
if [ ${{ matrix.pattern }} == 8 ]; then
|
||||||
|
export CC=gcc
|
||||||
|
export CXX=g++
|
||||||
|
ACTION="ci/build_cmake.sh"
|
||||||
|
export ARCH="32"
|
||||||
|
export BOOST="ON"
|
||||||
|
export SHARED="OFF"
|
||||||
|
export CHAR_SIGN="signed"
|
||||||
|
export API_VERSION="2"
|
||||||
|
fi
|
||||||
|
if [ ${{ matrix.pattern }} == 9 ]; then
|
||||||
|
export CC=clang
|
||||||
|
export CXX=clang++
|
||||||
|
ACTION="ci/build_regression.sh"
|
||||||
|
export ARCH="64"
|
||||||
|
export SAN="UBSAN"
|
||||||
|
export MSGPACK_FUZZ_REGRESSION="ON"
|
||||||
|
export CTEST_OUTPUT_ON_FAILURE=1
|
||||||
|
fi
|
||||||
|
if [ ${{ matrix.pattern }} == 10 ]; then
|
||||||
|
export CC=clang
|
||||||
|
export CXX=clang++
|
||||||
|
ACTION="ci/build_regression.sh"
|
||||||
|
export ARCH="64"
|
||||||
|
export SAN="ASAN"
|
||||||
|
export MSGPACK_FUZZ_REGRESSION="ON"
|
||||||
|
export CTEST_OUTPUT_ON_FAILURE=1
|
||||||
|
fi
|
||||||
|
if [ ${{ matrix.pattern }} == 11 ]; then
|
||||||
|
export CC=gcc
|
||||||
|
export CXX=g++
|
||||||
|
ACTION="ci/build_cmake_embedded.sh"
|
||||||
|
export ARCH="64"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# install gtest
|
||||||
|
wget https://github.com/google/googletest/archive/release-1.7.0.zip -O googletest-release-1.7.0.zip
|
||||||
|
unzip -q googletest-release-1.7.0.zip
|
||||||
|
cd googletest-release-1.7.0
|
||||||
|
$CXX -m${ARCH} src/gtest-all.cc -I. -Iinclude -c -fPIC
|
||||||
|
$CXX -m${ARCH} src/gtest_main.cc -I. -Iinclude -c -fPIC
|
||||||
|
ar -rv libgtest.a gtest-all.o
|
||||||
|
ar -rv libgtest_main.a gtest_main.o
|
||||||
|
mkdir -p ${BASE}/usr/include
|
||||||
|
cp -r include/gtest ${BASE}/usr/include
|
||||||
|
mkdir -p ${BASE}/usr/lib
|
||||||
|
mv *.a ${BASE}/usr/lib
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
# install zlib
|
||||||
|
if [ ${ARCH} == 32 ]; then
|
||||||
|
sudo apt-get install lib32z1-dev
|
||||||
|
fi
|
||||||
|
|
||||||
|
# build and test
|
||||||
|
CMAKE_CXX_COMPILER="${CXX}" CMAKE_C_COMPILER="${CC}" CMAKE_LIBRARY_PATH="${BASE}/usr/lib:${BASE}/build" GTEST_ROOT="${BASE}/usr" CMAKE_PREFIX_PATH="${BASE}/usr/gcc/lib${ARCH}/cmake" CFLAGS="-Werror -g" CXXFLAGS="-Werror -g" MSGPACK_SAN="${SAN}" ${ACTION}
|
||||||
|
cat Files.cmake| grep ".*\.[h|hpp]" | perl -pe 's/ //g' | sort > tmp1 && find include -name "*.h" -o -name "*.hpp" | sort > tmp2 && diff tmp1 tmp2
|
||||||
|
windows:
|
||||||
|
runs-on: windows-2016
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
pattern: [0, 1, 2, 3]
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v1
|
||||||
|
- name: Cache vcpkg
|
||||||
|
id: cache-vcpkg
|
||||||
|
uses: actions/cache@v1.0.3
|
||||||
|
with:
|
||||||
|
path: C:/vcpkg/installed/x64-windows
|
||||||
|
key: ${{ runner.os }}-vcpkg
|
||||||
|
- name: Build dependencies
|
||||||
|
if: steps.cache-vcpkg.outputs.cache-hit != 'true'
|
||||||
|
shell: powershell
|
||||||
|
run: |
|
||||||
|
vcpkg install gtest:x64-windows
|
||||||
|
vcpkg install zlib:x64-windows
|
||||||
|
- name: Build and test
|
||||||
|
shell: powershell
|
||||||
|
run: |
|
||||||
|
if (${{ matrix.pattern }} -eq 0) {
|
||||||
|
$CPP11="-DMSGPACK_CXX11=OFF"
|
||||||
|
$BOOST="-DMSGPACK_BOOST=OFF"
|
||||||
|
}
|
||||||
|
if (${{ matrix.pattern }} -eq 1) {
|
||||||
|
$CPP11="-DMSGPACK_CXX11=OFF"
|
||||||
|
$BOOST="-DMSGPACK_BOOST=ON"
|
||||||
|
}
|
||||||
|
if (${{ matrix.pattern }} -eq 2) {
|
||||||
|
$CPP11="-DMSGPACK_CXX11=ON"
|
||||||
|
$BOOST="-DMSGPACK_BOOST=OFF"
|
||||||
|
}
|
||||||
|
if (${{ matrix.pattern }} -eq 3) {
|
||||||
|
$CPP11="-DMSGPACK_CXX11=ON"
|
||||||
|
$BOOST="-DMSGPACK_BOOST=ON"
|
||||||
|
}
|
||||||
|
|
||||||
|
$CUR=(Get-Location).Path
|
||||||
|
md build
|
||||||
|
cd build
|
||||||
|
cmake -A x64 -DBOOST_ROOT="$env:BOOST_ROOT_1_72_0" -DCMAKE_TOOLCHAIN_FILE="C:/vcpkg/scripts/buildsystems/vcpkg.cmake" $CPP11 $BOOST "-DCMAKE_CXX_FLAGS=/D_VARIADIC_MAX=10 /EHsc /D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING" ..
|
||||||
|
if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) }
|
||||||
|
cmake --build . --config Release
|
||||||
|
$pathbak="$env:PATH"
|
||||||
|
$env:PATH="C:\vcpkg\installed\x64-windows\bin;$CUR\build\Release;$pathbak"
|
||||||
|
ctest -V
|
||||||
|
if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) }
|
||||||
|
$env:PATH=$pathbak
|
258
.travis.yml
258
.travis.yml
@@ -1,258 +0,0 @@
|
|||||||
language: cpp
|
|
||||||
sudo: false
|
|
||||||
dist: trusty
|
|
||||||
|
|
||||||
install:
|
|
||||||
- export BASE=`pwd`
|
|
||||||
- mkdir ${BASE}/usr
|
|
||||||
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then wget --no-check-certificate https://cmake.org/files/v3.7/cmake-3.7.1-Linux-x86_64.sh -O cmake-3.7.1-Linux-x86_64.sh; fi
|
|
||||||
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then chmod a+x cmake-3.7.1-Linux-x86_64.sh; fi
|
|
||||||
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then ./cmake-3.7.1-Linux-x86_64.sh --prefix=${BASE}/usr --skip-license; fi
|
|
||||||
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then export PATH="${BASE}/usr/bin:$PATH"; fi
|
|
||||||
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then export LD_LIBRARY_PATH="${BASE}/usr/lib:$LD_LIBRARY_PATH"; fi
|
|
||||||
- if [ "$CXX" == "g++" ]; then export CXX="g++-7" CC="gcc-7"; fi
|
|
||||||
- if [ "$CXX" == "clang++" ] && [ "$TRAVIS_OS_NAME" == "linux" ]; then export CXX="clang++-5.0" CC="clang-5.0"; fi
|
|
||||||
- if [ "$CXX" == "g++" ] && [ "$TRAVIS_OS_NAME" == "linux" ]; then cd /usr/include/c++/$(g++ -v 2>&1 | grep version | awk '{print $3}')/bits; ln -s ../ext/atomicity.h .; cd ${BASE}/usr; fi
|
|
||||||
#gtest
|
|
||||||
- wget https://github.com/google/googletest/archive/release-1.7.0.zip -O googletest-release-1.7.0.zip
|
|
||||||
- unzip -q googletest-release-1.7.0.zip
|
|
||||||
- cd googletest-release-1.7.0
|
|
||||||
- $CXX -m${ARCH} src/gtest-all.cc -I. -Iinclude -c
|
|
||||||
- $CXX -m${ARCH} src/gtest_main.cc -I. -Iinclude -c
|
|
||||||
- ar -rv libgtest.a gtest-all.o
|
|
||||||
- ar -rv libgtest_main.a gtest_main.o
|
|
||||||
- mkdir -p ${BASE}/usr/include
|
|
||||||
- cp -r include/gtest ${BASE}/usr/include
|
|
||||||
- mkdir -p ${BASE}/usr/lib
|
|
||||||
- mv *.a ${BASE}/usr/lib
|
|
||||||
- cd ..
|
|
||||||
# valgrind
|
|
||||||
- if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$MSGPACK_FUZZ_REGRESSION" != "ON" ]; then wget http://valgrind.org/downloads/valgrind-3.12.0.tar.bz2 && tar xjf valgrind-3.12.0.tar.bz2 && cd valgrind-3.12.0 && ./configure --prefix=${BASE}/usr > /dev/null && make -j3 > /dev/null && make install > /dev/null && cd ..; fi
|
|
||||||
# boost
|
|
||||||
- if [ "$BOOST" == "ON" ] && [ "MSGPACK_FUZZ_REGRESSION" != "ON" ]; then wget http://sourceforge.net/projects/boost/files/boost/1.67.0/boost_1_67_0.zip && unzip -q boost_1_67_0.zip && cd boost_1_67_0 && ./bootstrap.sh && ./b2 -j3 --prefix=${BASE}/usr --with-chrono --with-context --with-system --with-timer address-model=${ARCH} install > /dev/null && cd ..; fi
|
|
||||||
- if [ "$MSGPACK_FUZZ_REGRESSION" == "ON" ]; then wget http://sourceforge.net/projects/boost/files/boost/1.67.0/boost_1_67_0.zip && unzip -q boost_1_67_0.zip && cd boost_1_67_0 && ./bootstrap.sh --with-toolset=clang && ./b2 clean && ./b2 -j$(nproc) --prefix=${BASE}/usr --with-system --with-filesystem address-model=${ARCH} install > /dev/null && cd ..; fi
|
|
||||||
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo ln -s /usr/include/x86_64-linux-gnu/zconf.h /usr/include; fi
|
|
||||||
|
|
||||||
matrix:
|
|
||||||
include:
|
|
||||||
- os: osx
|
|
||||||
compiler: clang
|
|
||||||
env: ACTION="ci/build_cmake.sh" CXX17="ON" ARCH="64" BOOST="ON" SHARED="ON" CHAR_SIGN="unsigned" API_VERSION="1"
|
|
||||||
- os: osx
|
|
||||||
compiler: clang
|
|
||||||
env: ACTION="ci/build_cmake.sh" CXX17="ON" ARCH="64" BOOST="ON" SHARED="ON" CHAR_SIGN="signed" API_VERSION="3"
|
|
||||||
- os: osx
|
|
||||||
compiler: clang
|
|
||||||
env: ACTION="ci/build_cmake.sh" CXX17="ON" ARCH="64" SHARED="ON" CHAR_SIGN="signed" API_VERSION="2"
|
|
||||||
- os: osx
|
|
||||||
compiler: clang
|
|
||||||
env: ACTION="ci/build_cmake.sh" ARCH="64" SHARED="ON" CHAR_SIGN="unsigned" API_VERSION="2"
|
|
||||||
- os: linux
|
|
||||||
compiler: clang
|
|
||||||
env: ACTION="ci/build_cmake.sh" ARCH="64" BOOST="ON" SHARED="ON" CHAR_SIGN="unsigned" API_VERSION="1"
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
sources:
|
|
||||||
- ubuntu-toolchain-r-test
|
|
||||||
- llvm-toolchain-trusty-5.0
|
|
||||||
packages:
|
|
||||||
- g++-multilib
|
|
||||||
- gcc-multilib
|
|
||||||
- gcc-7-multilib
|
|
||||||
- g++-7-multilib
|
|
||||||
- bzip2
|
|
||||||
- clang-5.0
|
|
||||||
- libc6-dbg
|
|
||||||
- os: linux
|
|
||||||
compiler: clang
|
|
||||||
env: ACTION="ci/build_cmake.sh" ARCH="32" SHARED="ON" CHAR_SIGN="signed" API_VERSION="2"
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
sources:
|
|
||||||
- ubuntu-toolchain-r-test
|
|
||||||
- llvm-toolchain-trusty-5.0
|
|
||||||
packages:
|
|
||||||
- g++-multilib
|
|
||||||
- gcc-multilib
|
|
||||||
- gcc-7-multilib
|
|
||||||
- g++-7-multilib
|
|
||||||
- lib32stdc++6-6-dbg
|
|
||||||
- lib32gcc1
|
|
||||||
- libc6-i386
|
|
||||||
- lib32z1-dev
|
|
||||||
- zlib1g-dev
|
|
||||||
- bzip2
|
|
||||||
- clang-5.0
|
|
||||||
- libc6-dbg
|
|
||||||
- os: linux
|
|
||||||
compiler: clang
|
|
||||||
env: ACTION="ci/build_cmake.sh" CXX17="ON" ARCH="64" BOOST="ON" SHARED="ON" CHAR_SIGN="signed" API_VERSION="3" X3_PARSE="ON"
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
sources:
|
|
||||||
- ubuntu-toolchain-r-test
|
|
||||||
- llvm-toolchain-trusty-5.0
|
|
||||||
packages:
|
|
||||||
- g++-multilib
|
|
||||||
- gcc-multilib
|
|
||||||
- gcc-7-multilib
|
|
||||||
- g++-7-multilib
|
|
||||||
- bzip2
|
|
||||||
- clang-5.0
|
|
||||||
- libc6-dbg
|
|
||||||
- os: linux
|
|
||||||
compiler: clang
|
|
||||||
env: ACTION="ci/build_cmake.sh" CXX17="ON" ARCH="32" SHARED="OFF" CHAR_SIGN="unsigned" API_VERSION="2"
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
sources:
|
|
||||||
- ubuntu-toolchain-r-test
|
|
||||||
- llvm-toolchain-trusty-5.0
|
|
||||||
packages:
|
|
||||||
- g++-multilib
|
|
||||||
- gcc-multilib
|
|
||||||
- gcc-7-multilib
|
|
||||||
- g++-7-multilib
|
|
||||||
- lib32stdc++6-6-dbg
|
|
||||||
- lib32gcc1
|
|
||||||
- libc6-i386
|
|
||||||
- lib32z1-dev
|
|
||||||
- zlib1g-dev
|
|
||||||
- bzip2
|
|
||||||
- clang-5.0
|
|
||||||
- libc6-dbg
|
|
||||||
- os: linux
|
|
||||||
compiler: gcc
|
|
||||||
env: ACTION="ci/build_cmake.sh" CXX17="ON" ARCH="64" SHARED="ON" CHAR_SIGN="signed" API_VERSION="2"
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
sources:
|
|
||||||
- ubuntu-toolchain-r-test
|
|
||||||
packages:
|
|
||||||
- g++-multilib
|
|
||||||
- gcc-multilib
|
|
||||||
- gcc-7-multilib
|
|
||||||
- g++-7-multilib
|
|
||||||
- bzip2
|
|
||||||
- libc6-dbg
|
|
||||||
- os: linux
|
|
||||||
compiler: gcc
|
|
||||||
env: ACTION="ci/build_cmake.sh" CXX17="ON" ARCH="32" BOOST="ON" SHARED="ON" CHAR_SIGN="unsigned" API_VERSION="3" X3_PARSE="ON"
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
sources:
|
|
||||||
- ubuntu-toolchain-r-test
|
|
||||||
packages:
|
|
||||||
- g++-multilib
|
|
||||||
- gcc-multilib
|
|
||||||
- gcc-7-multilib
|
|
||||||
- g++-7-multilib
|
|
||||||
- lib32stdc++6-6-dbg
|
|
||||||
- lib32gcc1
|
|
||||||
- libc6-i386
|
|
||||||
- lib32z1-dev
|
|
||||||
- zlib1g-dev
|
|
||||||
- bzip2
|
|
||||||
- libc6-dbg
|
|
||||||
- os: linux
|
|
||||||
compiler: gcc
|
|
||||||
env: ACTION="ci/build_cmake.sh" ARCH="64" SHARED="ON" CHAR_SIGN="unsigned" API_VERSION="2"
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
sources:
|
|
||||||
- ubuntu-toolchain-r-test
|
|
||||||
packages:
|
|
||||||
- g++-multilib
|
|
||||||
- gcc-multilib
|
|
||||||
- gcc-7-multilib
|
|
||||||
- g++-7-multilib
|
|
||||||
- bzip2
|
|
||||||
- libc6-dbg
|
|
||||||
- os: linux
|
|
||||||
compiler: gcc
|
|
||||||
env: ACTION="ci/build_cmake.sh" ARCH="32" BOOST="ON" SHARED="OFF" CHAR_SIGN="signed" API_VERSION="1"
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
sources:
|
|
||||||
- ubuntu-toolchain-r-test
|
|
||||||
packages:
|
|
||||||
- g++-multilib
|
|
||||||
- gcc-multilib
|
|
||||||
- gcc-7-multilib
|
|
||||||
- g++-7-multilib
|
|
||||||
- lib32stdc++6-6-dbg
|
|
||||||
- lib32gcc1
|
|
||||||
- libc6-i386
|
|
||||||
- lib32z1-dev
|
|
||||||
- zlib1g-dev
|
|
||||||
- bzip2
|
|
||||||
- libc6-dbg
|
|
||||||
- os: linux
|
|
||||||
compiler: gcc
|
|
||||||
env: ACTION="ci/build_cmake.sh" ARCH="32" BOOST="ON" SHARED="OFF" CHAR_SIGN="signed" API_VERSION="2"
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
sources:
|
|
||||||
- ubuntu-toolchain-r-test
|
|
||||||
packages:
|
|
||||||
- g++-multilib
|
|
||||||
- gcc-multilib
|
|
||||||
- gcc-7-multilib
|
|
||||||
- g++-7-multilib
|
|
||||||
- lib32stdc++6-6-dbg
|
|
||||||
- lib32gcc1
|
|
||||||
- libc6-i386
|
|
||||||
- lib32z1-dev
|
|
||||||
- zlib1g-dev
|
|
||||||
- bzip2
|
|
||||||
- libc6-dbg
|
|
||||||
- os: linux
|
|
||||||
compiler: clang
|
|
||||||
env: ACTION="ci/build_regression.sh" ARCH="64" SAN="UBSAN" MSGPACK_FUZZ_REGRESSION="ON"
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
sources:
|
|
||||||
- ubuntu-toolchain-r-test
|
|
||||||
- llvm-toolchain-trusty-5.0
|
|
||||||
packages:
|
|
||||||
- bzip2
|
|
||||||
- clang-5.0
|
|
||||||
script:
|
|
||||||
- CMAKE_CXX_COMPILER="${CXX}" CMAKE_C_COMPILER="${CC}" CMAKE_LIBRARY_PATH="${BASE}" GTEST_ROOT="${BASE}/gtest" BOOST_ROOT="${BASE}/boost" CTEST_OUTPUT_ON_FAILURE=1 MSGPACK_SAN="${SAN}" ci/build_regression.sh
|
|
||||||
- os: linux
|
|
||||||
compiler: clang
|
|
||||||
env: ACTION="ci/build_regression.sh" ARCH="64" SAN="ASAN" MSGPACK_FUZZ_REGRESSION="ON"
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
sources:
|
|
||||||
- ubuntu-toolchain-r-test
|
|
||||||
- llvm-toolchain-trusty-5.0
|
|
||||||
packages:
|
|
||||||
- bzip2
|
|
||||||
- clang-5.0
|
|
||||||
script:
|
|
||||||
- CMAKE_CXX_COMPILER="${CXX}" CMAKE_C_COMPILER="${CC}" CMAKE_LIBRARY_PATH="${BASE}" GTEST_ROOT="${BASE}/gtest" BOOST_ROOT="${BASE}/boost" CTEST_OUTPUT_ON_FAILURE=1 MSGPACK_SAN="${SAN}" ci/build_regression.sh
|
|
||||||
- os: linux
|
|
||||||
compiler: gcc
|
|
||||||
env: ACTION="ci/build_cmake_embedded.sh" ARCH="64"
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
sources:
|
|
||||||
- ubuntu-toolchain-r-test
|
|
||||||
packages:
|
|
||||||
- g++-multilib
|
|
||||||
- gcc-multilib
|
|
||||||
- gcc-7-multilib
|
|
||||||
- g++-7-multilib
|
|
||||||
- lib32stdc++6-6-dbg
|
|
||||||
- lib32gcc1
|
|
||||||
- libc6-i386
|
|
||||||
- lib32z1-dev
|
|
||||||
- zlib1g-dev
|
|
||||||
- bzip2
|
|
||||||
- libc6-dbg
|
|
||||||
|
|
||||||
|
|
||||||
script:
|
|
||||||
- CMAKE_CXX_COMPILER="${CXX}" CMAKE_C_COMPILER="${CC}" CMAKE_LIBRARY_PATH="${BASE}/usr/lib:${BASE}/build" GTEST_ROOT="${BASE}/usr" BOOST_ROOT="${BASE}/usr" CFLAGS="-Werror -g" CXXFLAGS="-Werror -g" ${ACTION}
|
|
||||||
- cat Files.cmake| grep ".*\.[h|hpp]" | perl -pe 's/ //g' | sort > tmp1 && find include -name "*.h" -o -name "*.hpp" | sort > tmp2 && diff tmp1 tmp2
|
|
11
CHANGELOG.md
11
CHANGELOG.md
@@ -1,3 +1,14 @@
|
|||||||
|
# 2020-06-05 version 3.3.0
|
||||||
|
* Add json example for C (#870)
|
||||||
|
* Add both header and body packing functions for C (#870)
|
||||||
|
* Set default ref_size and chunk_size to vrefbuffer (#865)
|
||||||
|
* Add examples (#861)
|
||||||
|
* Improve build system (#839, #842)
|
||||||
|
* Improve tests (#829)
|
||||||
|
* Improve documents (#828)
|
||||||
|
* Remove some warnings (#827, #851, #871)
|
||||||
|
* Improve CI environment (#824, #831, #833, #834, #846, #860, 874)
|
||||||
|
|
||||||
# 2019-12-10 version 3.2.1
|
# 2019-12-10 version 3.2.1
|
||||||
* Fix snprintf return value checking (#821)
|
* Fix snprintf return value checking (#821)
|
||||||
* Remove some warnings (#819)
|
* Remove some warnings (#819)
|
||||||
|
131
CMakeLists.txt
131
CMakeLists.txt
@@ -16,6 +16,7 @@ STRING (REGEX MATCH "#define MSGPACK_VERSION_REVISION *([0-9a-zA-Z_]*)" NULL_OUT
|
|||||||
SET (VERSION_REVISION ${CMAKE_MATCH_1})
|
SET (VERSION_REVISION ${CMAKE_MATCH_1})
|
||||||
SET (VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_REVISION})
|
SET (VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_REVISION})
|
||||||
|
|
||||||
|
LIST (APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake/")
|
||||||
SET (prefix ${CMAKE_INSTALL_PREFIX})
|
SET (prefix ${CMAKE_INSTALL_PREFIX})
|
||||||
SET (exec_prefix "\${prefix}")
|
SET (exec_prefix "\${prefix}")
|
||||||
SET (libdir "\${exec_prefix}/lib")
|
SET (libdir "\${exec_prefix}/lib")
|
||||||
@@ -152,40 +153,57 @@ FIND_PACKAGE (ZLIB)
|
|||||||
FIND_PACKAGE (Threads)
|
FIND_PACKAGE (Threads)
|
||||||
IF (GTEST_FOUND AND ZLIB_FOUND AND THREADS_FOUND AND NOT "${MSGPACK_FUZZ_REGRESSION}" STREQUAL "ON")
|
IF (GTEST_FOUND AND ZLIB_FOUND AND THREADS_FOUND AND NOT "${MSGPACK_FUZZ_REGRESSION}" STREQUAL "ON")
|
||||||
OPTION (MSGPACK_BUILD_TESTS "Build msgpack tests." ON)
|
OPTION (MSGPACK_BUILD_TESTS "Build msgpack tests." ON)
|
||||||
ENDIF ()
|
OPTION (MSGPACK_GEN_COVERAGE "Enable running gcov to get a test coverage report." OFF)
|
||||||
|
|
||||||
IF (DEFINED BUILD_SHARED_LIBS)
|
|
||||||
IF (BUILD_SHARED_LIBS)
|
|
||||||
IF (DEFINED MSGPACK_ENABLE_SHARED AND NOT MSGPACK_ENABLE_SHARED)
|
|
||||||
MESSAGE(WARNING "MSGPACK_ENABLE_SHARED is overridden to ON by BUILD_SHARED_LIBS")
|
|
||||||
ENDIF ()
|
|
||||||
SET (MSGPACK_ENABLE_SHARED ON)
|
|
||||||
IF (DEFINED MSGPACK_ENABLE_STATIC AND MSGPACK_ENABLE_STATIC)
|
|
||||||
MESSAGE(WARNING "MSGPACK_ENABLE_STATIC is overridden to OFF by BUILD_SHARED_LIBS")
|
|
||||||
ENDIF ()
|
|
||||||
SET (MSGPACK_ENABLE_STATIC OFF)
|
|
||||||
ELSE ()
|
|
||||||
IF (DEFINED MSGPACK_ENABLE_SHARED AND MSGPACK_ENABLE_SHARED)
|
|
||||||
MESSAGE(WARNING "MSGPACK_ENABLE_SHARED is overridden to OFF by BUILD_SHARED_LIBS")
|
|
||||||
ENDIF ()
|
|
||||||
SET (MSGPACK_ENABLE_SHARED OFF)
|
|
||||||
IF (DEFINED MSGPACK_ENABLE_STATIC AND NOT MSGPACK_ENABLE_STATIC)
|
|
||||||
MESSAGE(WARNING "MSGPACK_ENABLE_STATIC is overridden to ON by BUILD_SHARED_LIBS")
|
|
||||||
ENDIF ()
|
|
||||||
SET (MSGPACK_ENABLE_STATIC ON)
|
|
||||||
ENDIF ()
|
|
||||||
ELSE ()
|
|
||||||
IF (NOT DEFINED MSGPACK_ENABLE_SHARED)
|
|
||||||
SET (MSGPACK_ENABLE_SHARED ON)
|
|
||||||
ENDIF ()
|
|
||||||
IF (NOT DEFINED MSGPACK_ENABLE_STATIC)
|
|
||||||
SET (MSGPACK_ENABLE_STATIC ON)
|
|
||||||
ENDIF ()
|
|
||||||
SET (BUILD_SHARED_LIBS ${MSGPACK_ENABLE_SHARED})
|
|
||||||
ENDIF ()
|
ENDIF ()
|
||||||
|
|
||||||
OPTION (MSGPACK_ENABLE_CXX "Enable C++ interface." ON)
|
OPTION (MSGPACK_ENABLE_CXX "Enable C++ interface." ON)
|
||||||
|
|
||||||
|
OPTION (MSGPACK_CXX_ONLY "Build only C++ libraries (header-only)." OFF)
|
||||||
|
IF (MSGPACK_CXX_ONLY)
|
||||||
|
IF (DEFINED MSGPACK_ENABLE_SHARED AND MSGPACK_ENABLE_SHARED)
|
||||||
|
MESSAGE(WARNING "MSGPACK_ENABLE_SHARED is overridden to OFF by MSGPACK_CXX_ONLY")
|
||||||
|
ENDIF ()
|
||||||
|
SET (MSGPACK_ENABLE_SHARED OFF)
|
||||||
|
IF (DEFINED MSGPACK_ENABLE_STATIC AND MSGPACK_ENABLE_STATIC)
|
||||||
|
MESSAGE(WARNING "MSGPACK_ENABLE_STATIC is overridden to OFF by MSGPACK_CXX_ONLY")
|
||||||
|
ENDIF ()
|
||||||
|
SET (MSGPACK_ENABLE_STATIC OFF)
|
||||||
|
IF (DEFINED MSGPACK_ENABLE_CXX AND NOT MSGPACK_ENABLE_CXX)
|
||||||
|
MESSAGE(WARNING "MSGPACK_ENABLE_CXX is overridden to ON by MSGPACK_CXX_ONLY")
|
||||||
|
ENDIF ()
|
||||||
|
SET (MSGPACK_ENABLE_CXX ON)
|
||||||
|
ELSE ()
|
||||||
|
IF (DEFINED BUILD_SHARED_LIBS)
|
||||||
|
IF (BUILD_SHARED_LIBS)
|
||||||
|
IF (DEFINED MSGPACK_ENABLE_SHARED AND NOT MSGPACK_ENABLE_SHARED)
|
||||||
|
MESSAGE(WARNING "MSGPACK_ENABLE_SHARED is overridden to ON by BUILD_SHARED_LIBS")
|
||||||
|
ENDIF ()
|
||||||
|
SET (MSGPACK_ENABLE_SHARED ON)
|
||||||
|
IF (DEFINED MSGPACK_ENABLE_STATIC AND MSGPACK_ENABLE_STATIC)
|
||||||
|
MESSAGE(WARNING "MSGPACK_ENABLE_STATIC is overridden to OFF by BUILD_SHARED_LIBS")
|
||||||
|
ENDIF ()
|
||||||
|
SET (MSGPACK_ENABLE_STATIC OFF)
|
||||||
|
ELSE ()
|
||||||
|
IF (DEFINED MSGPACK_ENABLE_SHARED AND MSGPACK_ENABLE_SHARED)
|
||||||
|
MESSAGE(WARNING "MSGPACK_ENABLE_SHARED is overridden to OFF by BUILD_SHARED_LIBS")
|
||||||
|
ENDIF ()
|
||||||
|
SET (MSGPACK_ENABLE_SHARED OFF)
|
||||||
|
IF (DEFINED MSGPACK_ENABLE_STATIC AND NOT MSGPACK_ENABLE_STATIC)
|
||||||
|
MESSAGE(WARNING "MSGPACK_ENABLE_STATIC is overridden to ON by BUILD_SHARED_LIBS")
|
||||||
|
ENDIF ()
|
||||||
|
SET (MSGPACK_ENABLE_STATIC ON)
|
||||||
|
ENDIF ()
|
||||||
|
ELSE ()
|
||||||
|
IF (NOT DEFINED MSGPACK_ENABLE_SHARED)
|
||||||
|
SET (MSGPACK_ENABLE_SHARED ON)
|
||||||
|
ENDIF ()
|
||||||
|
IF (NOT DEFINED MSGPACK_ENABLE_STATIC)
|
||||||
|
SET (MSGPACK_ENABLE_STATIC ON)
|
||||||
|
ENDIF ()
|
||||||
|
SET (BUILD_SHARED_LIBS ${MSGPACK_ENABLE_SHARED})
|
||||||
|
ENDIF ()
|
||||||
|
ENDIF ()
|
||||||
|
|
||||||
INCLUDE (CheckCXXSourceCompiles)
|
INCLUDE (CheckCXXSourceCompiles)
|
||||||
CHECK_CXX_SOURCE_COMPILES ("
|
CHECK_CXX_SOURCE_COMPILES ("
|
||||||
#include <bits/atomicity.h>
|
#include <bits/atomicity.h>
|
||||||
@@ -277,6 +295,21 @@ IF ("${MSGPACK_FUZZ_REGRESSION}" STREQUAL "ON" AND "${CMAKE_CXX_COMPILER_ID}" ST
|
|||||||
SET (MSGPACK_BUILD_EXAMPLES OFF)
|
SET (MSGPACK_BUILD_EXAMPLES OFF)
|
||||||
ENDIF ()
|
ENDIF ()
|
||||||
|
|
||||||
|
IF (MSGPACK_GEN_COVERAGE)
|
||||||
|
IF (NOT MSGPACK_BUILD_TESTS)
|
||||||
|
MESSAGE(FATAL_ERROR "Coverage requires -DMSGPACK_BUILD_TESTS=ON")
|
||||||
|
ENDIF ()
|
||||||
|
STRING(TOUPPER "${CMAKE_BUILD_TYPE}" UPPER_CMAKE_BUILD_TYPE)
|
||||||
|
IF (NOT "${UPPER_CMAKE_BUILD_TYPE}" STREQUAL "DEBUG")
|
||||||
|
MESSAGE(FATAL_ERROR "Coverage requires -DCMAKE_BUILD_TYPE=Debug")
|
||||||
|
ENDIF ()
|
||||||
|
|
||||||
|
INCLUDE(CodeCoverage)
|
||||||
|
SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${COVERAGE_FLAGS}")
|
||||||
|
SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COVERAGE_FLAGS}")
|
||||||
|
|
||||||
|
SETUP_TARGET_FOR_COVERAGE(coverage make coverage test)
|
||||||
|
ENDIF ()
|
||||||
|
|
||||||
IF (MSGPACK_BUILD_TESTS)
|
IF (MSGPACK_BUILD_TESTS)
|
||||||
ENABLE_TESTING ()
|
ENABLE_TESTING ()
|
||||||
@@ -313,6 +346,14 @@ IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
|
|||||||
ENDIF ()
|
ENDIF ()
|
||||||
ENDIF ()
|
ENDIF ()
|
||||||
|
|
||||||
|
IF ("${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC")
|
||||||
|
IF (CMAKE_C_FLAGS MATCHES "/W[0-4]")
|
||||||
|
STRING(REGEX REPLACE "/W[0-4]" "/W3 /WX" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
|
||||||
|
ELSE ()
|
||||||
|
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W3 /WX")
|
||||||
|
ENDIF ()
|
||||||
|
ENDIF ()
|
||||||
|
|
||||||
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC90" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC10")
|
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC90" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC10")
|
||||||
SET_SOURCE_FILES_PROPERTIES(${msgpackc_SOURCES} PROPERTIES LANGUAGE CXX)
|
SET_SOURCE_FILES_PROPERTIES(${msgpackc_SOURCES} PROPERTIES LANGUAGE CXX)
|
||||||
ENDIF ()
|
ENDIF ()
|
||||||
@@ -355,7 +396,7 @@ FOREACH (file ${msgpackc_HEADERS})
|
|||||||
GET_FILENAME_COMPONENT (dir ${file} PATH)
|
GET_FILENAME_COMPONENT (dir ${file} PATH)
|
||||||
INSTALL (FILES ${file} DESTINATION ${CMAKE_INSTALL_PREFIX}/${dir})
|
INSTALL (FILES ${file} DESTINATION ${CMAKE_INSTALL_PREFIX}/${dir})
|
||||||
ENDFOREACH ()
|
ENDFOREACH ()
|
||||||
IF (NOT MSVC)
|
IF (NOT MSGPACK_CXX_ONLY AND NOT MSVC)
|
||||||
INSTALL (FILES ${CMAKE_CURRENT_BINARY_DIR}/msgpack.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
|
INSTALL (FILES ${CMAKE_CURRENT_BINARY_DIR}/msgpack.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
|
||||||
ENDIF ()
|
ENDIF ()
|
||||||
|
|
||||||
@@ -429,17 +470,19 @@ CONFIGURE_PACKAGE_CONFIG_FILE (msgpack-config.cmake.in
|
|||||||
INSTALL_DESTINATION "${CMAKE_INSTALL_CMAKEDIR}"
|
INSTALL_DESTINATION "${CMAKE_INSTALL_CMAKEDIR}"
|
||||||
)
|
)
|
||||||
|
|
||||||
INSTALL (EXPORT msgpack-targets
|
IF (NOT MSGPACK_CXX_ONLY)
|
||||||
FILE
|
INSTALL (EXPORT msgpack-targets
|
||||||
msgpack-targets.cmake
|
FILE
|
||||||
DESTINATION
|
msgpack-targets.cmake
|
||||||
"${CMAKE_INSTALL_CMAKEDIR}"
|
DESTINATION
|
||||||
)
|
"${CMAKE_INSTALL_CMAKEDIR}"
|
||||||
|
)
|
||||||
|
|
||||||
INSTALL (
|
INSTALL (
|
||||||
FILES
|
FILES
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/msgpack-config.cmake"
|
"${CMAKE_CURRENT_BINARY_DIR}/msgpack-config.cmake"
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/msgpack-config-version.cmake"
|
"${CMAKE_CURRENT_BINARY_DIR}/msgpack-config-version.cmake"
|
||||||
DESTINATION
|
DESTINATION
|
||||||
"${CMAKE_INSTALL_CMAKEDIR}"
|
"${CMAKE_INSTALL_CMAKEDIR}"
|
||||||
)
|
)
|
||||||
|
ENDIF ()
|
||||||
|
34
Files.cmake
34
Files.cmake
@@ -5,14 +5,11 @@ LIST (APPEND msgpackc_SOURCES
|
|||||||
src/vrefbuffer.c
|
src/vrefbuffer.c
|
||||||
src/zone.c
|
src/zone.c
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# For both C and C++ libraries
|
||||||
LIST (APPEND msgpackc_HEADERS
|
LIST (APPEND msgpackc_HEADERS
|
||||||
include/msgpack.h
|
|
||||||
include/msgpack/fbuffer.h
|
include/msgpack/fbuffer.h
|
||||||
include/msgpack/gcc_atomic.h
|
|
||||||
include/msgpack/object.h
|
include/msgpack/object.h
|
||||||
include/msgpack/pack.h
|
|
||||||
include/msgpack/pack_define.h
|
|
||||||
include/msgpack/pack_template.h
|
|
||||||
include/msgpack/predef.h
|
include/msgpack/predef.h
|
||||||
include/msgpack/predef/architecture.h
|
include/msgpack/predef/architecture.h
|
||||||
include/msgpack/predef/architecture/alpha.h
|
include/msgpack/predef/architecture/alpha.h
|
||||||
@@ -152,20 +149,33 @@ LIST (APPEND msgpackc_HEADERS
|
|||||||
include/msgpack/predef/platform/windows_uwp.h
|
include/msgpack/predef/platform/windows_uwp.h
|
||||||
include/msgpack/predef/version.h
|
include/msgpack/predef/version.h
|
||||||
include/msgpack/predef/version_number.h
|
include/msgpack/predef/version_number.h
|
||||||
include/msgpack/sbuffer.h
|
|
||||||
include/msgpack/sysdep.h
|
include/msgpack/sysdep.h
|
||||||
include/msgpack/timestamp.h
|
|
||||||
include/msgpack/unpack.h
|
|
||||||
include/msgpack/unpack_define.h
|
include/msgpack/unpack_define.h
|
||||||
include/msgpack/unpack_template.h
|
|
||||||
include/msgpack/util.h
|
|
||||||
include/msgpack/version.h
|
|
||||||
include/msgpack/version_master.h
|
include/msgpack/version_master.h
|
||||||
include/msgpack/vrefbuffer.h
|
|
||||||
include/msgpack/zbuffer.h
|
include/msgpack/zbuffer.h
|
||||||
include/msgpack/zone.h
|
include/msgpack/zone.h
|
||||||
)
|
)
|
||||||
|
|
||||||
|
IF (NOT MSGPACK_CXX_ONLY)
|
||||||
|
# Only for C library
|
||||||
|
LIST (APPEND msgpackc_HEADERS
|
||||||
|
include/msgpack.h
|
||||||
|
include/msgpack/gcc_atomic.h
|
||||||
|
include/msgpack/pack.h
|
||||||
|
include/msgpack/pack_define.h
|
||||||
|
include/msgpack/pack_template.h
|
||||||
|
include/msgpack/sbuffer.h
|
||||||
|
include/msgpack/timestamp.h
|
||||||
|
include/msgpack/unpack.h
|
||||||
|
include/msgpack/unpack_template.h
|
||||||
|
include/msgpack/util.h
|
||||||
|
include/msgpack/version.h
|
||||||
|
include/msgpack/vrefbuffer.h
|
||||||
|
)
|
||||||
|
ENDIF ()
|
||||||
|
|
||||||
IF (MSGPACK_ENABLE_CXX)
|
IF (MSGPACK_ENABLE_CXX)
|
||||||
|
# Only for C++ library
|
||||||
LIST (APPEND msgpackc_HEADERS
|
LIST (APPEND msgpackc_HEADERS
|
||||||
include/msgpack.hpp
|
include/msgpack.hpp
|
||||||
include/msgpack/adaptor/adaptor_base.hpp
|
include/msgpack/adaptor/adaptor_base.hpp
|
||||||
|
@@ -6,10 +6,11 @@ Currently, RPC implementation is not available.
|
|||||||
|
|
||||||
# Install
|
# Install
|
||||||
|
|
||||||
|
## Install with package manager
|
||||||
|
|
||||||
## Mac OS X with MacPorts
|
### MacOS with MacPorts
|
||||||
|
|
||||||
On Mac OS X, you can install MessagePack for C using MacPorts.
|
On MacOS, you can install MessagePack for C using MacPorts.
|
||||||
|
|
||||||
```
|
```
|
||||||
$ sudo port install msgpack
|
$ sudo port install msgpack
|
||||||
@@ -23,48 +24,44 @@ You can also install via Homebrew.
|
|||||||
$ brew install msgpack
|
$ brew install msgpack
|
||||||
```
|
```
|
||||||
|
|
||||||
## FreeBSD with Ports Collection
|
### FreeBSD with Ports Collection
|
||||||
|
|
||||||
On FreeBSD, you can use Ports Collection. Install [net/msgpack|http://www.freebsd.org/cgi/cvsweb.cgi/ports/devel/msgpack/] package.
|
On FreeBSD, you can use Ports Collection. Install [net/msgpack](http://www.freebsd.org/cgi/cvsweb.cgi/ports/devel/msgpack/) package.
|
||||||
|
|
||||||
## Gentoo Linux with Portage
|
### Gentoo Linux with Portage
|
||||||
|
|
||||||
On Gentoo Linux, you can use emerge. Install [dev-libs/msgpack|http://gentoo-portage.com/dev-libs/msgpack] package.
|
On Gentoo Linux, you can use emerge. Install [dev-libs/msgpack](http://gentoo-portage.com/dev-libs/msgpack) package.
|
||||||
|
|
||||||
## Other UNIX-like platform with ./configure
|
### Windows with vcpkg
|
||||||
|
|
||||||
On the other UNIX-like platforms, download source package from [Releases|http://msgpack.org/releases/cpp/] and run `./configure && make && make install`.
|
There are several package managers available, and vcpkg is typical.
|
||||||
|
|
||||||
```
|
```
|
||||||
$ wget http://msgpack.org/releases/cpp/msgpack-1.3.0.tar.gz
|
$ vcpkg install msgpack:x64-windows
|
||||||
|
```
|
||||||
|
## Install with source code
|
||||||
|
|
||||||
|
### Build with cmake
|
||||||
|
|
||||||
|
You need to install cmake (2.8.12 or higher) first.
|
||||||
|
|
||||||
|
```
|
||||||
|
$ git clone https://github.com/msgpack/msgpack-c.git
|
||||||
|
$ cd msgpack-c
|
||||||
|
$ mkdir build
|
||||||
|
$ cd build
|
||||||
|
$ cmake ..
|
||||||
|
$ cmake --build .
|
||||||
|
$ cmake --build . --target install
|
||||||
|
```
|
||||||
|
### Build with autotools
|
||||||
|
|
||||||
|
In versions 1.4.2 and below, you can use `autotools` to build on UNIX-like platforms.
|
||||||
|
```
|
||||||
|
$ wget https://github.com/msgpack/msgpack-c/archive/cpp-1.3.0.tar.gz
|
||||||
$ tar zxvf msgpack-1.3.0.tar.gz
|
$ tar zxvf msgpack-1.3.0.tar.gz
|
||||||
$ cd msgpack-1.3.0
|
$ cd msgpack-1.3.0
|
||||||
$ ./configure
|
$ ./bootstrap # If the 'configure' script already exists, you can omit this step.
|
||||||
$ make
|
|
||||||
$ sudo make install
|
|
||||||
```
|
|
||||||
|
|
||||||
## Windows
|
|
||||||
|
|
||||||
On Windows, download source package from [here|https://sourceforge.net/projects/msgpack/files/] and extract it.
|
|
||||||
Then open `msgpack_vc8.vcproj` file and build it using batch build. It builds libraries on `lib/` folder and header files on `include/` folder.
|
|
||||||
|
|
||||||
You can build using command line as follows:
|
|
||||||
|
|
||||||
```
|
|
||||||
> vcbuild msgpack_vc2008.vcproj
|
|
||||||
> dir lib % DLL files are here
|
|
||||||
> dir include % header files are here
|
|
||||||
```
|
|
||||||
|
|
||||||
## Install from git repository
|
|
||||||
|
|
||||||
You need to install gcc (4.1.0 or higher), autotools.
|
|
||||||
|
|
||||||
```
|
|
||||||
$ git clone git@github.com:msgpack/msgpack.git
|
|
||||||
$ cd msgpack/cpp
|
|
||||||
$ ./bootstrap
|
|
||||||
$ ./configure
|
$ ./configure
|
||||||
$ make
|
$ make
|
||||||
$ sudo make install
|
$ sudo make install
|
||||||
|
@@ -1,7 +1,8 @@
|
|||||||
`msgpack` for C/C++
|
`msgpack` for C/C++
|
||||||
===================
|
===================
|
||||||
|
|
||||||
Version 3.2.1 [](https://travis-ci.org/msgpack/msgpack-c) [](https://ci.appveyor.com/project/redboltz/msgpack-c/branch/master)
|
Version 3.3.0 [](https://travis-ci.org/msgpack/msgpack-c) [](https://ci.appveyor.com/project/redboltz/msgpack-c/branch/master)
|
||||||
|
[](https://codecov.io/gh/msgpack/msgpack-c)
|
||||||
|
|
||||||
It's like JSON but smaller and faster.
|
It's like JSON but smaller and faster.
|
||||||
|
|
||||||
@@ -149,7 +150,7 @@ execute the following commands:
|
|||||||
|
|
||||||
`MSGPACK_CXX[11|17]` flags are not affected to installing files. Just switching test cases. All files are installed in every settings.
|
`MSGPACK_CXX[11|17]` flags are not affected to installing files. Just switching test cases. All files are installed in every settings.
|
||||||
|
|
||||||
When you use the C part of `msgpack-c`, you need to build and link the library. By default, both static/shared libraries are built. If you want to build only static library, set `BUILD_SHARED_LIBS=OFF` to cmake. If you want to build only shared library, set `BUILD_SHARED_L
|
When you use the C part of `msgpack-c`, you need to build and link the library. By default, both static/shared libraries are built. If you want to build only static library, set `BUILD_SHARED_LIBS=OFF` to cmake. If you want to build only shared library, set `BUILD_SHARED_LIBS=ON`.
|
||||||
|
|
||||||
#### GUI on Windows
|
#### GUI on Windows
|
||||||
|
|
||||||
|
@@ -1,4 +1,8 @@
|
|||||||
version: 3.2.1.{build}
|
version: 3.3.0.{build}
|
||||||
|
|
||||||
|
branches:
|
||||||
|
only:
|
||||||
|
- master
|
||||||
|
|
||||||
image:
|
image:
|
||||||
- Visual Studio 2015
|
- Visual Studio 2015
|
||||||
@@ -51,7 +55,7 @@ build_script:
|
|||||||
- md build
|
- md build
|
||||||
- cd build
|
- cd build
|
||||||
- cmake -G %msvc% %cpp11% %boost% %x3_parse% -DGTEST_LIBRARY=%APPVEYOR_BUILD_FOLDER%\googletest-release-1.7.0\build\Release\gtest.lib -DGTEST_MAIN_LIBRARY=%APPVEYOR_BUILD_FOLDER%\googletest-release-1.7.0\build\Release\gtest_main.lib -DGTEST_INCLUDE_DIR=%APPVEYOR_BUILD_FOLDER%\googletest-release-1.7.0\include -DZLIB_LIBRARY=%APPVEYOR_BUILD_FOLDER%\zlib-1.2.11\build\Release\zlib.lib -DZLIB_INCLUDE_DIR=%APPVEYOR_BUILD_FOLDER%\zlib-1.2.11 -DCMAKE_CXX_FLAGS='"/D_VARIADIC_MAX=10 /EHsc"' ..
|
- cmake -G %msvc% %cpp11% %boost% %x3_parse% -DGTEST_LIBRARY=%APPVEYOR_BUILD_FOLDER%\googletest-release-1.7.0\build\Release\gtest.lib -DGTEST_MAIN_LIBRARY=%APPVEYOR_BUILD_FOLDER%\googletest-release-1.7.0\build\Release\gtest_main.lib -DGTEST_INCLUDE_DIR=%APPVEYOR_BUILD_FOLDER%\googletest-release-1.7.0\include -DZLIB_LIBRARY=%APPVEYOR_BUILD_FOLDER%\zlib-1.2.11\build\Release\zlib.lib -DZLIB_INCLUDE_DIR=%APPVEYOR_BUILD_FOLDER%\zlib-1.2.11 -DCMAKE_CXX_FLAGS='"/D_VARIADIC_MAX=10 /EHsc"' ..
|
||||||
- cmake --build . --config Release
|
- cmake --build . --config Release -v
|
||||||
|
|
||||||
test_script:
|
test_script:
|
||||||
- set PATH=%PATH%;%APPVEYOR_BUILD_FOLDER%\googletest-release-1.7.0\build\Release;%APPVEYOR_BUILD_FOLDER%\zlib-1.2.11\build\Release;%APPVEYOR_BUILD_FOLDER%\build\release
|
- set PATH=%PATH%;%APPVEYOR_BUILD_FOLDER%\googletest-release-1.7.0\build\Release;%APPVEYOR_BUILD_FOLDER%\zlib-1.2.11\build\Release;%APPVEYOR_BUILD_FOLDER%\build\release
|
||||||
|
@@ -19,11 +19,13 @@ fi
|
|||||||
if [ "${ARCH}" == "32" ]
|
if [ "${ARCH}" == "32" ]
|
||||||
then
|
then
|
||||||
export BIT32="ON"
|
export BIT32="ON"
|
||||||
|
export ARCH_FLAG="-m32"
|
||||||
else
|
else
|
||||||
export BIT32="OFF"
|
export BIT32="OFF"
|
||||||
|
export ARCH_FLAG="-m64"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cmake -DMSGPACK_CXX11=${CXX11} -DMSGPACK_CXX17=${CXX17} -DMSGPACK_32BIT=${BIT32} -DMSGPACK_BOOST=${BOOST} -DBUILD_SHARED_LIBS=${SHARED} -DMSGPACK_CHAR_SIGN=${CHAR_SIGN} -DMSGPACK_DEFAULT_API_VERSION=${API_VERSION} -DMSGPACK_USE_X3_PARSE=${X3_PARSE} ..
|
cmake -DMSGPACK_CXX11=${CXX11} -DMSGPACK_CXX17=${CXX17} -DMSGPACK_32BIT=${BIT32} -DMSGPACK_BOOST=${BOOST} -DBUILD_SHARED_LIBS=${SHARED} -DMSGPACK_CHAR_SIGN=${CHAR_SIGN} -DMSGPACK_DEFAULT_API_VERSION=${API_VERSION} -DMSGPACK_USE_X3_PARSE=${X3_PARSE} -DCMAKE_CXX_FLAGS=${ARCH_FLAG} ..
|
||||||
|
|
||||||
ret=$?
|
ret=$?
|
||||||
if [ $ret -ne 0 ]
|
if [ $ret -ne 0 ]
|
||||||
|
55
cmake/CodeCoverage.cmake
Normal file
55
cmake/CodeCoverage.cmake
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
# Check prereqs
|
||||||
|
FIND_PROGRAM(GCOV_PATH gcov)
|
||||||
|
FIND_PROGRAM(LCOV_PATH lcov)
|
||||||
|
FIND_PROGRAM(GENHTML_PATH genhtml)
|
||||||
|
|
||||||
|
IF(NOT GCOV_PATH)
|
||||||
|
MESSAGE(FATAL_ERROR "gcov not found! Aborting...")
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
|
IF(NOT CMAKE_COMPILER_IS_GNUCC)
|
||||||
|
# Clang version 3.0.0 and greater now supports gcov as well.
|
||||||
|
MESSAGE(STATUS "Compiler is not GNU gcc! Clang Version 3.0.0 and greater supports gcov as well, but older versions don't.")
|
||||||
|
IF(NOT "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang" AND NOT "${CMAKE_C_COMPILER_ID}" STREQUAL "AppleClang")
|
||||||
|
MESSAGE(FATAL_ERROR "Compiler is not GNU gcc! Aborting...")
|
||||||
|
ENDIF()
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
|
SET(COVERAGE_FLAGS "-g -O0 --coverage")
|
||||||
|
|
||||||
|
FUNCTION(SETUP_TARGET_FOR_COVERAGE _targetname _testrunner _outputname)
|
||||||
|
|
||||||
|
IF(NOT LCOV_PATH)
|
||||||
|
MESSAGE(FATAL_ERROR "lcov not found! Aborting...")
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
|
IF(NOT GENHTML_PATH)
|
||||||
|
MESSAGE(FATAL_ERROR "genhtml not found! Aborting...")
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
|
# Setup target
|
||||||
|
ADD_CUSTOM_TARGET(${_targetname}
|
||||||
|
|
||||||
|
# Cleanup lcov
|
||||||
|
${LCOV_PATH} --directory . --zerocounters
|
||||||
|
|
||||||
|
# Run tests
|
||||||
|
COMMAND ${_testrunner} ${ARGV3}
|
||||||
|
|
||||||
|
# Capturing lcov counters and generating report
|
||||||
|
COMMAND ${LCOV_PATH} --directory . --capture --output-file ${_outputname}.info --base-directory ${CMAKE_SOURCE_DIR} --no-external --quiet
|
||||||
|
COMMAND ${LCOV_PATH} --remove ${_outputname}.info '*/test/*' '*/fuzz/*' --output-file ${_outputname}.info.cleaned --quiet
|
||||||
|
COMMAND ${GENHTML_PATH} -o ${_outputname} ${_outputname}.info.cleaned --prefix ${CMAKE_SOURCE_DIR}
|
||||||
|
# COMMAND ${CMAKE_COMMAND} -E remove ${_outputname}.info ${_outputname}.info.cleaned
|
||||||
|
|
||||||
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||||
|
COMMENT "Resetting code coverage counters to zero.\nProcessing code coverage counters and generating report."
|
||||||
|
)
|
||||||
|
|
||||||
|
# Show info where to find the report
|
||||||
|
ADD_CUSTOM_COMMAND(TARGET ${_targetname} POST_BUILD
|
||||||
|
COMMAND ;
|
||||||
|
COMMENT "Open ./${_outputname}/index.html in your browser to view the coverage report."
|
||||||
|
)
|
||||||
|
|
||||||
|
ENDFUNCTION()
|
36
codecov.yml
Normal file
36
codecov.yml
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
codecov:
|
||||||
|
notify:
|
||||||
|
require_ci_to_pass: yes
|
||||||
|
|
||||||
|
coverage:
|
||||||
|
precision: 2
|
||||||
|
round: down
|
||||||
|
range: "70...100"
|
||||||
|
|
||||||
|
status:
|
||||||
|
project: yes
|
||||||
|
patch: yes
|
||||||
|
changes: no
|
||||||
|
|
||||||
|
parsers:
|
||||||
|
gcov:
|
||||||
|
branch_detection:
|
||||||
|
conditional: yes
|
||||||
|
loop: yes
|
||||||
|
method: no
|
||||||
|
macro: no
|
||||||
|
|
||||||
|
comment:
|
||||||
|
layout: "header, diff"
|
||||||
|
behavior: default
|
||||||
|
require_changes: no
|
||||||
|
|
||||||
|
ignore:
|
||||||
|
- "test"
|
||||||
|
- "fuzz"
|
||||||
|
- "erb"
|
||||||
|
- "ci"
|
||||||
|
- "cmake"
|
||||||
|
- "examle"
|
||||||
|
- "external"
|
||||||
|
- "usr"
|
@@ -1,5 +1,9 @@
|
|||||||
ADD_SUBDIRECTORY (c)
|
IF (NOT MSGPACK_CXX_ONLY)
|
||||||
ADD_SUBDIRECTORY (cpp03)
|
ADD_SUBDIRECTORY (c)
|
||||||
ADD_SUBDIRECTORY (cpp11)
|
ENDIF ()
|
||||||
ADD_SUBDIRECTORY (boost)
|
IF (MSGPACK_ENABLE_CXX)
|
||||||
ADD_SUBDIRECTORY (x3)
|
ADD_SUBDIRECTORY (cpp03)
|
||||||
|
ADD_SUBDIRECTORY (cpp11)
|
||||||
|
ADD_SUBDIRECTORY (boost)
|
||||||
|
ADD_SUBDIRECTORY (x3)
|
||||||
|
ENDIF ()
|
||||||
|
@@ -27,7 +27,7 @@ FOREACH (source_file ${exec_PROGRAMS})
|
|||||||
)
|
)
|
||||||
TARGET_INCLUDE_DIRECTORIES (${source_file_we}
|
TARGET_INCLUDE_DIRECTORIES (${source_file_we}
|
||||||
PRIVATE
|
PRIVATE
|
||||||
$<TARGET_PROPERTY:msgpackc,INTERFACE_INCLUDE_DIRECTORIES>
|
$<TARGET_PROPERTY:msgpackc-cxx,INTERFACE_INCLUDE_DIRECTORIES>
|
||||||
)
|
)
|
||||||
TARGET_LINK_LIBRARIES (${source_file_we}
|
TARGET_LINK_LIBRARIES (${source_file_we}
|
||||||
${Boost_SYSTEM_LIBRARY}
|
${Boost_SYSTEM_LIBRARY}
|
||||||
|
@@ -1,10 +1,16 @@
|
|||||||
|
FIND_PACKAGE (cJSON)
|
||||||
|
|
||||||
LIST (APPEND exec_PROGRAMS
|
LIST (APPEND exec_PROGRAMS
|
||||||
|
boundary.c
|
||||||
lib_buffer_unpack.c
|
lib_buffer_unpack.c
|
||||||
simple_c.c
|
simple_c.c
|
||||||
speed_test_uint32_array.c
|
speed_test_uint32_array.c
|
||||||
speed_test_uint64_array.c
|
speed_test_uint64_array.c
|
||||||
user_buffer_unpack.c
|
user_buffer_unpack.c
|
||||||
)
|
)
|
||||||
|
IF (cJSON_FOUND)
|
||||||
|
LIST (APPEND exec_PROGRAMS jsonconv.c)
|
||||||
|
ENDIF ()
|
||||||
|
|
||||||
FOREACH (source_file ${exec_PROGRAMS})
|
FOREACH (source_file ${exec_PROGRAMS})
|
||||||
GET_FILENAME_COMPONENT (source_file_we ${source_file} NAME_WE)
|
GET_FILENAME_COMPONENT (source_file_we ${source_file} NAME_WE)
|
||||||
@@ -15,19 +21,24 @@ FOREACH (source_file ${exec_PROGRAMS})
|
|||||||
TARGET_LINK_LIBRARIES (${source_file_we}
|
TARGET_LINK_LIBRARIES (${source_file_we}
|
||||||
msgpackc
|
msgpackc
|
||||||
)
|
)
|
||||||
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
IF ("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_C_COMPILER_ID}" STREQUAL "GNU")
|
||||||
SET_PROPERTY (TARGET ${source_file_we} APPEND_STRING PROPERTY COMPILE_FLAGS " -Wall -Wextra")
|
SET_PROPERTY (TARGET ${source_file_we} APPEND_STRING PROPERTY COMPILE_FLAGS " -Wall -Wextra")
|
||||||
ENDIF ()
|
ENDIF ()
|
||||||
|
|
||||||
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
|
IF ("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang")
|
||||||
SET_PROPERTY (TARGET ${source_file_we} APPEND_STRING PROPERTY COMPILE_FLAGS " -Wno-mismatched-tags")
|
SET_PROPERTY (TARGET ${source_file_we} APPEND_STRING PROPERTY COMPILE_FLAGS " -Wno-mismatched-tags")
|
||||||
ENDIF ()
|
ENDIF ()
|
||||||
|
|
||||||
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
|
IF ("${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC")
|
||||||
IF (CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
|
IF (CMAKE_C_FLAGS MATCHES "/W[0-4]")
|
||||||
STRING(REGEX REPLACE "/W[0-4]" "/W3 /WX" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
STRING(REGEX REPLACE "/W[0-4]" "/W3 /WX" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
|
||||||
ELSE ()
|
ELSE ()
|
||||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W3 /WX")
|
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W3 /WX")
|
||||||
ENDIF ()
|
ENDIF ()
|
||||||
ENDIF ()
|
ENDIF ()
|
||||||
ENDFOREACH ()
|
ENDFOREACH ()
|
||||||
|
|
||||||
|
IF (cJSON_FOUND)
|
||||||
|
TARGET_LINK_LIBRARIES (jsonconv ${CJSON_LIBRARIES})
|
||||||
|
TARGET_INCLUDE_DIRECTORIES(jsonconv PRIVATE ${CJSON_INCLUDE_DIRS})
|
||||||
|
ENDIF ()
|
||||||
|
296
example/c/boundary.c
Normal file
296
example/c/boundary.c
Normal file
@@ -0,0 +1,296 @@
|
|||||||
|
/* gcc boundary.c -o boundary -Wconversion -Wpointer-sign */
|
||||||
|
#include <msgpack.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <assert.h>
|
||||||
|
|
||||||
|
static inline unsigned char atohex(char a)
|
||||||
|
{
|
||||||
|
int x;
|
||||||
|
if (a >= 'a') {
|
||||||
|
x = a - 'a' + 10;
|
||||||
|
} else if (a >= 'A') {
|
||||||
|
x = a - 'A' + 10;
|
||||||
|
} else {
|
||||||
|
x = a - '0';
|
||||||
|
}
|
||||||
|
assert(x >= 0 && x < 16);
|
||||||
|
return (unsigned char)x;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return 0 if equal
|
||||||
|
static inline int bytesncmp(char *data, const char *bytes, size_t len)
|
||||||
|
{
|
||||||
|
size_t n = len >> 1;
|
||||||
|
size_t i = 0;
|
||||||
|
int diff;
|
||||||
|
for (; i < n; i++) {
|
||||||
|
diff = (unsigned char)data[i] - (atohex(bytes[2 * i]) << 4) - atohex(bytes[2 * i + 1]);
|
||||||
|
if (diff != 0) {
|
||||||
|
return diff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
msgpack_sbuffer sbuf;
|
||||||
|
msgpack_packer *x;
|
||||||
|
size_t offset = 0;
|
||||||
|
char data[65536];
|
||||||
|
msgpack_timestamp ts[] = {
|
||||||
|
{ 0xFFFFFFFF, 0 },
|
||||||
|
{ 0x100000000, 0 },
|
||||||
|
{ 0x3FFFFFFFF, 0 },
|
||||||
|
{ 0x400000000, 0 },
|
||||||
|
{ INT64_MAX, UINT32_MAX }
|
||||||
|
};
|
||||||
|
|
||||||
|
#define check_sbuffer(b) \
|
||||||
|
do { \
|
||||||
|
size_t len = strlen(#b); \
|
||||||
|
assert((sbuf.size - offset) * 2 == len); \
|
||||||
|
assert(bytesncmp(sbuf.data + offset, #b, len) == 0); \
|
||||||
|
offset = sbuf.size; \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
msgpack_sbuffer_init(&sbuf);
|
||||||
|
x = msgpack_packer_new(&sbuf, msgpack_sbuffer_write);
|
||||||
|
|
||||||
|
msgpack_pack_fix_uint8(x, 0); check_sbuffer(cc00); /* cc 00 */
|
||||||
|
msgpack_pack_fix_uint8(x, 0xFF); check_sbuffer(ccff); /* cc ff */
|
||||||
|
msgpack_pack_fix_uint16(x, 0); check_sbuffer(cd0000); /* cd 00 00 */
|
||||||
|
msgpack_pack_fix_uint16(x, 0xFFFF); check_sbuffer(cdffff); /* cd ff ff */
|
||||||
|
msgpack_pack_fix_uint32(x, 0); check_sbuffer(ce00000000); /* ce 00 00 00 00 */
|
||||||
|
msgpack_pack_fix_uint32(x, 0xFFFFFFFF); check_sbuffer(ceffffffff); /* ce ff ff ff ff */
|
||||||
|
msgpack_pack_fix_uint64(x, 0); check_sbuffer(cf0000000000000000); /* cf 00 00 00 00 00 00 00 00 */
|
||||||
|
msgpack_pack_fix_uint64(x, 0xFFFFFFFFFFFFFFFF); check_sbuffer(cfffffffffffffffff); /* cf ff ff ff ff ff ff ff ff */
|
||||||
|
|
||||||
|
msgpack_pack_uint8(x, 0); check_sbuffer(00); /* 00 */
|
||||||
|
msgpack_pack_uint8(x, 0x7F); check_sbuffer(7f); /* 7f */
|
||||||
|
msgpack_pack_uint8(x, 0x80); check_sbuffer(cc80); /* cc 80 */
|
||||||
|
msgpack_pack_uint8(x, 0xFF); check_sbuffer(ccff); /* cc ff */
|
||||||
|
|
||||||
|
msgpack_pack_uint16(x, 0); check_sbuffer(00); /* 00 */
|
||||||
|
msgpack_pack_uint16(x, 0x7F); check_sbuffer(7f); /* 7f */
|
||||||
|
msgpack_pack_uint16(x, 0x80); check_sbuffer(cc80); /* cc 80 */
|
||||||
|
msgpack_pack_uint16(x, 0xFF); check_sbuffer(ccff); /* cc ff */
|
||||||
|
msgpack_pack_uint16(x, 0x100); check_sbuffer(cd0100); /* cd 01 00 */
|
||||||
|
msgpack_pack_uint16(x, 0xFFFF); check_sbuffer(cdffff); /* cd ff ff */
|
||||||
|
|
||||||
|
msgpack_pack_uint32(x, 0); check_sbuffer(00); /* 00 */
|
||||||
|
msgpack_pack_uint32(x, 0x7F); check_sbuffer(7f); /* 7f */
|
||||||
|
msgpack_pack_uint32(x, 0x80); check_sbuffer(cc80); /* cc 80 */
|
||||||
|
msgpack_pack_uint32(x, 0xFF); check_sbuffer(ccff); /* cc ff */
|
||||||
|
msgpack_pack_uint32(x, 0x100); check_sbuffer(cd0100); /* cd 01 00 */
|
||||||
|
msgpack_pack_uint32(x, 0xFFFF); check_sbuffer(cdffff); /* cd ff ff */
|
||||||
|
msgpack_pack_uint32(x, 0x10000); check_sbuffer(ce00010000); /* ce 00 01 00 00 */
|
||||||
|
msgpack_pack_uint32(x, 0xFFFFFFFF); check_sbuffer(ceffffffff); /* ce ff ff ff ff */
|
||||||
|
|
||||||
|
msgpack_pack_uint64(x, 0); check_sbuffer(00); /* 00 */
|
||||||
|
msgpack_pack_uint64(x, 0x7F); check_sbuffer(7f); /* 7f */
|
||||||
|
msgpack_pack_uint64(x, 0x80); check_sbuffer(cc80); /* cc 80 */
|
||||||
|
msgpack_pack_uint64(x, 0xFF); check_sbuffer(ccff); /* cc ff */
|
||||||
|
msgpack_pack_uint64(x, 0x100); check_sbuffer(cd0100); /* cd 01 00 */
|
||||||
|
msgpack_pack_uint64(x, 0xFFFF); check_sbuffer(cdffff); /* cd ff ff */
|
||||||
|
msgpack_pack_uint64(x, 0x10000); check_sbuffer(ce00010000); /* ce 00 01 00 00 */
|
||||||
|
msgpack_pack_uint64(x, 0xFFFFFFFF); check_sbuffer(ceffffffff); /* ce ff ff ff ff */
|
||||||
|
msgpack_pack_uint64(x, 0x100000000); check_sbuffer(cf0000000100000000); /* cf 00 00 00 01 00 00 00 00 */
|
||||||
|
msgpack_pack_uint64(x, 0xFFFFFFFFFFFFFFFF); check_sbuffer(cfffffffffffffffff); /* cf ff ff ff ff ff ff ff ff */
|
||||||
|
|
||||||
|
msgpack_pack_fix_int8(x, 0x7F); check_sbuffer(d07f); /* d0 7f */
|
||||||
|
msgpack_pack_fix_int8(x, -0x7F-1); check_sbuffer(d080); /* d0 80 */
|
||||||
|
msgpack_pack_fix_int16(x, 0x7FFF); check_sbuffer(d17fff); /* d1 7f ff */
|
||||||
|
msgpack_pack_fix_int16(x, -0x7FFF-1); check_sbuffer(d18000); /* d1 80 00 */
|
||||||
|
msgpack_pack_fix_int32(x, 0x7FFFFFFF); check_sbuffer(d27fffffff); /* d2 7f ff ff ff */
|
||||||
|
msgpack_pack_fix_int32(x, -0x7FFFFFFF-1); check_sbuffer(d280000000); /* d2 80 00 00 00 */
|
||||||
|
msgpack_pack_fix_int64(x, 0x7FFFFFFFFFFFFFFF); check_sbuffer(d37fffffffffffffff); /* d3 7f ff ff ff ff ff ff ff */
|
||||||
|
msgpack_pack_fix_int64(x, -0x7FFFFFFFFFFFFFFF-1); check_sbuffer(d38000000000000000); /* d3 80 00 00 00 00 00 00 00 */
|
||||||
|
|
||||||
|
msgpack_pack_int8(x, -0x7F-1); check_sbuffer(d080); /* d0 80 */
|
||||||
|
msgpack_pack_int8(x, -0x21); check_sbuffer(d0df); /* d0 df */
|
||||||
|
msgpack_pack_int8(x, -0x20); check_sbuffer(e0); /* e0 */
|
||||||
|
msgpack_pack_int8(x, -1); check_sbuffer(ff); /* ff */
|
||||||
|
msgpack_pack_int8(x, 0); check_sbuffer(00); /* 00 */
|
||||||
|
msgpack_pack_int8(x, 0x7F); check_sbuffer(7f); /* 7f */
|
||||||
|
|
||||||
|
msgpack_pack_int16(x, -0x7FFF-1); check_sbuffer(d18000); /* d1 80 00 */
|
||||||
|
msgpack_pack_int16(x, -0x81); check_sbuffer(d1ff7f); /* d1 ff 7f */
|
||||||
|
msgpack_pack_int16(x, -0x80); check_sbuffer(d080); /* d0 80 */
|
||||||
|
msgpack_pack_int16(x, -0x21); check_sbuffer(d0df); /* d0 df */
|
||||||
|
msgpack_pack_int16(x, -0x20); check_sbuffer(e0); /* e0 */
|
||||||
|
msgpack_pack_int16(x, -0x1); check_sbuffer(ff); /* ff */
|
||||||
|
msgpack_pack_int16(x, 0); check_sbuffer(00); /* 00 */
|
||||||
|
msgpack_pack_int16(x, 0x7F); check_sbuffer(7f); /* 7f */
|
||||||
|
msgpack_pack_int16(x, 0x80); check_sbuffer(cc80); /* cc 80 */
|
||||||
|
msgpack_pack_int16(x, 0xFF); check_sbuffer(ccff); /* cc ff */
|
||||||
|
msgpack_pack_int16(x, 0x100); check_sbuffer(cd0100); /* cd 01 00 */
|
||||||
|
msgpack_pack_int16(x, 0x7FFF); check_sbuffer(cd7fff); /* cd 7f ff */
|
||||||
|
|
||||||
|
msgpack_pack_int32(x, -0x7FFFFFFF-1); check_sbuffer(d280000000); /* d2 80 00 00 00 */
|
||||||
|
msgpack_pack_int32(x, -0x8001); check_sbuffer(d2ffff7fff); /* d2 ff ff 7f ff */
|
||||||
|
msgpack_pack_int32(x, -0x8000); check_sbuffer(d18000); /* d1 80 00 */
|
||||||
|
msgpack_pack_int32(x, -0x81); check_sbuffer(d1ff7f); /* d1 ff 7f */
|
||||||
|
msgpack_pack_int32(x, -0x80); check_sbuffer(d080); /* d0 80 */
|
||||||
|
msgpack_pack_int32(x, -0x21); check_sbuffer(d0df); /* d0 df */
|
||||||
|
msgpack_pack_int32(x, -0x20); check_sbuffer(e0); /* e0 */
|
||||||
|
msgpack_pack_int32(x, -0x1); check_sbuffer(ff); /* ff */
|
||||||
|
msgpack_pack_int32(x, 0); check_sbuffer(00); /* 00 */
|
||||||
|
msgpack_pack_int32(x, 0x7F); check_sbuffer(7f); /* 7f */
|
||||||
|
msgpack_pack_int32(x, 0x80); check_sbuffer(cc80); /* cc 80 */
|
||||||
|
msgpack_pack_int32(x, 0xFF); check_sbuffer(ccff); /* cc ff */
|
||||||
|
msgpack_pack_int32(x, 0x100); check_sbuffer(cd0100); /* cd 01 00 */
|
||||||
|
msgpack_pack_int32(x, 0xFFFF); check_sbuffer(cdffff); /* cd ff ff */
|
||||||
|
msgpack_pack_int32(x, 0x10000); check_sbuffer(ce00010000); /* ce 00 01 00 00 */
|
||||||
|
msgpack_pack_int32(x, 0x7FFFFFFF); check_sbuffer(ce7fffffff); /* ce 7f ff ff ff */
|
||||||
|
|
||||||
|
msgpack_pack_int64(x, -0x7FFFFFFFFFFFFFFF-1); check_sbuffer(d38000000000000000); /* d3 80 00 00 00 00 00 00 00 */
|
||||||
|
msgpack_pack_int64(x, -((1LL<<31)+1)); check_sbuffer(d3ffffffff7fffffff); /* d3 ff ff ff ff 7f ff ff ff */
|
||||||
|
msgpack_pack_int64(x, -(1LL<<31)); check_sbuffer(d280000000); /* d2 80 00 00 00 */
|
||||||
|
msgpack_pack_int64(x, -0x8001); check_sbuffer(d2ffff7fff); /* d2 ff ff 7f ff */
|
||||||
|
msgpack_pack_int64(x, -0x8000); check_sbuffer(d18000); /* d1 80 00 */
|
||||||
|
msgpack_pack_int64(x, -0x81); check_sbuffer(d1ff7f); /* d1 ff 7f */
|
||||||
|
msgpack_pack_int64(x, -0x80); check_sbuffer(d080); /* d0 80 */
|
||||||
|
msgpack_pack_int64(x, -0x21); check_sbuffer(d0df); /* d0 df */
|
||||||
|
msgpack_pack_int64(x, -0x20); check_sbuffer(e0); /* e0 */
|
||||||
|
msgpack_pack_int64(x, -0x1); check_sbuffer(ff); /* ff */
|
||||||
|
msgpack_pack_int64(x, 0); check_sbuffer(00); /* 00 */
|
||||||
|
msgpack_pack_int64(x, 0x7F); check_sbuffer(7f); /* 7f */
|
||||||
|
msgpack_pack_int64(x, 0x80); check_sbuffer(cc80); /* cc 80 */
|
||||||
|
msgpack_pack_int64(x, 0xFF); check_sbuffer(ccff); /* cc ff */
|
||||||
|
msgpack_pack_int64(x, 0x100); check_sbuffer(cd0100); /* cd 01 00 */
|
||||||
|
msgpack_pack_int64(x, 0xFFFF); check_sbuffer(cdffff); /* cd ff ff */
|
||||||
|
msgpack_pack_int64(x, 0x10000); check_sbuffer(ce00010000); /* ce 00 01 00 00 */
|
||||||
|
msgpack_pack_int64(x, 0xFFFFFFFF); check_sbuffer(ceffffffff); /* ce ff ff ff ff */
|
||||||
|
msgpack_pack_int64(x, 0x100000000); check_sbuffer(cf0000000100000000); /* cf 00 00 00 01 00 00 00 00 */
|
||||||
|
msgpack_pack_int64(x, 0x7FFFFFFFFFFFFFFF); check_sbuffer(cf7fffffffffffffff); /* cf 7f ff ff ff ff ff ff ff */
|
||||||
|
|
||||||
|
msgpack_pack_nil(x); check_sbuffer(c0); /* c0 */
|
||||||
|
msgpack_pack_false(x); check_sbuffer(c2); /* c2 */
|
||||||
|
msgpack_pack_true(x); check_sbuffer(c3); /* c3 */
|
||||||
|
|
||||||
|
msgpack_pack_float(x, 1.0); check_sbuffer(ca3f800000); /* ca 3f 80 00 00 */
|
||||||
|
msgpack_pack_double(x, 1.0); check_sbuffer(cb3ff0000000000000); /* cb 3f f0 00 00 00 00 00 00 */
|
||||||
|
|
||||||
|
msgpack_pack_unsigned_char(x, UINT8_MAX); /* same as msgpack_pack_uint8() */
|
||||||
|
msgpack_pack_unsigned_short(x, (unsigned short)UINT64_MAX);
|
||||||
|
msgpack_pack_unsigned_int(x, (unsigned int)UINT64_MAX);
|
||||||
|
msgpack_pack_unsigned_long(x, (unsigned long)UINT64_MAX);
|
||||||
|
msgpack_pack_unsigned_long_long(x, (unsigned long long)UINT64_MAX);
|
||||||
|
|
||||||
|
msgpack_pack_signed_char(x, INT8_MAX); /* same as msgpack_pack_int8() */
|
||||||
|
|
||||||
|
#define check_sbuffer_n(b) \
|
||||||
|
do { \
|
||||||
|
size_t len = strlen(#b); \
|
||||||
|
assert(bytesncmp(sbuf.data + offset, #b, len) == 0); \
|
||||||
|
offset = sbuf.size; \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
#define fill_str(n) msgpack_pack_str_body(x, data, n)
|
||||||
|
|
||||||
|
offset = sbuf.size;
|
||||||
|
msgpack_pack_str(x, 0); /* "" */ check_sbuffer(a0); /* a0 */
|
||||||
|
msgpack_pack_str(x, 31);
|
||||||
|
fill_str(31); check_sbuffer_n(bf); /* bf ... */
|
||||||
|
msgpack_pack_str(x, 32);
|
||||||
|
fill_str(32); check_sbuffer_n(d920); /* d9 20 ... */
|
||||||
|
msgpack_pack_str(x, 255);
|
||||||
|
fill_str(255); check_sbuffer_n(d9ff); /* d9 ff ... */
|
||||||
|
msgpack_pack_str(x, 256);
|
||||||
|
fill_str(256); check_sbuffer_n(da0100); /* da 01 00 ... */
|
||||||
|
msgpack_pack_str(x, 65535);
|
||||||
|
fill_str(65535); check_sbuffer_n(daffff); /* da ff ff ... */
|
||||||
|
msgpack_pack_str(x, 65536);
|
||||||
|
fill_str(65536); check_sbuffer_n(db00010000); /* db 00 01 00 00 ... */
|
||||||
|
|
||||||
|
#define fill_map(n) \
|
||||||
|
do { \
|
||||||
|
size_t i = 0; \
|
||||||
|
for (; i < n * 2; i++) { msgpack_pack_int8(x, 0x1); } \
|
||||||
|
} while (0);
|
||||||
|
|
||||||
|
msgpack_pack_map(x, 0); /* {} */ check_sbuffer(80); /* 80 */
|
||||||
|
msgpack_pack_map(x, 1);
|
||||||
|
fill_map(1); check_sbuffer_n(81); /* 81 ... */
|
||||||
|
msgpack_pack_map(x, 15);
|
||||||
|
fill_map(15); check_sbuffer_n(8f); /* 8f ... */
|
||||||
|
msgpack_pack_map(x, 16);
|
||||||
|
fill_map(16); check_sbuffer_n(de0010); /* de 00 10 ... */
|
||||||
|
msgpack_pack_map(x, 65535);
|
||||||
|
fill_map(65535); check_sbuffer_n(deffff); /* de ff ff ... */
|
||||||
|
msgpack_pack_map(x, 65536);
|
||||||
|
fill_map(65536); check_sbuffer_n(df00010000); /* df 00 01 00 00 ... */
|
||||||
|
|
||||||
|
#define fill_array(n) \
|
||||||
|
do { \
|
||||||
|
size_t i = 0; \
|
||||||
|
for (; i < n; i++) { msgpack_pack_int8(x, 0x1); } \
|
||||||
|
} while (0);
|
||||||
|
|
||||||
|
msgpack_pack_array(x, 0); /* [] */ check_sbuffer(90); /* 90 */
|
||||||
|
msgpack_pack_array(x, 1);
|
||||||
|
fill_array(1); check_sbuffer_n(91); /* 91 ... */
|
||||||
|
msgpack_pack_array(x, 15);
|
||||||
|
fill_array(15); check_sbuffer_n(9f); /* 9f ... */
|
||||||
|
msgpack_pack_array(x, 16);
|
||||||
|
fill_array(16); check_sbuffer_n(dc0010); /* dc 00 10 ... */
|
||||||
|
msgpack_pack_array(x, 65535);
|
||||||
|
fill_array(65535); check_sbuffer_n(dcffff); /* dc ff ff ... */
|
||||||
|
msgpack_pack_array(x, 65536);
|
||||||
|
fill_array(65536); check_sbuffer_n(dd00010000); /* dd 00 01 00 00 ... */
|
||||||
|
|
||||||
|
#define fill_bin(n) msgpack_pack_bin_body(x, data, n)
|
||||||
|
|
||||||
|
msgpack_pack_bin(x, 0); check_sbuffer(c400); /* c4 00 */
|
||||||
|
msgpack_pack_bin(x, 1);
|
||||||
|
fill_bin(1); check_sbuffer_n(c401); /* c4 01 ... */
|
||||||
|
msgpack_pack_bin(x, 255);
|
||||||
|
fill_bin(255); check_sbuffer_n(c4ff); /* c4 ff ... */
|
||||||
|
msgpack_pack_bin(x, 256);
|
||||||
|
fill_bin(256); check_sbuffer_n(c50100); /* c5 01 00 ... */
|
||||||
|
msgpack_pack_bin(x, 65535);
|
||||||
|
fill_bin(65535); check_sbuffer_n(c5ffff); /* c5 ff ff ... */
|
||||||
|
msgpack_pack_bin(x, 65536);
|
||||||
|
fill_bin(65536); check_sbuffer_n(c600010000); /* c6 00 01 00 00 ... */
|
||||||
|
|
||||||
|
#define fill_ext(n) msgpack_pack_ext_body(x, data, n)
|
||||||
|
|
||||||
|
msgpack_pack_ext(x, 1, 0x7F);
|
||||||
|
fill_ext(1); check_sbuffer_n(d47f); /* d4 7f ... */
|
||||||
|
msgpack_pack_ext(x, 2, 0x7F);
|
||||||
|
fill_ext(2); check_sbuffer_n(d57f); /* d5 7f ... */
|
||||||
|
msgpack_pack_ext(x, 4, 0x7F);
|
||||||
|
fill_ext(4); check_sbuffer_n(d67f); /* d6 7f ... */
|
||||||
|
msgpack_pack_ext(x, 8, 0x7F);
|
||||||
|
fill_ext(8); check_sbuffer_n(d77f); /* d7 7f ... */
|
||||||
|
msgpack_pack_ext(x, 16, 0x7F);
|
||||||
|
fill_ext(16); check_sbuffer_n(d87f); /* d8 7f ... */
|
||||||
|
|
||||||
|
msgpack_pack_ext(x, 0, 0x7F); check_sbuffer(c7007f); /* c7 00 7f */
|
||||||
|
msgpack_pack_ext(x, 3, 0x7F);
|
||||||
|
fill_ext(3); check_sbuffer_n(c7037f); /* c7 03 7f */
|
||||||
|
msgpack_pack_ext(x, 5, 0x7F);
|
||||||
|
fill_ext(5); check_sbuffer_n(c7057f); /* c7 05 7f */
|
||||||
|
msgpack_pack_ext(x, 17, 0x7F);
|
||||||
|
fill_ext(17); check_sbuffer_n(c7117f); /* c7 11 7f */
|
||||||
|
msgpack_pack_ext(x, 255, 0x7F);
|
||||||
|
fill_ext(255); check_sbuffer_n(c7ff7f); /* c7 ff 7f ... */
|
||||||
|
msgpack_pack_ext(x, 256, 0x7F);
|
||||||
|
fill_ext(256); check_sbuffer_n(c801007f); /* c8 01 00 7f ... */
|
||||||
|
msgpack_pack_ext(x, 65535, 0x7F);
|
||||||
|
fill_ext(65535); check_sbuffer_n(c8ffff7f); /* c8 ff ff 7f ... */
|
||||||
|
msgpack_pack_ext(x, 65536, 0x7F);
|
||||||
|
fill_ext(65536); check_sbuffer_n(c9000100007f); /* c9 00 01 00 00 7f ... */
|
||||||
|
|
||||||
|
msgpack_pack_timestamp(x, ts); check_sbuffer(d6ffffffffff); /* d6 ff ff ff ff ff */
|
||||||
|
msgpack_pack_timestamp(x, ts + 1); check_sbuffer(d7ff0000000100000000); /* d7 ff 00 00 00 01 00 00 00 00 */
|
||||||
|
msgpack_pack_timestamp(x, ts + 2); check_sbuffer(d7ff00000003ffffffff); /* d7 ff 00 00 00 03 ff ff ff ff */
|
||||||
|
msgpack_pack_timestamp(x, ts + 3); check_sbuffer(c70cff000000000000000400000000); /* c7 0c ff 00 00 00 00 00 00 00 04 00 00 00 00 */
|
||||||
|
msgpack_pack_timestamp(x, ts + 4); check_sbuffer(c70cffffffffff7fffffffffffffff); /* c7 0c ff ff ff ff ff 7f ff ff ff ff ff ff ff */
|
||||||
|
|
||||||
|
msgpack_sbuffer_destroy(&sbuf);
|
||||||
|
msgpack_packer_free(x);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
419
example/c/jsonconv.c
Normal file
419
example/c/jsonconv.c
Normal file
@@ -0,0 +1,419 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <math.h>
|
||||||
|
#include <msgpack.h>
|
||||||
|
#include <cjson/cJSON.h>
|
||||||
|
|
||||||
|
#if defined(_MSC_VER)
|
||||||
|
#if _MSC_VER >= 1800
|
||||||
|
#include <inttypes.h>
|
||||||
|
#else
|
||||||
|
#define PRIu64 "I64u"
|
||||||
|
#define PRIi64 "I64i"
|
||||||
|
#define PRIi8 "i"
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
#include <inttypes.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(_KERNEL_MODE)
|
||||||
|
# undef snprintf
|
||||||
|
# define snprintf _snprintf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define DEBUG(...) printf(__VA_ARGS__)
|
||||||
|
|
||||||
|
static char *format_string(const char *input)
|
||||||
|
{
|
||||||
|
const char *inptr;
|
||||||
|
char *output;
|
||||||
|
char *outptr;
|
||||||
|
size_t output_length = 0;
|
||||||
|
/* numbers of additional characters*/
|
||||||
|
size_t escape_characters = 0;
|
||||||
|
|
||||||
|
if (input == NULL) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (inptr = input; *inptr; inptr++) {
|
||||||
|
switch (*inptr) {
|
||||||
|
case '\"':
|
||||||
|
case '\\':
|
||||||
|
case '\b':
|
||||||
|
case '\f':
|
||||||
|
case '\n':
|
||||||
|
case '\r':
|
||||||
|
case '\t':
|
||||||
|
/* one character escape sequence */
|
||||||
|
escape_characters++;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
output_length = (size_t)(inptr - input) + escape_characters;
|
||||||
|
|
||||||
|
output = (char *)malloc(output_length + 1);
|
||||||
|
if (output == NULL) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* no add characters*/
|
||||||
|
if (escape_characters == 0) {
|
||||||
|
memcpy(output, input, output_length);
|
||||||
|
output[output_length] = '\0';
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
|
||||||
|
outptr = output;
|
||||||
|
/* copy string */
|
||||||
|
for (inptr = input; *inptr != '\0'; (void)inptr++, outptr++) {
|
||||||
|
if ((*inptr > 31) && (*inptr != '\"') && (*inptr != '\\')) {
|
||||||
|
/* normal character, copy */
|
||||||
|
*outptr = *inptr;
|
||||||
|
} else {
|
||||||
|
/* character needs to be escaped */
|
||||||
|
*outptr++ = '\\';
|
||||||
|
switch (*inptr)
|
||||||
|
{
|
||||||
|
case '\\':
|
||||||
|
*outptr = '\\';
|
||||||
|
break;
|
||||||
|
case '\"':
|
||||||
|
*outptr = '\"';
|
||||||
|
break;
|
||||||
|
case '\b':
|
||||||
|
*outptr = 'b';
|
||||||
|
break;
|
||||||
|
case '\f':
|
||||||
|
*outptr = 'f';
|
||||||
|
break;
|
||||||
|
case '\n':
|
||||||
|
*outptr = 'n';
|
||||||
|
break;
|
||||||
|
case '\r':
|
||||||
|
*outptr = 'r';
|
||||||
|
break;
|
||||||
|
case '\t':
|
||||||
|
*outptr = 't';
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
output[output_length] = '\0';
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Pack cJSON object.
|
||||||
|
* return 0 success, others failed
|
||||||
|
*/
|
||||||
|
static int parse_cjson_object(msgpack_packer *pk, cJSON *node)
|
||||||
|
{
|
||||||
|
int ret, sz, i;
|
||||||
|
cJSON *child;
|
||||||
|
char *strvalue;
|
||||||
|
|
||||||
|
if (node == NULL) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (node->type & 0xFF) {
|
||||||
|
case cJSON_Invalid:
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
case cJSON_False:
|
||||||
|
return msgpack_pack_false(pk);
|
||||||
|
|
||||||
|
case cJSON_True:
|
||||||
|
return msgpack_pack_true(pk);
|
||||||
|
|
||||||
|
case cJSON_NULL:
|
||||||
|
return msgpack_pack_nil(pk);
|
||||||
|
|
||||||
|
case cJSON_String:
|
||||||
|
strvalue = format_string(node->valuestring);
|
||||||
|
if (strvalue != NULL) {
|
||||||
|
ret = msgpack_pack_str_with_body(pk, strvalue, strlen(strvalue));
|
||||||
|
free(strvalue);
|
||||||
|
return ret;
|
||||||
|
} else {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
case cJSON_Number:
|
||||||
|
if (isnan(node->valuedouble) || isinf(node->valuedouble)) {
|
||||||
|
ret = msgpack_pack_nil(pk);
|
||||||
|
} else if (node->valuedouble == node->valueint) {
|
||||||
|
ret = msgpack_pack_int(pk, node->valueint);
|
||||||
|
} else {
|
||||||
|
ret = msgpack_pack_double(pk, node->valuedouble);
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
case cJSON_Array:
|
||||||
|
sz = cJSON_GetArraySize(node);
|
||||||
|
if (msgpack_pack_array(pk, sz) != 0) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
for (i = 0; i < sz; i++) {
|
||||||
|
if (parse_cjson_object(pk, cJSON_GetArrayItem(node, i)) != 0) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
case cJSON_Object:
|
||||||
|
sz = cJSON_GetArraySize(node);
|
||||||
|
if (msgpack_pack_map(pk, sz) != 0) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
for (i = 0; i < sz; i++) {
|
||||||
|
child = cJSON_GetArrayItem(node, i);
|
||||||
|
strvalue = format_string(child->string);
|
||||||
|
if (strvalue == NULL) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (msgpack_pack_str_with_body(pk, strvalue, strlen(strvalue)) != 0) {
|
||||||
|
free(strvalue);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
free(strvalue);
|
||||||
|
if (parse_cjson_object(pk, child) != 0) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
default:
|
||||||
|
DEBUG("unknown type.\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Pack json string to msgpack format data.
|
||||||
|
* return 0 success, -1 failed
|
||||||
|
*/
|
||||||
|
int msgpack_pack_jsonstr(msgpack_packer *pk, const char *jsonstr)
|
||||||
|
{
|
||||||
|
int status;
|
||||||
|
cJSON *node;
|
||||||
|
const char *end = NULL;
|
||||||
|
|
||||||
|
if (pk == NULL || jsonstr == NULL) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
node = cJSON_ParseWithOpts(jsonstr, &end, 1);
|
||||||
|
if (node == NULL) {
|
||||||
|
DEBUG("parse error: unexpected string `%s`\n", end);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
status = parse_cjson_object(pk, node);
|
||||||
|
cJSON_Delete(node);
|
||||||
|
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int bytes_contain_zero(const msgpack_object_bin *bin)
|
||||||
|
{
|
||||||
|
size_t i;
|
||||||
|
for (i = 0; i < bin->size; i++) {
|
||||||
|
if (bin->ptr[i] == 0) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define PRINT_JSONSTR_CALL(ret, func, aux_buffer, aux_buffer_size, ...) \
|
||||||
|
ret = func(aux_buffer, aux_buffer_size, __VA_ARGS__); \
|
||||||
|
if (ret <= 0) \
|
||||||
|
return ret; \
|
||||||
|
if (ret > aux_buffer_size) \
|
||||||
|
return 0; \
|
||||||
|
aux_buffer = aux_buffer + ret; \
|
||||||
|
aux_buffer_size = aux_buffer_size - ret
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Convert msgpack format data to json string.
|
||||||
|
* return >0: success, 0: length of buffer not enough, -1: failed
|
||||||
|
*/
|
||||||
|
size_t msgpack_object_print_jsonstr(char *buffer, size_t length, const msgpack_object o)
|
||||||
|
{
|
||||||
|
char *aux_buffer = buffer;
|
||||||
|
size_t aux_buffer_size = length;
|
||||||
|
size_t ret;
|
||||||
|
|
||||||
|
switch (o.type) {
|
||||||
|
case MSGPACK_OBJECT_NIL:
|
||||||
|
PRINT_JSONSTR_CALL(ret, snprintf, aux_buffer, aux_buffer_size, "null");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MSGPACK_OBJECT_BOOLEAN:
|
||||||
|
PRINT_JSONSTR_CALL(ret, snprintf, aux_buffer, aux_buffer_size, (o.via.boolean ? "true" : "false"));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MSGPACK_OBJECT_POSITIVE_INTEGER:
|
||||||
|
#if defined(PRIu64)
|
||||||
|
PRINT_JSONSTR_CALL(ret, snprintf, aux_buffer, aux_buffer_size, "%" PRIu64, o.via.u64);
|
||||||
|
#else
|
||||||
|
if (o.via.u64 > ULONG_MAX) {
|
||||||
|
PRINT_JSONSTR_CALL(ret, snprintf, aux_buffer, aux_buffer_size, "%lu", ULONG_MAX);
|
||||||
|
} else {
|
||||||
|
PRINT_JSONSTR_CALL(ret, snprintf, aux_buffer, aux_buffer_size, "%lu", (unsigned long)o.via.u64);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MSGPACK_OBJECT_NEGATIVE_INTEGER:
|
||||||
|
#if defined(PRIi64)
|
||||||
|
PRINT_JSONSTR_CALL(ret, snprintf, aux_buffer, aux_buffer_size, "%" PRIi64, o.via.i64);
|
||||||
|
#else
|
||||||
|
if (o.via.i64 > LONG_MAX) {
|
||||||
|
PRINT_JSONSTR_CALL(ret, snprintf, aux_buffer, aux_buffer_size, "%ld", LONG_MAX);
|
||||||
|
} else if (o.via.i64 < LONG_MIN) {
|
||||||
|
PRINT_JSONSTR_CALL(ret, snprintf, aux_buffer, aux_buffer_size, "%ld", LONG_MIN);
|
||||||
|
} else {
|
||||||
|
PRINT_JSONSTR_CALL(ret, snprintf, aux_buffer, aux_buffer_size, "%ld", (signed long)o.via.i64);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MSGPACK_OBJECT_FLOAT32:
|
||||||
|
case MSGPACK_OBJECT_FLOAT64:
|
||||||
|
PRINT_JSONSTR_CALL(ret, snprintf, aux_buffer, aux_buffer_size, "%f", o.via.f64);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MSGPACK_OBJECT_STR:
|
||||||
|
PRINT_JSONSTR_CALL(ret, snprintf, aux_buffer, aux_buffer_size, "\"%.*s\"", (int)o.via.str.size, o.via.str.ptr);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MSGPACK_OBJECT_BIN:
|
||||||
|
if (bytes_contain_zero(&o.via.bin)) {
|
||||||
|
DEBUG("the value contains zero\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
PRINT_JSONSTR_CALL(ret, snprintf, aux_buffer, aux_buffer_size, "\"%.*s\"", (int)o.via.bin.size, o.via.bin.ptr);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MSGPACK_OBJECT_EXT:
|
||||||
|
DEBUG("not support type: MSGPACK_OBJECT_EXT.\n");
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
case MSGPACK_OBJECT_ARRAY:
|
||||||
|
PRINT_JSONSTR_CALL(ret, snprintf, aux_buffer, aux_buffer_size, "[");
|
||||||
|
if (o.via.array.size != 0) {
|
||||||
|
msgpack_object *p = o.via.array.ptr;
|
||||||
|
msgpack_object *const pend = o.via.array.ptr + o.via.array.size;
|
||||||
|
PRINT_JSONSTR_CALL(ret, msgpack_object_print_jsonstr, aux_buffer, aux_buffer_size, *p);
|
||||||
|
++p;
|
||||||
|
for (; p < pend; ++p) {
|
||||||
|
PRINT_JSONSTR_CALL(ret, snprintf, aux_buffer, aux_buffer_size, ",");
|
||||||
|
PRINT_JSONSTR_CALL(ret, msgpack_object_print_jsonstr, aux_buffer, aux_buffer_size, *p);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
PRINT_JSONSTR_CALL(ret, snprintf, aux_buffer, aux_buffer_size, "]");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MSGPACK_OBJECT_MAP:
|
||||||
|
PRINT_JSONSTR_CALL(ret, snprintf, aux_buffer, aux_buffer_size, "{");
|
||||||
|
if (o.via.map.size != 0) {
|
||||||
|
msgpack_object_kv *p = o.via.map.ptr;
|
||||||
|
msgpack_object_kv *const pend = o.via.map.ptr + o.via.map.size;
|
||||||
|
|
||||||
|
for (; p < pend; ++p) {
|
||||||
|
if (p->key.type != MSGPACK_OBJECT_STR) {
|
||||||
|
DEBUG("the key of in a map must be string.\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (p != o.via.map.ptr) {
|
||||||
|
PRINT_JSONSTR_CALL(ret, snprintf, aux_buffer, aux_buffer_size, ",");
|
||||||
|
}
|
||||||
|
PRINT_JSONSTR_CALL(ret, msgpack_object_print_jsonstr, aux_buffer, aux_buffer_size, p->key);
|
||||||
|
PRINT_JSONSTR_CALL(ret, snprintf, aux_buffer, aux_buffer_size, ":");
|
||||||
|
PRINT_JSONSTR_CALL(ret, msgpack_object_print_jsonstr, aux_buffer, aux_buffer_size, p->val);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
PRINT_JSONSTR_CALL(ret, snprintf, aux_buffer, aux_buffer_size, "}");
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
DEBUG("unknown type.\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return length - aux_buffer_size;
|
||||||
|
}
|
||||||
|
#undef PRINT_JSONSTR_CALL
|
||||||
|
|
||||||
|
static void test(const char *name, const char *input, const char *expect)
|
||||||
|
{
|
||||||
|
msgpack_sbuffer sbuf;
|
||||||
|
{
|
||||||
|
// pack
|
||||||
|
msgpack_packer pk;
|
||||||
|
msgpack_sbuffer_init(&sbuf);
|
||||||
|
msgpack_packer_init(&pk, &sbuf, msgpack_sbuffer_write);
|
||||||
|
if (msgpack_pack_jsonstr(&pk, input) < 0) {
|
||||||
|
msgpack_sbuffer_destroy(&sbuf);
|
||||||
|
printf("%s: invalid json string.\n", name);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
// unpack
|
||||||
|
#define MAX_JSONLEN 1024
|
||||||
|
msgpack_zone z;
|
||||||
|
msgpack_object obj;
|
||||||
|
size_t jsonstrlen = MAX_JSONLEN - 1;
|
||||||
|
char jsonparsed[MAX_JSONLEN];
|
||||||
|
|
||||||
|
msgpack_zone_init(&z, jsonstrlen);
|
||||||
|
msgpack_unpack(sbuf.data, sbuf.size, NULL, &z, &obj);
|
||||||
|
jsonstrlen = msgpack_object_print_jsonstr(jsonparsed, jsonstrlen, obj);
|
||||||
|
jsonparsed[jsonstrlen] = '\0';
|
||||||
|
|
||||||
|
//compare input and output
|
||||||
|
if (expect == NULL) {
|
||||||
|
expect = input;
|
||||||
|
}
|
||||||
|
if (strcmp(expect, jsonparsed) == 0) {
|
||||||
|
printf("%s: ok\n", name);
|
||||||
|
} else {
|
||||||
|
printf("%s: failed\n", name);
|
||||||
|
}
|
||||||
|
msgpack_zone_destroy(&z);
|
||||||
|
}
|
||||||
|
msgpack_sbuffer_destroy(&sbuf);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
test("null", "null", NULL);
|
||||||
|
test("boolean", "false", NULL);
|
||||||
|
test("single string", "\"frsyuki\"", NULL);
|
||||||
|
test("single number", "\"100\"", NULL);
|
||||||
|
test("space", "[{\"valuespace\":\"\",\"\":\"keyspace\"},\"\",[\"\"]]", NULL);
|
||||||
|
test("quote", "\"My name is Tom (\\\"Bee\\\") Kobe\"", NULL);
|
||||||
|
test("escape", "\"\\\\b\\f\\n\\r\\t\"", NULL);
|
||||||
|
test("escape2", "\"\b\f\n\r\t\"", "\"\\b\\f\\n\\r\\t\"");
|
||||||
|
test("map", "{\"name\":\"Tom (\\\"Bee\\\") Kobe\",\"type\":\"image\",\"data\":{\"width\":360,\"height\":460,\"title\":\"View me\",\"ips\":[116,943,256,711]}}", NULL);
|
||||||
|
test("array", "[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"]", NULL);
|
||||||
|
test("number array", "[[101,121,-33],[119,911,171],[0,2,-3]]", NULL);
|
||||||
|
test("mix array", "[{\"name\":\"Tom\",\"city\":\"London\",\"country\":\"UK\",\"longitude\":23},{\"name\":\"Jack\",\"city\":\"Birmingham\",\"country\":\"UK\",\"longitude\":-22}]", NULL);
|
||||||
|
test("unicode", "\"\\u5C71\\u5DDD\\u7570\\u57DF\\u98A8\\u6708\\u540C\\u5929\"", "\"山川異域風月同天\"");
|
||||||
|
test("utf8", "\"山川異域風月同天\"", NULL);
|
||||||
|
test("double", "12.34", "12.340000");
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
@@ -1,7 +1,7 @@
|
|||||||
#include <msgpack.h>
|
#include <msgpack.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
void print(char const* buf, unsigned int len)
|
void print(char const* buf,size_t len)
|
||||||
{
|
{
|
||||||
size_t i = 0;
|
size_t i = 0;
|
||||||
for(; i < len ; ++i)
|
for(; i < len ; ++i)
|
||||||
|
@@ -37,7 +37,7 @@ FOREACH (source_file ${exec_PROGRAMS})
|
|||||||
)
|
)
|
||||||
TARGET_INCLUDE_DIRECTORIES (${source_file_we}
|
TARGET_INCLUDE_DIRECTORIES (${source_file_we}
|
||||||
PRIVATE
|
PRIVATE
|
||||||
$<TARGET_PROPERTY:msgpackc,INTERFACE_INCLUDE_DIRECTORIES>
|
$<TARGET_PROPERTY:msgpackc-cxx,INTERFACE_INCLUDE_DIRECTORIES>
|
||||||
)
|
)
|
||||||
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
||||||
SET_PROPERTY (TARGET ${source_file_we} APPEND_STRING PROPERTY COMPILE_FLAGS " -Wall -Wextra")
|
SET_PROPERTY (TARGET ${source_file_we} APPEND_STRING PROPERTY COMPILE_FLAGS " -Wall -Wextra")
|
||||||
@@ -59,7 +59,7 @@ FOREACH (source_file ${with_pthread_PROGRAMS})
|
|||||||
)
|
)
|
||||||
TARGET_INCLUDE_DIRECTORIES (${source_file_we}
|
TARGET_INCLUDE_DIRECTORIES (${source_file_we}
|
||||||
PRIVATE
|
PRIVATE
|
||||||
$<TARGET_PROPERTY:msgpackc,INTERFACE_INCLUDE_DIRECTORIES>
|
$<TARGET_PROPERTY:msgpackc-cxx,INTERFACE_INCLUDE_DIRECTORIES>
|
||||||
)
|
)
|
||||||
TARGET_LINK_LIBRARIES (${source_file_we}
|
TARGET_LINK_LIBRARIES (${source_file_we}
|
||||||
${CMAKE_THREAD_LIBS_INIT}
|
${CMAKE_THREAD_LIBS_INIT}
|
||||||
@@ -88,7 +88,7 @@ FOREACH (source_file ${with_boost_lib_PROGRAMS})
|
|||||||
)
|
)
|
||||||
TARGET_INCLUDE_DIRECTORIES (${source_file_we}
|
TARGET_INCLUDE_DIRECTORIES (${source_file_we}
|
||||||
PRIVATE
|
PRIVATE
|
||||||
$<TARGET_PROPERTY:msgpackc,INTERFACE_INCLUDE_DIRECTORIES>
|
$<TARGET_PROPERTY:msgpackc-cxx,INTERFACE_INCLUDE_DIRECTORIES>
|
||||||
)
|
)
|
||||||
LINK_DIRECTORIES(${Boost_LIBRARY_DIRS})
|
LINK_DIRECTORIES(${Boost_LIBRARY_DIRS})
|
||||||
TARGET_LINK_LIBRARIES (${source_file_we}
|
TARGET_LINK_LIBRARIES (${source_file_we}
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
IF (MSGPACK_CXX11)
|
IF (MSGPACK_CXX11 OR MSGPACK_CXX17)
|
||||||
INCLUDE_DIRECTORIES (
|
INCLUDE_DIRECTORIES (
|
||||||
../include
|
../include
|
||||||
)
|
)
|
||||||
@@ -22,7 +22,7 @@ IF (MSGPACK_CXX11)
|
|||||||
)
|
)
|
||||||
TARGET_INCLUDE_DIRECTORIES (${source_file_we}
|
TARGET_INCLUDE_DIRECTORIES (${source_file_we}
|
||||||
PRIVATE
|
PRIVATE
|
||||||
$<TARGET_PROPERTY:msgpackc,INTERFACE_INCLUDE_DIRECTORIES>
|
$<TARGET_PROPERTY:msgpackc-cxx,INTERFACE_INCLUDE_DIRECTORIES>
|
||||||
)
|
)
|
||||||
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
||||||
SET_PROPERTY (TARGET ${source_file_we} APPEND_STRING PROPERTY COMPILE_FLAGS " -Wall -Wextra")
|
SET_PROPERTY (TARGET ${source_file_we} APPEND_STRING PROPERTY COMPILE_FLAGS " -Wall -Wextra")
|
||||||
|
@@ -20,7 +20,7 @@ IF (MSGPACK_USE_X3_PARSE AND MSGPACK_DEFAULT_API_VERSION VERSION_GREATER 1)
|
|||||||
)
|
)
|
||||||
TARGET_INCLUDE_DIRECTORIES (${source_file_we}
|
TARGET_INCLUDE_DIRECTORIES (${source_file_we}
|
||||||
PRIVATE
|
PRIVATE
|
||||||
$<TARGET_PROPERTY:msgpackc,INTERFACE_INCLUDE_DIRECTORIES>
|
$<TARGET_PROPERTY:msgpackc-cxx,INTERFACE_INCLUDE_DIRECTORIES>
|
||||||
)
|
)
|
||||||
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
||||||
SET_PROPERTY (TARGET ${source_file_we} APPEND_STRING PROPERTY COMPILE_FLAGS " -Wall -Wextra")
|
SET_PROPERTY (TARGET ${source_file_we} APPEND_STRING PROPERTY COMPILE_FLAGS " -Wall -Wextra")
|
||||||
@@ -46,7 +46,7 @@ IF (MSGPACK_USE_X3_PARSE AND MSGPACK_DEFAULT_API_VERSION VERSION_GREATER 1)
|
|||||||
)
|
)
|
||||||
TARGET_INCLUDE_DIRECTORIES (${source_file_we}
|
TARGET_INCLUDE_DIRECTORIES (${source_file_we}
|
||||||
PRIVATE
|
PRIVATE
|
||||||
$<TARGET_PROPERTY:msgpackc,INTERFACE_INCLUDE_DIRECTORIES>
|
$<TARGET_PROPERTY:msgpackc-cxx,INTERFACE_INCLUDE_DIRECTORIES>
|
||||||
)
|
)
|
||||||
TARGET_LINK_LIBRARIES (${source_file_we}
|
TARGET_LINK_LIBRARIES (${source_file_we}
|
||||||
${Boost_CONTEXT_LIBRARY}
|
${Boost_CONTEXT_LIBRARY}
|
||||||
|
@@ -89,15 +89,18 @@ static int msgpack_pack_map(msgpack_packer* pk, size_t n);
|
|||||||
|
|
||||||
static int msgpack_pack_str(msgpack_packer* pk, size_t l);
|
static int msgpack_pack_str(msgpack_packer* pk, size_t l);
|
||||||
static int msgpack_pack_str_body(msgpack_packer* pk, const void* b, size_t l);
|
static int msgpack_pack_str_body(msgpack_packer* pk, const void* b, size_t l);
|
||||||
|
static int msgpack_pack_str_with_body(msgpack_packer* pk, const void* b, size_t l);
|
||||||
|
|
||||||
static int msgpack_pack_v4raw(msgpack_packer* pk, size_t l);
|
static int msgpack_pack_v4raw(msgpack_packer* pk, size_t l);
|
||||||
static int msgpack_pack_v4raw_body(msgpack_packer* pk, const void* b, size_t l);
|
static int msgpack_pack_v4raw_body(msgpack_packer* pk, const void* b, size_t l);
|
||||||
|
|
||||||
static int msgpack_pack_bin(msgpack_packer* pk, size_t l);
|
static int msgpack_pack_bin(msgpack_packer* pk, size_t l);
|
||||||
static int msgpack_pack_bin_body(msgpack_packer* pk, const void* b, size_t l);
|
static int msgpack_pack_bin_body(msgpack_packer* pk, const void* b, size_t l);
|
||||||
|
static int msgpack_pack_bin_with_body(msgpack_packer* pk, const void* b, size_t l);
|
||||||
|
|
||||||
static int msgpack_pack_ext(msgpack_packer* pk, size_t l, int8_t type);
|
static int msgpack_pack_ext(msgpack_packer* pk, size_t l, int8_t type);
|
||||||
static int msgpack_pack_ext_body(msgpack_packer* pk, const void* b, size_t l);
|
static int msgpack_pack_ext_body(msgpack_packer* pk, const void* b, size_t l);
|
||||||
|
static int msgpack_pack_ext_with_body(msgpack_packer* pk, const void* b, size_t l, int8_t type);
|
||||||
|
|
||||||
static int msgpack_pack_timestamp(msgpack_packer* pk, const msgpack_timestamp* d);
|
static int msgpack_pack_timestamp(msgpack_packer* pk, const msgpack_timestamp* d);
|
||||||
|
|
||||||
@@ -143,6 +146,26 @@ inline void msgpack_packer_free(msgpack_packer* pk)
|
|||||||
free(pk);
|
free(pk);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline int msgpack_pack_str_with_body(msgpack_packer* pk, const void* b, size_t l)
|
||||||
|
{
|
||||||
|
int ret = msgpack_pack_str(pk, l);
|
||||||
|
if (ret != 0) { return ret; }
|
||||||
|
return msgpack_pack_str_body(pk, b, l);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline int msgpack_pack_bin_with_body(msgpack_packer* pk, const void* b, size_t l)
|
||||||
|
{
|
||||||
|
int ret = msgpack_pack_bin(pk, l);
|
||||||
|
if (ret != 0) { return ret; }
|
||||||
|
return msgpack_pack_bin_body(pk, b, l);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline int msgpack_pack_ext_with_body(msgpack_packer* pk, const void* b, size_t l, int8_t type)
|
||||||
|
{
|
||||||
|
int ret = msgpack_pack_ext(pk, l, type);
|
||||||
|
if (ret != 0) { return ret; }
|
||||||
|
return msgpack_pack_ext_body(pk, b, l);
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
@@ -258,14 +258,15 @@ struct object_with_zone<msgpack::type::array_ref<T> > {
|
|||||||
o.via.array.size = size;
|
o.via.array.size = size;
|
||||||
typename T::const_iterator it(v.data->begin());
|
typename T::const_iterator it(v.data->begin());
|
||||||
do {
|
do {
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
|
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
|
|
||||||
*p = msgpack::object(*it, o.zone);
|
*p = msgpack::object(*it, o.zone);
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
++p;
|
++p;
|
||||||
++it;
|
++it;
|
||||||
} while(p < pend);
|
} while(p < pend);
|
||||||
|
@@ -15,16 +15,16 @@
|
|||||||
#include "msgpack/adaptor/check_container_size.hpp"
|
#include "msgpack/adaptor/check_container_size.hpp"
|
||||||
|
|
||||||
// To suppress warning on Boost.1.58.0
|
// To suppress warning on Boost.1.58.0
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) || defined(__clang__)
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) || defined(__clang__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wunused-parameter"
|
#pragma GCC diagnostic ignored "-Wunused-parameter"
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) || defined(__clang__)
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) || defined(__clang__)
|
||||||
|
|
||||||
#include <boost/optional.hpp>
|
#include <boost/optional.hpp>
|
||||||
|
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) || defined(__clang__)
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) || defined(__clang__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) || defined(__clang__)
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) || defined(__clang__)
|
||||||
|
|
||||||
namespace msgpack {
|
namespace msgpack {
|
||||||
|
|
||||||
|
@@ -35,27 +35,27 @@ struct convert<std::vector<std::byte, Alloc> > {
|
|||||||
case msgpack::type::BIN:
|
case msgpack::type::BIN:
|
||||||
v.resize(o.via.bin.size);
|
v.resize(o.via.bin.size);
|
||||||
if (o.via.bin.size != 0) {
|
if (o.via.bin.size != 0) {
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
|
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
std::memcpy(&v.front(), o.via.bin.ptr, o.via.bin.size);
|
std::memcpy(&v.front(), o.via.bin.ptr, o.via.bin.size);
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case msgpack::type::STR:
|
case msgpack::type::STR:
|
||||||
v.resize(o.via.str.size);
|
v.resize(o.via.str.size);
|
||||||
if (o.via.str.size != 0) {
|
if (o.via.str.size != 0) {
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
|
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
std::memcpy(&v.front(), o.via.str.ptr, o.via.str.size);
|
std::memcpy(&v.front(), o.via.str.ptr, o.via.str.size);
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@@ -201,15 +201,15 @@ struct object_with_zone<std::map<K, V, Compare, Alloc> > {
|
|||||||
o.via.map.size = size;
|
o.via.map.size = size;
|
||||||
typename std::map<K, V, Compare, Alloc>::const_iterator it(v.begin());
|
typename std::map<K, V, Compare, Alloc>::const_iterator it(v.begin());
|
||||||
do {
|
do {
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
|
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
p->key = msgpack::object(it->first, o.zone);
|
p->key = msgpack::object(it->first, o.zone);
|
||||||
p->val = msgpack::object(it->second, o.zone);
|
p->val = msgpack::object(it->second, o.zone);
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
++p;
|
++p;
|
||||||
++it;
|
++it;
|
||||||
} while(p < pend);
|
} while(p < pend);
|
||||||
|
@@ -95,14 +95,14 @@ struct object_with_zone<std::vector<T, Alloc> > {
|
|||||||
o.via.array.size = size;
|
o.via.array.size = size;
|
||||||
typename std::vector<T, Alloc>::const_iterator it(v.begin());
|
typename std::vector<T, Alloc>::const_iterator it(v.begin());
|
||||||
do {
|
do {
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
|
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
*p = msgpack::object(*it, o.zone);
|
*p = msgpack::object(*it, o.zone);
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
++p;
|
++p;
|
||||||
++it;
|
++it;
|
||||||
} while(p < pend);
|
} while(p < pend);
|
||||||
|
@@ -32,27 +32,27 @@ struct convert<std::vector<char, Alloc> > {
|
|||||||
case msgpack::type::BIN:
|
case msgpack::type::BIN:
|
||||||
v.resize(o.via.bin.size);
|
v.resize(o.via.bin.size);
|
||||||
if (o.via.bin.size != 0) {
|
if (o.via.bin.size != 0) {
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
|
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
std::memcpy(&v.front(), o.via.bin.ptr, o.via.bin.size);
|
std::memcpy(&v.front(), o.via.bin.ptr, o.via.bin.size);
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case msgpack::type::STR:
|
case msgpack::type::STR:
|
||||||
v.resize(o.via.str.size);
|
v.resize(o.via.str.size);
|
||||||
if (o.via.str.size != 0) {
|
if (o.via.str.size != 0) {
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
|
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
std::memcpy(&v.front(), o.via.str.ptr, o.via.str.size);
|
std::memcpy(&v.front(), o.via.str.ptr, o.via.str.size);
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@@ -32,27 +32,27 @@ struct convert<std::vector<unsigned char, Alloc> > {
|
|||||||
case msgpack::type::BIN:
|
case msgpack::type::BIN:
|
||||||
v.resize(o.via.bin.size);
|
v.resize(o.via.bin.size);
|
||||||
if (o.via.bin.size != 0) {
|
if (o.via.bin.size != 0) {
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
|
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
std::memcpy(&v.front(), o.via.bin.ptr, o.via.bin.size);
|
std::memcpy(&v.front(), o.via.bin.ptr, o.via.bin.size);
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case msgpack::type::STR:
|
case msgpack::type::STR:
|
||||||
v.resize(o.via.str.size);
|
v.resize(o.via.str.size);
|
||||||
if (o.via.str.size != 0) {
|
if (o.via.str.size != 0) {
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
|
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
std::memcpy(&v.front(), o.via.str.ptr, o.via.str.size);
|
std::memcpy(&v.front(), o.via.str.ptr, o.via.str.size);
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@@ -95,14 +95,14 @@ struct object_with_zone<std::wstring> {
|
|||||||
o.via.array.size = size;
|
o.via.array.size = size;
|
||||||
std::wstring::const_iterator it(v.begin());
|
std::wstring::const_iterator it(v.begin());
|
||||||
do {
|
do {
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
|
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
*p = msgpack::object(*it, o.zone);
|
*p = msgpack::object(*it, o.zone);
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
++p;
|
++p;
|
||||||
++it;
|
++it;
|
||||||
} while(p < pend);
|
} while(p < pend);
|
||||||
|
@@ -33,9 +33,9 @@ inline msgpack::object_handle unpack(
|
|||||||
data, len, off, *z, obj, referenced, f, user_data, limit);
|
data, len, off, *z, obj, referenced, f, user_data, limit);
|
||||||
|
|
||||||
switch(ret) {
|
switch(ret) {
|
||||||
case msgpack::PARSE_SUCCESS:
|
case PARSE_SUCCESS:
|
||||||
return msgpack::object_handle(obj, msgpack::move(z));
|
return msgpack::object_handle(obj, msgpack::move(z));
|
||||||
case msgpack::PARSE_EXTRA_BYTES:
|
case PARSE_EXTRA_BYTES:
|
||||||
return msgpack::object_handle(obj, msgpack::move(z));
|
return msgpack::object_handle(obj, msgpack::move(z));
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@@ -84,11 +84,11 @@ inline void unpack(
|
|||||||
data, len, off, *z, obj, referenced, f, user_data, limit);
|
data, len, off, *z, obj, referenced, f, user_data, limit);
|
||||||
|
|
||||||
switch(ret) {
|
switch(ret) {
|
||||||
case msgpack::PARSE_SUCCESS:
|
case PARSE_SUCCESS:
|
||||||
result.set(obj);
|
result.set(obj);
|
||||||
result.zone() = msgpack::move(z);
|
result.zone() = msgpack::move(z);
|
||||||
return;
|
return;
|
||||||
case msgpack::PARSE_EXTRA_BYTES:
|
case PARSE_EXTRA_BYTES:
|
||||||
result.set(obj);
|
result.set(obj);
|
||||||
result.zone() = msgpack::move(z);
|
result.zone() = msgpack::move(z);
|
||||||
return;
|
return;
|
||||||
@@ -141,9 +141,9 @@ inline msgpack::object unpack(
|
|||||||
data, len, off, z, obj, referenced, f, user_data, limit);
|
data, len, off, z, obj, referenced, f, user_data, limit);
|
||||||
|
|
||||||
switch(ret) {
|
switch(ret) {
|
||||||
case msgpack::PARSE_SUCCESS:
|
case PARSE_SUCCESS:
|
||||||
return obj;
|
return obj;
|
||||||
case msgpack::PARSE_EXTRA_BYTES:
|
case PARSE_EXTRA_BYTES:
|
||||||
return obj;
|
return obj;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
@@ -1,3 +1,3 @@
|
|||||||
#define MSGPACK_VERSION_MAJOR 3
|
#define MSGPACK_VERSION_MAJOR 3
|
||||||
#define MSGPACK_VERSION_MINOR 2
|
#define MSGPACK_VERSION_MINOR 3
|
||||||
#define MSGPACK_VERSION_REVISION 1
|
#define MSGPACK_VERSION_REVISION 0
|
||||||
|
@@ -100,7 +100,7 @@ static inline void msgpack_zbuffer_free(msgpack_zbuffer* zbuf)
|
|||||||
|
|
||||||
static inline bool msgpack_zbuffer_expand(msgpack_zbuffer* zbuf)
|
static inline bool msgpack_zbuffer_expand(msgpack_zbuffer* zbuf)
|
||||||
{
|
{
|
||||||
size_t used = static_cast<size_t>(reinterpret_cast<char*>(zbuf->stream.next_out) - zbuf->data);
|
size_t used = (size_t)((char *)(zbuf->stream.next_out) - zbuf->data);
|
||||||
size_t csize = used + zbuf->stream.avail_out;
|
size_t csize = used + zbuf->stream.avail_out;
|
||||||
|
|
||||||
size_t nsize = (csize == 0) ? zbuf->init_size : csize * 2;
|
size_t nsize = (csize == 0) ? zbuf->init_size : csize * 2;
|
||||||
@@ -112,7 +112,7 @@ static inline bool msgpack_zbuffer_expand(msgpack_zbuffer* zbuf)
|
|||||||
|
|
||||||
zbuf->data = tmp;
|
zbuf->data = tmp;
|
||||||
zbuf->stream.next_out = (Bytef*)(tmp + used);
|
zbuf->stream.next_out = (Bytef*)(tmp + used);
|
||||||
zbuf->stream.avail_out = static_cast<uInt>(nsize - used);
|
zbuf->stream.avail_out = (uInt)(nsize - used);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -122,7 +122,7 @@ static inline int msgpack_zbuffer_write(void* data, const char* buf, size_t len)
|
|||||||
msgpack_zbuffer* zbuf = (msgpack_zbuffer*)data;
|
msgpack_zbuffer* zbuf = (msgpack_zbuffer*)data;
|
||||||
|
|
||||||
zbuf->stream.next_in = (Bytef*)buf;
|
zbuf->stream.next_in = (Bytef*)buf;
|
||||||
zbuf->stream.avail_in = static_cast<uInt>(len);
|
zbuf->stream.avail_in = (uInt)len;
|
||||||
|
|
||||||
while(zbuf->stream.avail_in > 0) {
|
while(zbuf->stream.avail_in > 0) {
|
||||||
if(zbuf->stream.avail_out < MSGPACK_ZBUFFER_RESERVE_SIZE) {
|
if(zbuf->stream.avail_out < MSGPACK_ZBUFFER_RESERVE_SIZE) {
|
||||||
@@ -164,7 +164,7 @@ static inline const char* msgpack_zbuffer_data(const msgpack_zbuffer* zbuf)
|
|||||||
|
|
||||||
static inline size_t msgpack_zbuffer_size(const msgpack_zbuffer* zbuf)
|
static inline size_t msgpack_zbuffer_size(const msgpack_zbuffer* zbuf)
|
||||||
{
|
{
|
||||||
return static_cast<size_t>(reinterpret_cast<char*>(zbuf->stream.next_out) - zbuf->data);
|
return (size_t)((char *)(zbuf->stream.next_out) - zbuf->data);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void msgpack_zbuffer_reset_buffer(msgpack_zbuffer* zbuf)
|
static inline void msgpack_zbuffer_reset_buffer(msgpack_zbuffer* zbuf)
|
||||||
|
@@ -1,21 +1,48 @@
|
|||||||
#!/bin/sh
|
#!/bin/bash
|
||||||
|
|
||||||
|
c_headers=(
|
||||||
|
include/msgpack.h
|
||||||
|
include/msgpack/gcc_atomic.h
|
||||||
|
include/msgpack/pack.h
|
||||||
|
include/msgpack/pack_define.h
|
||||||
|
include/msgpack/pack_template.h
|
||||||
|
include/msgpack/sbuffer.h
|
||||||
|
include/msgpack/timestamp.h
|
||||||
|
include/msgpack/unpack.h
|
||||||
|
include/msgpack/unpack_template.h
|
||||||
|
include/msgpack/util.h
|
||||||
|
include/msgpack/version.h
|
||||||
|
include/msgpack/vrefbuffer.h
|
||||||
|
)
|
||||||
|
|
||||||
|
rm -f c_headers.tmp
|
||||||
|
for hdr in ${c_headers[@]}; do
|
||||||
|
echo $hdr >> c_headers.tmp
|
||||||
|
done
|
||||||
|
|
||||||
find src -name "*.c" | sed -e 's/\s\+/\n/g' | sort > srcs.tmp
|
find src -name "*.c" | sed -e 's/\s\+/\n/g' | sort > srcs.tmp
|
||||||
find include -name "*.h" | sed -e 's/\s\+/\n/g' | sort > c_headers.tmp
|
find include -name "*.h" | grep -vFf c_headers.tmp | sed -e 's/\s\+/\n/g' | sort > c_cpp_headers.tmp
|
||||||
find include -name "*.hpp" | sed -e 's/\s\+/\n/g' | sort > cpp_headers.tmp
|
find include -name "*.hpp" | sed -e 's/\s\+/\n/g' | sort > cpp_headers.tmp
|
||||||
|
|
||||||
echo 'LIST (APPEND msgpackc_SOURCES' > Files.cmake
|
echo 'LIST (APPEND msgpackc_SOURCES' > Files.cmake
|
||||||
cat srcs.tmp | sed -e 's/^/ /g' >> Files.cmake
|
cat srcs.tmp | sed -e 's/^/ /g' >> Files.cmake
|
||||||
echo ')' >> Files.cmake
|
echo -e ')\n' >> Files.cmake
|
||||||
|
|
||||||
echo 'LIST (APPEND msgpackc_HEADERS' >> Files.cmake
|
echo '# For both C and C++ libraries
|
||||||
cat c_headers.tmp | sed -e 's/^/ /g' >> Files.cmake
|
LIST (APPEND msgpackc_HEADERS' >> Files.cmake
|
||||||
echo ')' >> Files.cmake
|
cat c_cpp_headers.tmp | sed -e 's/^/ /g' >> Files.cmake
|
||||||
|
echo -e ')\n' >> Files.cmake
|
||||||
|
|
||||||
echo 'IF (MSGPACK_ENABLE_CXX)' >> Files.cmake
|
echo 'IF (NOT MSGPACK_CXX_ONLY)
|
||||||
echo ' LIST (APPEND msgpackc_HEADERS' >> Files.cmake
|
# Only for C library
|
||||||
|
LIST (APPEND msgpackc_HEADERS' >> Files.cmake
|
||||||
|
cat c_headers.tmp | sed -e 's/^/ /g' >> Files.cmake
|
||||||
|
echo -e ' )\nENDIF ()\n' >> Files.cmake
|
||||||
|
|
||||||
|
echo 'IF (MSGPACK_ENABLE_CXX)
|
||||||
|
# Only for C++ library
|
||||||
|
LIST (APPEND msgpackc_HEADERS' >> Files.cmake
|
||||||
cat cpp_headers.tmp | sed -e 's/^/ /g' >> Files.cmake
|
cat cpp_headers.tmp | sed -e 's/^/ /g' >> Files.cmake
|
||||||
echo ' )' >> Files.cmake
|
echo -e ' )\nENDIF ()' >> Files.cmake
|
||||||
echo 'ENDIF ()' >> Files.cmake
|
|
||||||
|
|
||||||
rm -f srcs.tmp c_headers.tmp cpp_headers.tmp
|
rm -f srcs.tmp c_headers.tmp cpp_headers.tmp c_cpp_headers.tmp
|
||||||
|
@@ -25,6 +25,12 @@ bool msgpack_vrefbuffer_init(msgpack_vrefbuffer* vbuf,
|
|||||||
struct iovec* array;
|
struct iovec* array;
|
||||||
msgpack_vrefbuffer_chunk* chunk;
|
msgpack_vrefbuffer_chunk* chunk;
|
||||||
|
|
||||||
|
if (ref_size == 0) {
|
||||||
|
ref_size = MSGPACK_VREFBUFFER_REF_SIZE;
|
||||||
|
}
|
||||||
|
if(chunk_size == 0) {
|
||||||
|
chunk_size = MSGPACK_VREFBUFFER_CHUNK_SIZE;
|
||||||
|
}
|
||||||
vbuf->chunk_size = chunk_size;
|
vbuf->chunk_size = chunk_size;
|
||||||
vbuf->ref_size =
|
vbuf->ref_size =
|
||||||
ref_size > MSGPACK_PACKER_MAX_BUFFER_SIZE + 1 ?
|
ref_size > MSGPACK_PACKER_MAX_BUFFER_SIZE + 1 ?
|
||||||
|
@@ -7,73 +7,85 @@ INCLUDE_DIRECTORIES (
|
|||||||
${ZLIB_INCLUDE_DIRS}
|
${ZLIB_INCLUDE_DIRS}
|
||||||
)
|
)
|
||||||
|
|
||||||
LIST (APPEND check_PROGRAMS
|
SET (tests_C
|
||||||
array_ref.cpp
|
buffer_c.cpp
|
||||||
buffer.cpp
|
|
||||||
carray.cpp
|
|
||||||
cases.cpp
|
|
||||||
convert.cpp
|
|
||||||
fixint.cpp
|
|
||||||
fixint_c.cpp
|
fixint_c.cpp
|
||||||
inc_adaptor_define.cpp
|
|
||||||
json.cpp
|
|
||||||
limit.cpp
|
|
||||||
msgpack_basic.cpp
|
|
||||||
msgpack_c.cpp
|
msgpack_c.cpp
|
||||||
msgpack_container.cpp
|
|
||||||
msgpack_stream.cpp
|
|
||||||
msgpack_tuple.cpp
|
|
||||||
msgpack_vref.cpp
|
|
||||||
object.cpp
|
|
||||||
object_with_zone.cpp
|
|
||||||
pack_unpack.cpp
|
|
||||||
pack_unpack_c.cpp
|
pack_unpack_c.cpp
|
||||||
raw.cpp
|
|
||||||
reference.cpp
|
|
||||||
size_equal_only.cpp
|
|
||||||
streaming.cpp
|
|
||||||
streaming_c.cpp
|
streaming_c.cpp
|
||||||
user_class.cpp
|
|
||||||
version.cpp
|
|
||||||
visitor.cpp
|
|
||||||
zone.cpp
|
|
||||||
)
|
)
|
||||||
|
|
||||||
IF (MSGPACK_BOOST)
|
IF (NOT MSGPACK_CXX_ONLY)
|
||||||
LIST (APPEND check_PROGRAMS
|
LIST (APPEND check_PROGRAMS
|
||||||
boost_fusion.cpp
|
${tests_C}
|
||||||
boost_variant.cpp
|
|
||||||
boost_optional.cpp
|
|
||||||
boost_string_ref.cpp
|
|
||||||
boost_string_view.cpp
|
|
||||||
)
|
)
|
||||||
ENDIF ()
|
ENDIF ()
|
||||||
|
|
||||||
IF (MSGPACK_USE_X3_PARSE)
|
IF (MSGPACK_ENABLE_CXX)
|
||||||
LIST (APPEND check_PROGRAMS
|
LIST (APPEND check_PROGRAMS
|
||||||
msgpack_x3_parse.cpp
|
array_ref.cpp
|
||||||
|
buffer.cpp
|
||||||
|
carray.cpp
|
||||||
|
cases.cpp
|
||||||
|
convert.cpp
|
||||||
|
fixint.cpp
|
||||||
|
inc_adaptor_define.cpp
|
||||||
|
json.cpp
|
||||||
|
limit.cpp
|
||||||
|
msgpack_basic.cpp
|
||||||
|
msgpack_container.cpp
|
||||||
|
msgpack_stream.cpp
|
||||||
|
msgpack_tuple.cpp
|
||||||
|
msgpack_vref.cpp
|
||||||
|
object.cpp
|
||||||
|
object_with_zone.cpp
|
||||||
|
pack_unpack.cpp
|
||||||
|
raw.cpp
|
||||||
|
reference.cpp
|
||||||
|
size_equal_only.cpp
|
||||||
|
streaming.cpp
|
||||||
|
user_class.cpp
|
||||||
|
version.cpp
|
||||||
|
visitor.cpp
|
||||||
|
zone.cpp
|
||||||
)
|
)
|
||||||
ENDIF ()
|
|
||||||
|
|
||||||
IF (MSGPACK_CXX11)
|
IF (MSGPACK_BOOST)
|
||||||
LIST (APPEND check_PROGRAMS
|
LIST (APPEND check_PROGRAMS
|
||||||
iterator_cpp11.cpp
|
boost_fusion.cpp
|
||||||
msgpack_cpp11.cpp
|
boost_variant.cpp
|
||||||
reference_cpp11.cpp
|
boost_optional.cpp
|
||||||
reference_wrapper_cpp11.cpp
|
boost_string_ref.cpp
|
||||||
shared_ptr_cpp11.cpp
|
boost_string_view.cpp
|
||||||
unique_ptr_cpp11.cpp
|
)
|
||||||
|
ENDIF ()
|
||||||
|
|
||||||
# fuzzers are cpp11 only
|
IF (MSGPACK_USE_X3_PARSE)
|
||||||
fuzz_unpack_pack_fuzzer_cpp11.cpp
|
LIST (APPEND check_PROGRAMS
|
||||||
)
|
msgpack_x3_parse.cpp
|
||||||
ENDIF ()
|
)
|
||||||
|
ENDIF ()
|
||||||
|
|
||||||
IF (MSGPACK_CXX17)
|
IF (MSGPACK_CXX11 OR MSGPACK_CXX17)
|
||||||
LIST (APPEND check_PROGRAMS
|
LIST (APPEND check_PROGRAMS
|
||||||
msgpack_cpp17.cpp
|
iterator_cpp11.cpp
|
||||||
)
|
msgpack_cpp11.cpp
|
||||||
ENDIF ()
|
reference_cpp11.cpp
|
||||||
|
reference_wrapper_cpp11.cpp
|
||||||
|
shared_ptr_cpp11.cpp
|
||||||
|
unique_ptr_cpp11.cpp
|
||||||
|
|
||||||
|
# fuzzers are cpp11 only
|
||||||
|
fuzz_unpack_pack_fuzzer_cpp11.cpp
|
||||||
|
)
|
||||||
|
ENDIF ()
|
||||||
|
|
||||||
|
IF (MSGPACK_CXX17)
|
||||||
|
LIST (APPEND check_PROGRAMS
|
||||||
|
msgpack_cpp17.cpp
|
||||||
|
)
|
||||||
|
ENDIF ()
|
||||||
|
ENDIF (MSGPACK_ENABLE_CXX)
|
||||||
|
|
||||||
FOREACH (source_file ${check_PROGRAMS})
|
FOREACH (source_file ${check_PROGRAMS})
|
||||||
GET_FILENAME_COMPONENT (source_file_we ${source_file} NAME_WE)
|
GET_FILENAME_COMPONENT (source_file_we ${source_file} NAME_WE)
|
||||||
@@ -81,8 +93,16 @@ FOREACH (source_file ${check_PROGRAMS})
|
|||||||
${source_file_we}
|
${source_file_we}
|
||||||
${source_file}
|
${source_file}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
LIST (FIND tests_C ${source_file} idx)
|
||||||
|
IF (idx GREATER -1)
|
||||||
|
SET (link_target msgpackc)
|
||||||
|
ELSE ()
|
||||||
|
SET (link_target msgpackc-cxx)
|
||||||
|
ENDIF ()
|
||||||
|
|
||||||
TARGET_LINK_LIBRARIES (${source_file_we}
|
TARGET_LINK_LIBRARIES (${source_file_we}
|
||||||
msgpackc
|
${link_target}
|
||||||
${GTEST_BOTH_LIBRARIES}
|
${GTEST_BOTH_LIBRARIES}
|
||||||
${ZLIB_LIBRARIES}
|
${ZLIB_LIBRARIES}
|
||||||
${CMAKE_THREAD_LIBS_INIT}
|
${CMAKE_THREAD_LIBS_INIT}
|
||||||
@@ -96,20 +116,22 @@ FOREACH (source_file ${check_PROGRAMS})
|
|||||||
ENDIF ()
|
ENDIF ()
|
||||||
|
|
||||||
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
|
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
|
||||||
IF (CMAKE_CXX_FLAGS MATCHES "/W[0-4] /WX")
|
IF (CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
|
||||||
STRING(REGEX REPLACE "/W[0-4]" "/W3 /WX" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
STRING(REGEX REPLACE "/W[0-4]" "/W3 /WX" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
||||||
ELSE ()
|
ELSE ()
|
||||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W3")
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W3 /WX")
|
||||||
ENDIF ()
|
ENDIF ()
|
||||||
ENDIF ()
|
ENDIF ()
|
||||||
ENDFOREACH ()
|
ENDFOREACH ()
|
||||||
|
|
||||||
ADD_EXECUTABLE (
|
IF (MSGPACK_ENABLE_CXX)
|
||||||
multi_file
|
ADD_EXECUTABLE (
|
||||||
multi_file1.cpp multi_file2.cpp
|
multi_file
|
||||||
)
|
multi_file1.cpp multi_file2.cpp
|
||||||
TARGET_INCLUDE_DIRECTORIES (multi_file
|
)
|
||||||
PRIVATE
|
TARGET_INCLUDE_DIRECTORIES (multi_file
|
||||||
$<TARGET_PROPERTY:msgpackc,INTERFACE_INCLUDE_DIRECTORIES>
|
PRIVATE
|
||||||
)
|
$<TARGET_PROPERTY:msgpackc-cxx,INTERFACE_INCLUDE_DIRECTORIES>
|
||||||
ADD_TEST (multi_file multi_file)
|
)
|
||||||
|
ADD_TEST (multi_file multi_file)
|
||||||
|
ENDIF ()
|
||||||
|
@@ -3,12 +3,16 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wconversion"
|
#pragma GCC diagnostic ignored "-Wconversion"
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
@@ -3,12 +3,16 @@
|
|||||||
#include <iterator>
|
#include <iterator>
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wconversion"
|
#pragma GCC diagnostic ignored "-Wconversion"
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
@@ -2,12 +2,16 @@
|
|||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <iterator>
|
#include <iterator>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wconversion"
|
#pragma GCC diagnostic ignored "-Wconversion"
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
|
@@ -2,13 +2,16 @@
|
|||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <iterator>
|
#include <iterator>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wconversion"
|
#pragma GCC diagnostic ignored "-Wconversion"
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
@@ -2,12 +2,16 @@
|
|||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <iterator>
|
#include <iterator>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wconversion"
|
#pragma GCC diagnostic ignored "-Wconversion"
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
@@ -3,12 +3,16 @@
|
|||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <iterator>
|
#include <iterator>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wconversion"
|
#pragma GCC diagnostic ignored "-Wconversion"
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
@@ -1,15 +1,17 @@
|
|||||||
#include <msgpack.hpp>
|
#include <msgpack.hpp>
|
||||||
#include <msgpack/fbuffer.hpp>
|
#include <msgpack/fbuffer.hpp>
|
||||||
#include <msgpack/fbuffer.h>
|
|
||||||
#include <msgpack/zbuffer.hpp>
|
#include <msgpack/zbuffer.hpp>
|
||||||
#include <msgpack/zbuffer.h>
|
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wconversion"
|
#pragma GCC diagnostic ignored "-Wconversion"
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
@@ -69,7 +71,6 @@ TEST(buffer, vrefbuffer)
|
|||||||
EXPECT_TRUE( memcmp(sbuf.data(), "aaa", 3) == 0 );
|
EXPECT_TRUE( memcmp(sbuf.data(), "aaa", 3) == 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TEST(buffer, zbuffer)
|
TEST(buffer, zbuffer)
|
||||||
{
|
{
|
||||||
msgpack::zbuffer zbuf;
|
msgpack::zbuffer zbuf;
|
||||||
@@ -81,22 +82,6 @@ TEST(buffer, zbuffer)
|
|||||||
zbuf.flush();
|
zbuf.flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TEST(buffer, zbuffer_c)
|
|
||||||
{
|
|
||||||
msgpack_zbuffer zbuf;
|
|
||||||
EXPECT_TRUE(msgpack_zbuffer_init(&zbuf, 1, MSGPACK_ZBUFFER_INIT_SIZE));
|
|
||||||
EXPECT_EQ(0, msgpack_zbuffer_write(&zbuf, "a", 1));
|
|
||||||
EXPECT_EQ(0, msgpack_zbuffer_write(&zbuf, "a", 1));
|
|
||||||
EXPECT_EQ(0, msgpack_zbuffer_write(&zbuf, "a", 1));
|
|
||||||
EXPECT_EQ(0, msgpack_zbuffer_write(&zbuf, "", 0));
|
|
||||||
|
|
||||||
EXPECT_TRUE(msgpack_zbuffer_flush(&zbuf) != NULL);
|
|
||||||
|
|
||||||
msgpack_zbuffer_destroy(&zbuf);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
TEST(buffer, fbuffer)
|
TEST(buffer, fbuffer)
|
||||||
{
|
{
|
||||||
#if defined(_MSC_VER)
|
#if defined(_MSC_VER)
|
||||||
@@ -124,31 +109,3 @@ TEST(buffer, fbuffer)
|
|||||||
EXPECT_EQ(EOF, fgetc(file));
|
EXPECT_EQ(EOF, fgetc(file));
|
||||||
fclose(file);
|
fclose(file);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TEST(buffer, fbuffer_c)
|
|
||||||
{
|
|
||||||
#if defined(_MSC_VER)
|
|
||||||
FILE* file;
|
|
||||||
tmpfile_s(&file);
|
|
||||||
#else // defined(_MSC_VER)
|
|
||||||
FILE* file = tmpfile();
|
|
||||||
#endif // defined(_MSC_VER)
|
|
||||||
|
|
||||||
void* fbuf = (void*)file;
|
|
||||||
|
|
||||||
EXPECT_TRUE( file != NULL );
|
|
||||||
EXPECT_EQ(0, msgpack_fbuffer_write(fbuf, "a", 1));
|
|
||||||
EXPECT_EQ(0, msgpack_fbuffer_write(fbuf, "a", 1));
|
|
||||||
EXPECT_EQ(0, msgpack_fbuffer_write(fbuf, "a", 1));
|
|
||||||
|
|
||||||
fflush(file);
|
|
||||||
rewind(file);
|
|
||||||
for (size_t i=0; i < 3; ++i) {
|
|
||||||
int ch = fgetc(file);
|
|
||||||
EXPECT_TRUE(ch != EOF);
|
|
||||||
EXPECT_EQ('a', (char) ch);
|
|
||||||
}
|
|
||||||
EXPECT_EQ(EOF, fgetc(file));
|
|
||||||
fclose(file);
|
|
||||||
}
|
|
||||||
|
148
test/buffer_c.cpp
Normal file
148
test/buffer_c.cpp
Normal file
@@ -0,0 +1,148 @@
|
|||||||
|
#include <msgpack/fbuffer.h>
|
||||||
|
#include <msgpack/zbuffer.h>
|
||||||
|
#include <msgpack/sbuffer.h>
|
||||||
|
#include <msgpack/vrefbuffer.h>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
|
#pragma GCC diagnostic push
|
||||||
|
#pragma GCC diagnostic ignored "-Wconversion"
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
|
#pragma GCC diagnostic pop
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#if defined(unix) || defined(__unix) || defined(__linux__) || defined(__APPLE__) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(__QNX__) || defined(__QNXTO__) || defined(__HAIKU__)
|
||||||
|
#define HAVE_SYS_UIO_H 1
|
||||||
|
#else
|
||||||
|
#define HAVE_SYS_UIO_H 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
TEST(buffer, zbuffer_c)
|
||||||
|
{
|
||||||
|
msgpack_zbuffer zbuf;
|
||||||
|
EXPECT_TRUE(msgpack_zbuffer_init(&zbuf, 1, MSGPACK_ZBUFFER_INIT_SIZE));
|
||||||
|
EXPECT_EQ(0, msgpack_zbuffer_write(&zbuf, "a", 1));
|
||||||
|
EXPECT_EQ(0, msgpack_zbuffer_write(&zbuf, "a", 1));
|
||||||
|
EXPECT_EQ(0, msgpack_zbuffer_write(&zbuf, "a", 1));
|
||||||
|
EXPECT_EQ(0, msgpack_zbuffer_write(&zbuf, "", 0));
|
||||||
|
|
||||||
|
EXPECT_TRUE(msgpack_zbuffer_flush(&zbuf) != NULL);
|
||||||
|
|
||||||
|
msgpack_zbuffer_destroy(&zbuf);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(buffer, fbuffer_c)
|
||||||
|
{
|
||||||
|
#if defined(_MSC_VER)
|
||||||
|
FILE* file;
|
||||||
|
tmpfile_s(&file);
|
||||||
|
#else // defined(_MSC_VER)
|
||||||
|
FILE* file = tmpfile();
|
||||||
|
#endif // defined(_MSC_VER)
|
||||||
|
|
||||||
|
void* fbuf = (void*)file;
|
||||||
|
|
||||||
|
EXPECT_TRUE( file != NULL );
|
||||||
|
EXPECT_EQ(0, msgpack_fbuffer_write(fbuf, "a", 1));
|
||||||
|
EXPECT_EQ(0, msgpack_fbuffer_write(fbuf, "a", 1));
|
||||||
|
EXPECT_EQ(0, msgpack_fbuffer_write(fbuf, "a", 1));
|
||||||
|
|
||||||
|
fflush(file);
|
||||||
|
rewind(file);
|
||||||
|
for (size_t i=0; i < 3; ++i) {
|
||||||
|
int ch = fgetc(file);
|
||||||
|
EXPECT_TRUE(ch != EOF);
|
||||||
|
EXPECT_EQ('a', (char) ch);
|
||||||
|
}
|
||||||
|
EXPECT_EQ(EOF, fgetc(file));
|
||||||
|
fclose(file);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(buffer, sbuffer_c)
|
||||||
|
{
|
||||||
|
msgpack_sbuffer *sbuf;
|
||||||
|
char *data;
|
||||||
|
|
||||||
|
sbuf = msgpack_sbuffer_new();
|
||||||
|
EXPECT_TRUE(sbuf != NULL);
|
||||||
|
EXPECT_EQ(0, msgpack_sbuffer_write(sbuf, "a", 1));
|
||||||
|
EXPECT_EQ(0, msgpack_sbuffer_write(sbuf, "b", 1));
|
||||||
|
EXPECT_EQ(0, msgpack_sbuffer_write(sbuf, "c", 1));
|
||||||
|
EXPECT_EQ(0, msgpack_sbuffer_write(sbuf, "", 0));
|
||||||
|
EXPECT_EQ(3U, sbuf->size);
|
||||||
|
EXPECT_EQ(0, memcmp(sbuf->data, "abc", 3));
|
||||||
|
data = msgpack_sbuffer_release(sbuf);
|
||||||
|
EXPECT_EQ(0, memcmp(data, "abc", 3));
|
||||||
|
EXPECT_EQ(0U, sbuf->size);
|
||||||
|
EXPECT_TRUE(sbuf->data == NULL);
|
||||||
|
|
||||||
|
free(data);
|
||||||
|
msgpack_sbuffer_free(sbuf);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(buffer, vrefbuffer_c)
|
||||||
|
{
|
||||||
|
const char *raw = "I was about to sail away in a junk,"
|
||||||
|
"When suddenly I heard"
|
||||||
|
"The sound of stamping and singing on the bank--"
|
||||||
|
"It was you and your friends come to bid me farewell."
|
||||||
|
"The Peach Flower Lake is a thousand fathoms deep,"
|
||||||
|
"But it cannot compare, O Wang Lun,"
|
||||||
|
"With the depth of your love for me.";
|
||||||
|
const size_t rawlen = strlen(raw);
|
||||||
|
msgpack_vrefbuffer *vbuf;
|
||||||
|
const int ref_size = 24, chunk_size = 128;
|
||||||
|
size_t slices[] = {0, 9, 10,
|
||||||
|
MSGPACK_VREFBUFFER_REF_SIZE,
|
||||||
|
MSGPACK_VREFBUFFER_REF_SIZE + 1,
|
||||||
|
ref_size, chunk_size + 1};
|
||||||
|
size_t iovcnt;
|
||||||
|
const iovec *iov;
|
||||||
|
size_t len = 0, i;
|
||||||
|
char *buf;
|
||||||
|
|
||||||
|
vbuf = msgpack_vrefbuffer_new(ref_size, 0);
|
||||||
|
for (i = 0; i < sizeof(slices) / sizeof(slices[0]); i++) {
|
||||||
|
msgpack_vrefbuffer_write(vbuf, raw + len, slices[i]);
|
||||||
|
len += slices[i];
|
||||||
|
}
|
||||||
|
EXPECT_LT(len, rawlen);
|
||||||
|
iov = msgpack_vrefbuffer_vec(vbuf);
|
||||||
|
iovcnt = msgpack_vrefbuffer_veclen(vbuf);
|
||||||
|
|
||||||
|
buf = (char *)malloc(rawlen);
|
||||||
|
#if HAVE_SYS_UIO_H
|
||||||
|
{
|
||||||
|
int fd;
|
||||||
|
char filename[] = "/tmp/mp.XXXXXX";
|
||||||
|
|
||||||
|
fd = mkstemp(filename);
|
||||||
|
EXPECT_LT(0, fd);
|
||||||
|
writev(fd, iov, (int)iovcnt);
|
||||||
|
len = (size_t)lseek(fd, 0, SEEK_END);
|
||||||
|
lseek(fd, 0, SEEK_SET);
|
||||||
|
read(fd, buf, len);
|
||||||
|
EXPECT_EQ(0, memcmp(buf, raw, len));
|
||||||
|
close(fd);
|
||||||
|
unlink(filename);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
{
|
||||||
|
len = 0;
|
||||||
|
for (i = 0; i < iovcnt; i++)
|
||||||
|
{
|
||||||
|
EXPECT_LT(len, rawlen);
|
||||||
|
memcpy(buf + len, iov[i].iov_base, iov[i].iov_len);
|
||||||
|
len += iov[i].iov_len;
|
||||||
|
}
|
||||||
|
EXPECT_EQ(0, memcmp(buf, raw, len));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
free(buf);
|
||||||
|
msgpack_vrefbuffer_free(vbuf);
|
||||||
|
}
|
@@ -1,11 +1,15 @@
|
|||||||
#include <msgpack.hpp>
|
#include <msgpack.hpp>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wconversion"
|
#pragma GCC diagnostic ignored "-Wconversion"
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
|
||||||
|
@@ -1,12 +1,16 @@
|
|||||||
#include <msgpack.hpp>
|
#include <msgpack.hpp>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wconversion"
|
#pragma GCC diagnostic ignored "-Wconversion"
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
static void feed_file(msgpack::unpacker& pac, const char* path)
|
static void feed_file(msgpack::unpacker& pac, const char* path)
|
||||||
{
|
{
|
||||||
@@ -26,10 +30,10 @@ static void feed_file(msgpack::unpacker& pac, const char* path)
|
|||||||
|
|
||||||
TEST(cases, format)
|
TEST(cases, format)
|
||||||
{
|
{
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
|
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
msgpack::unpacker pac;
|
msgpack::unpacker pac;
|
||||||
msgpack::unpacker pac_compact;
|
msgpack::unpacker pac_compact;
|
||||||
|
|
||||||
@@ -44,7 +48,7 @@ TEST(cases, format)
|
|||||||
}
|
}
|
||||||
|
|
||||||
EXPECT_FALSE( pac_compact.next(oh) );
|
EXPECT_FALSE( pac_compact.next(oh) );
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
}
|
}
|
||||||
|
@@ -1,11 +1,15 @@
|
|||||||
#include <msgpack.hpp>
|
#include <msgpack.hpp>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wconversion"
|
#pragma GCC diagnostic ignored "-Wconversion"
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
class enum_member {
|
class enum_member {
|
||||||
public:
|
public:
|
||||||
@@ -99,14 +103,14 @@ TEST(convert, return_value_ptr)
|
|||||||
|
|
||||||
int i;
|
int i;
|
||||||
// obsolete
|
// obsolete
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
||||||
EXPECT_EQ(obj.convert(&i), &i);
|
EXPECT_EQ(obj.convert(&i), &i);
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
||||||
EXPECT_EQ(1, i);
|
EXPECT_EQ(1, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,11 +1,15 @@
|
|||||||
#include <msgpack.hpp>
|
#include <msgpack.hpp>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wconversion"
|
#pragma GCC diagnostic ignored "-Wconversion"
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
void check_size(size_t size) {
|
void check_size(size_t size) {
|
||||||
|
@@ -1,11 +1,15 @@
|
|||||||
#include <msgpack.h>
|
#include <msgpack.h>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wconversion"
|
#pragma GCC diagnostic ignored "-Wconversion"
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
TEST(fixint, size)
|
TEST(fixint, size)
|
||||||
{
|
{
|
||||||
|
@@ -1,9 +1,13 @@
|
|||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wconversion"
|
#pragma GCC diagnostic ignored "-Wconversion"
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include "../fuzz/unpack_pack_fuzzer.cpp"
|
#include "../fuzz/unpack_pack_fuzzer.cpp"
|
||||||
|
|
||||||
|
@@ -1,11 +1,15 @@
|
|||||||
#include <msgpack.hpp>
|
#include <msgpack.hpp>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wconversion"
|
#pragma GCC diagnostic ignored "-Wconversion"
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
@@ -2,12 +2,16 @@
|
|||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wconversion"
|
#pragma GCC diagnostic ignored "-Wconversion"
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
TEST(json, basic_elements)
|
TEST(json, basic_elements)
|
||||||
{
|
{
|
||||||
|
@@ -1,11 +1,15 @@
|
|||||||
#include <msgpack.hpp>
|
#include <msgpack.hpp>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wconversion"
|
#pragma GCC diagnostic ignored "-Wconversion"
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
|
||||||
@@ -525,15 +529,15 @@ TEST(limit, unpack_array_over_off_ref_pointer)
|
|||||||
bool ref;
|
bool ref;
|
||||||
std::size_t off = 0;
|
std::size_t off = 0;
|
||||||
msgpack::object_handle unp;
|
msgpack::object_handle unp;
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
||||||
msgpack::unpack(&unp, ss.str().c_str(), ss.str().size(), &off, &ref, MSGPACK_NULLPTR, MSGPACK_NULLPTR,
|
msgpack::unpack(&unp, ss.str().c_str(), ss.str().size(), &off, &ref, MSGPACK_NULLPTR, MSGPACK_NULLPTR,
|
||||||
msgpack::unpack_limit(2, 0, 0, 0, 0));
|
msgpack::unpack_limit(2, 0, 0, 0, 0));
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
||||||
EXPECT_TRUE(false);
|
EXPECT_TRUE(false);
|
||||||
}
|
}
|
||||||
catch(msgpack::array_size_overflow const&) {
|
catch(msgpack::array_size_overflow const&) {
|
||||||
|
@@ -9,12 +9,16 @@
|
|||||||
#include <list>
|
#include <list>
|
||||||
#include <limits>
|
#include <limits>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wconversion"
|
#pragma GCC diagnostic ignored "-Wconversion"
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#if defined(_MSC_VER) || defined(__MINGW32__)
|
#if defined(_MSC_VER) || defined(__MINGW32__)
|
||||||
#define msgpack_rand() ((double)rand() / RAND_MAX)
|
#define msgpack_rand() ((double)rand() / RAND_MAX)
|
||||||
|
@@ -4,12 +4,16 @@
|
|||||||
#include <vector>
|
#include <vector>
|
||||||
#include <limits>
|
#include <limits>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wconversion"
|
#pragma GCC diagnostic ignored "-Wconversion"
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#if defined(_MSC_VER) || defined(__MINGW32__)
|
#if defined(_MSC_VER) || defined(__MINGW32__)
|
||||||
#define msgpack_rand() ((double)rand() / RAND_MAX)
|
#define msgpack_rand() ((double)rand() / RAND_MAX)
|
||||||
@@ -1410,3 +1414,158 @@ TEST(MSGPACKC, object_bin_print_buffer_overflow) {
|
|||||||
EXPECT_EQ(6, ret);
|
EXPECT_EQ(6, ret);
|
||||||
EXPECT_STREQ("\"test\"", buffer);
|
EXPECT_STREQ("\"test\"", buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* test for vrefbuffer */
|
||||||
|
#define GEN_TEST_VREFBUFFER_PREPARE(...) \
|
||||||
|
msgpack_vrefbuffer vbuf; \
|
||||||
|
msgpack_packer pk; \
|
||||||
|
const iovec *iov; \
|
||||||
|
size_t iovcnt, len = 0, i; \
|
||||||
|
char buf[1024]; \
|
||||||
|
msgpack_vrefbuffer_init(&vbuf, 0, 0); \
|
||||||
|
msgpack_packer_init(&pk, &vbuf, msgpack_vrefbuffer_write); \
|
||||||
|
__VA_ARGS__; \
|
||||||
|
iov = msgpack_vrefbuffer_vec(&vbuf); \
|
||||||
|
iovcnt = msgpack_vrefbuffer_veclen(&vbuf); \
|
||||||
|
for (i = 0; i < iovcnt; i++) { \
|
||||||
|
memcpy(buf + len, iov[i].iov_base, iov[i].iov_len); \
|
||||||
|
len += iov[i].iov_len; \
|
||||||
|
} \
|
||||||
|
msgpack_vrefbuffer_destroy(&vbuf)
|
||||||
|
|
||||||
|
#define GEN_TEST_VREFBUFFER_CHECK(...) \
|
||||||
|
msgpack_object obj; \
|
||||||
|
msgpack_unpack_return ret; \
|
||||||
|
msgpack_zone z; \
|
||||||
|
msgpack_zone_init(&z, 2048); \
|
||||||
|
ret = msgpack_unpack(buf, len, NULL, &z, &obj); \
|
||||||
|
EXPECT_EQ(MSGPACK_UNPACK_SUCCESS, ret); \
|
||||||
|
__VA_ARGS__; \
|
||||||
|
msgpack_zone_destroy(&z)
|
||||||
|
|
||||||
|
TEST(buffer, vrefbuffer_uint8)
|
||||||
|
{
|
||||||
|
GEN_TEST_VREFBUFFER_PREPARE(
|
||||||
|
msgpack_pack_uint8(&pk, 32));
|
||||||
|
GEN_TEST_VREFBUFFER_CHECK(
|
||||||
|
EXPECT_EQ(MSGPACK_OBJECT_POSITIVE_INTEGER, obj.type);
|
||||||
|
EXPECT_EQ(32U, obj.via.u64));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(buffer, vrefbuffer_int8)
|
||||||
|
{
|
||||||
|
GEN_TEST_VREFBUFFER_PREPARE(
|
||||||
|
msgpack_pack_int8(&pk, -32));
|
||||||
|
GEN_TEST_VREFBUFFER_CHECK(
|
||||||
|
EXPECT_EQ(MSGPACK_OBJECT_NEGATIVE_INTEGER, obj.type);
|
||||||
|
EXPECT_EQ(-32, obj.via.i64));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(buffer, vrefbuffer_float32)
|
||||||
|
{
|
||||||
|
GEN_TEST_VREFBUFFER_PREPARE(
|
||||||
|
msgpack_pack_float(&pk, 1.0));
|
||||||
|
GEN_TEST_VREFBUFFER_CHECK(
|
||||||
|
EXPECT_EQ(MSGPACK_OBJECT_FLOAT32, obj.type);
|
||||||
|
EXPECT_EQ(1.0, obj.via.f64));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(buffer, vrefbuffer_float64)
|
||||||
|
{
|
||||||
|
GEN_TEST_VREFBUFFER_PREPARE(
|
||||||
|
msgpack_pack_double(&pk, 1.0));
|
||||||
|
GEN_TEST_VREFBUFFER_CHECK(
|
||||||
|
EXPECT_EQ(MSGPACK_OBJECT_FLOAT64, obj.type);
|
||||||
|
EXPECT_EQ(1.0, obj.via.f64));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(buffer, vrefbuffer_nil)
|
||||||
|
{
|
||||||
|
GEN_TEST_VREFBUFFER_PREPARE(
|
||||||
|
msgpack_pack_nil(&pk));
|
||||||
|
GEN_TEST_VREFBUFFER_CHECK(
|
||||||
|
EXPECT_EQ(MSGPACK_OBJECT_NIL, obj.type));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(buffer, vrefbuffer_false)
|
||||||
|
{
|
||||||
|
GEN_TEST_VREFBUFFER_PREPARE(
|
||||||
|
msgpack_pack_false(&pk));
|
||||||
|
GEN_TEST_VREFBUFFER_CHECK(
|
||||||
|
EXPECT_EQ(MSGPACK_OBJECT_BOOLEAN, obj.type);
|
||||||
|
EXPECT_FALSE(obj.via.boolean));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(buffer, vrefbuffer_true)
|
||||||
|
{
|
||||||
|
GEN_TEST_VREFBUFFER_PREPARE(
|
||||||
|
msgpack_pack_true(&pk));
|
||||||
|
GEN_TEST_VREFBUFFER_CHECK(
|
||||||
|
EXPECT_EQ(MSGPACK_OBJECT_BOOLEAN, obj.type);
|
||||||
|
EXPECT_TRUE(obj.via.boolean));
|
||||||
|
}
|
||||||
|
|
||||||
|
#define TEST_VBUF_RAW_LEN 30U
|
||||||
|
char test_vbuf_raw[TEST_VBUF_RAW_LEN] = "frsyuki";
|
||||||
|
|
||||||
|
TEST(buffer, vrefbuffer_str)
|
||||||
|
{
|
||||||
|
GEN_TEST_VREFBUFFER_PREPARE(
|
||||||
|
msgpack_pack_str(&pk, TEST_VBUF_RAW_LEN);
|
||||||
|
msgpack_pack_str_body(&pk, test_vbuf_raw, TEST_VBUF_RAW_LEN));
|
||||||
|
GEN_TEST_VREFBUFFER_CHECK(
|
||||||
|
EXPECT_EQ(MSGPACK_OBJECT_STR, obj.type);
|
||||||
|
EXPECT_EQ(TEST_VBUF_RAW_LEN, obj.via.str.size);
|
||||||
|
EXPECT_EQ(0, memcmp(test_vbuf_raw, obj.via.str.ptr, 30)));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(buffer, vrefbuffer_bin)
|
||||||
|
{
|
||||||
|
GEN_TEST_VREFBUFFER_PREPARE(
|
||||||
|
msgpack_pack_bin(&pk, TEST_VBUF_RAW_LEN);
|
||||||
|
msgpack_pack_bin_body(&pk, test_vbuf_raw, TEST_VBUF_RAW_LEN));
|
||||||
|
GEN_TEST_VREFBUFFER_CHECK(
|
||||||
|
EXPECT_EQ(TEST_VBUF_RAW_LEN, obj.via.bin.size);
|
||||||
|
EXPECT_EQ(0, memcmp(test_vbuf_raw, obj.via.bin.ptr, TEST_VBUF_RAW_LEN)));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(buffer, vrefbuffer_ext)
|
||||||
|
{
|
||||||
|
GEN_TEST_VREFBUFFER_PREPARE(
|
||||||
|
msgpack_pack_ext(&pk, TEST_VBUF_RAW_LEN, 127);
|
||||||
|
msgpack_pack_ext_body(&pk, test_vbuf_raw, TEST_VBUF_RAW_LEN));
|
||||||
|
GEN_TEST_VREFBUFFER_CHECK(
|
||||||
|
EXPECT_EQ(MSGPACK_OBJECT_EXT, obj.type);
|
||||||
|
EXPECT_EQ(TEST_VBUF_RAW_LEN, obj.via.ext.size);
|
||||||
|
EXPECT_EQ(0, memcmp(test_vbuf_raw, obj.via.ext.ptr, TEST_VBUF_RAW_LEN)));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(buffer, vrefbuffer_array)
|
||||||
|
{
|
||||||
|
GEN_TEST_VREFBUFFER_PREPARE(
|
||||||
|
msgpack_pack_array(&pk, 2);
|
||||||
|
msgpack_pack_int(&pk, 3);
|
||||||
|
msgpack_pack_int(&pk, 4));
|
||||||
|
GEN_TEST_VREFBUFFER_CHECK(
|
||||||
|
EXPECT_EQ(MSGPACK_OBJECT_ARRAY, obj.type);
|
||||||
|
EXPECT_EQ(2U, obj.via.array.size);
|
||||||
|
EXPECT_EQ(MSGPACK_OBJECT_POSITIVE_INTEGER, obj.via.array.ptr[0].type);
|
||||||
|
EXPECT_EQ(3U, obj.via.array.ptr[0].via.u64);
|
||||||
|
EXPECT_EQ(MSGPACK_OBJECT_POSITIVE_INTEGER, obj.via.array.ptr[1].type);
|
||||||
|
EXPECT_EQ(4U, obj.via.array.ptr[1].via.u64));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(buffer, vrefbuffer_map)
|
||||||
|
{
|
||||||
|
GEN_TEST_VREFBUFFER_PREPARE(
|
||||||
|
msgpack_pack_map(&pk, 1);
|
||||||
|
msgpack_pack_int(&pk, 2);
|
||||||
|
msgpack_pack_int(&pk, 3));
|
||||||
|
GEN_TEST_VREFBUFFER_CHECK(
|
||||||
|
EXPECT_EQ(MSGPACK_OBJECT_MAP, obj.type);
|
||||||
|
EXPECT_EQ(1U, obj.via.map.size);
|
||||||
|
EXPECT_EQ(MSGPACK_OBJECT_POSITIVE_INTEGER, obj.via.map.ptr[0].key.type);
|
||||||
|
EXPECT_EQ(2U, obj.via.map.ptr[0].key.via.u64);
|
||||||
|
EXPECT_EQ(MSGPACK_OBJECT_POSITIVE_INTEGER, obj.via.map.ptr[0].val.type);
|
||||||
|
EXPECT_EQ(3U, obj.via.map.ptr[0].val.via.u64));
|
||||||
|
}
|
||||||
|
@@ -12,12 +12,16 @@
|
|||||||
|
|
||||||
#include "test_allocator.hpp"
|
#include "test_allocator.hpp"
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wconversion"
|
#pragma GCC diagnostic ignored "-Wconversion"
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
@@ -1,11 +1,15 @@
|
|||||||
#include <msgpack.hpp>
|
#include <msgpack.hpp>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wconversion"
|
#pragma GCC diagnostic ignored "-Wconversion"
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
@@ -883,7 +887,7 @@ TEST(MSGPACK_CHRONO, system_clock_32)
|
|||||||
msgpack::sbuffer sbuf;
|
msgpack::sbuffer sbuf;
|
||||||
msgpack::pack(sbuf, val1);
|
msgpack::pack(sbuf, val1);
|
||||||
char packed[] = {
|
char packed[] = {
|
||||||
static_cast<char>(0xd6),
|
static_cast<char>(0xd6u),
|
||||||
static_cast<char>(-1),
|
static_cast<char>(-1),
|
||||||
static_cast<char>(0x12),
|
static_cast<char>(0x12),
|
||||||
static_cast<char>(0x34),
|
static_cast<char>(0x34),
|
||||||
@@ -908,12 +912,12 @@ TEST(MSGPACK_CHRONO, system_clock_32_max)
|
|||||||
msgpack::sbuffer sbuf;
|
msgpack::sbuffer sbuf;
|
||||||
msgpack::pack(sbuf, val1);
|
msgpack::pack(sbuf, val1);
|
||||||
char packed[] = {
|
char packed[] = {
|
||||||
static_cast<char>(0xd6),
|
static_cast<char>(0xd6u),
|
||||||
static_cast<char>(-1),
|
static_cast<char>(-1),
|
||||||
static_cast<char>(0xff),
|
static_cast<char>(0xffu),
|
||||||
static_cast<char>(0xff),
|
static_cast<char>(0xffu),
|
||||||
static_cast<char>(0xff),
|
static_cast<char>(0xffu),
|
||||||
static_cast<char>(0xff)
|
static_cast<char>(0xffu)
|
||||||
};
|
};
|
||||||
EXPECT_EQ(memcmp(sbuf.data(), packed, sizeof(packed)), 0);
|
EXPECT_EQ(memcmp(sbuf.data(), packed, sizeof(packed)), 0);
|
||||||
|
|
||||||
@@ -959,28 +963,28 @@ TEST(MSGPACK_CHRONO, system_clock_64_max)
|
|||||||
msgpack::sbuffer sbuf;
|
msgpack::sbuffer sbuf;
|
||||||
msgpack::pack(sbuf, val1);
|
msgpack::pack(sbuf, val1);
|
||||||
char packed_nano[] = {
|
char packed_nano[] = {
|
||||||
static_cast<char>(0xd7),
|
static_cast<char>(0xd7u),
|
||||||
static_cast<char>(-1),
|
static_cast<char>(-1),
|
||||||
static_cast<char>(0xee), // 999,999,999 << 2
|
static_cast<char>(0xeeu), // 999,999,999 << 2
|
||||||
static_cast<char>(0x6b),
|
static_cast<char>(0x6b),
|
||||||
static_cast<char>(0x27),
|
static_cast<char>(0x27),
|
||||||
static_cast<char>(0xfc),
|
static_cast<char>(0xfcu),
|
||||||
static_cast<char>(0xff), // 32 bit sec
|
static_cast<char>(0xffu), // 32 bit sec
|
||||||
static_cast<char>(0xff),
|
static_cast<char>(0xffu),
|
||||||
static_cast<char>(0xff),
|
static_cast<char>(0xffu),
|
||||||
static_cast<char>(0xff)
|
static_cast<char>(0xffu)
|
||||||
};
|
};
|
||||||
char packed_micro[] = {
|
char packed_micro[] = {
|
||||||
static_cast<char>(0xd7),
|
static_cast<char>(0xd7u),
|
||||||
static_cast<char>(-1),
|
static_cast<char>(-1),
|
||||||
static_cast<char>(0xee), // 999,999,000 << 2
|
static_cast<char>(0xeeu), // 999,999,000 << 2
|
||||||
static_cast<char>(0x6b),
|
static_cast<char>(0x6b),
|
||||||
static_cast<char>(0x18),
|
static_cast<char>(0x18),
|
||||||
static_cast<char>(0x60),
|
static_cast<char>(0x60),
|
||||||
static_cast<char>(0xff), // 32 bit sec
|
static_cast<char>(0xffu), // 32 bit sec
|
||||||
static_cast<char>(0xff),
|
static_cast<char>(0xffu),
|
||||||
static_cast<char>(0xff),
|
static_cast<char>(0xffu),
|
||||||
static_cast<char>(0xff)
|
static_cast<char>(0xffu)
|
||||||
};
|
};
|
||||||
if (std::chrono::system_clock::duration::period::ratio::den == 1000000000) {
|
if (std::chrono::system_clock::duration::period::ratio::den == 1000000000) {
|
||||||
EXPECT_EQ(memcmp(sbuf.data(), packed_nano, sizeof(packed_nano)), 0);
|
EXPECT_EQ(memcmp(sbuf.data(), packed_nano, sizeof(packed_nano)), 0);
|
||||||
@@ -1056,7 +1060,7 @@ TEST(MSGPACK_TIMESPEC, timespec_pack_convert_zero)
|
|||||||
|
|
||||||
msgpack::pack(ss, val1);
|
msgpack::pack(ss, val1);
|
||||||
std::string const& str = ss.str();
|
std::string const& str = ss.str();
|
||||||
EXPECT_EQ(str.data()[0], static_cast<char>(0xd6));
|
EXPECT_EQ(str.data()[0], static_cast<char>(0xd6u));
|
||||||
|
|
||||||
msgpack::object_handle oh;
|
msgpack::object_handle oh;
|
||||||
msgpack::unpack(oh, str.data(), str.size());
|
msgpack::unpack(oh, str.data(), str.size());
|
||||||
@@ -1078,11 +1082,11 @@ TEST(MSGPACK_TIMESPEC, timespec_object_with_zone_zero)
|
|||||||
TEST(MSGPACK_TIMESPEC, timespec_pack_convert_32bit_sec)
|
TEST(MSGPACK_TIMESPEC, timespec_pack_convert_32bit_sec)
|
||||||
{
|
{
|
||||||
std::stringstream ss;
|
std::stringstream ss;
|
||||||
timespec val1{ 0xffffffffUL, 0 };
|
timespec val1{ std::numeric_limits<decltype(std::declval<timespec>().tv_sec)>::is_signed ? INT32_MAX : UINT32_MAX, 0 };
|
||||||
|
|
||||||
msgpack::pack(ss, val1);
|
msgpack::pack(ss, val1);
|
||||||
std::string const& str = ss.str();
|
std::string const& str = ss.str();
|
||||||
EXPECT_EQ(str.data()[0], static_cast<char>(0xd6));
|
EXPECT_EQ(str.data()[0], static_cast<char>(0xd6u));
|
||||||
|
|
||||||
msgpack::object_handle oh;
|
msgpack::object_handle oh;
|
||||||
msgpack::unpack(oh, str.data(), str.size());
|
msgpack::unpack(oh, str.data(), str.size());
|
||||||
@@ -1094,7 +1098,7 @@ TEST(MSGPACK_TIMESPEC, timespec_pack_convert_32bit_sec)
|
|||||||
TEST(MSGPACK_TIMESPEC, timespec_object_with_zone_32bit_sec)
|
TEST(MSGPACK_TIMESPEC, timespec_object_with_zone_32bit_sec)
|
||||||
{
|
{
|
||||||
msgpack::zone z;
|
msgpack::zone z;
|
||||||
timespec val1{ 0xffffffffUL, 0 };
|
timespec val1{ std::numeric_limits<decltype(std::declval<timespec>().tv_sec)>::is_signed ? INT32_MAX : UINT32_MAX, 0 };
|
||||||
msgpack::object obj(val1, z);
|
msgpack::object obj(val1, z);
|
||||||
timespec val2 = obj.as<timespec>();
|
timespec val2 = obj.as<timespec>();
|
||||||
EXPECT_EQ(val1.tv_sec, val2.tv_sec);
|
EXPECT_EQ(val1.tv_sec, val2.tv_sec);
|
||||||
@@ -1108,7 +1112,7 @@ TEST(MSGPACK_TIMESPEC, timespec_pack_convert_max_nano)
|
|||||||
|
|
||||||
msgpack::pack(ss, val1);
|
msgpack::pack(ss, val1);
|
||||||
std::string const& str = ss.str();
|
std::string const& str = ss.str();
|
||||||
EXPECT_EQ(str.data()[0], static_cast<char>(0xd7));
|
EXPECT_EQ(str.data()[0], static_cast<char>(0xd7u));
|
||||||
msgpack::object_handle oh;
|
msgpack::object_handle oh;
|
||||||
msgpack::unpack(oh, str.data(), str.size());
|
msgpack::unpack(oh, str.data(), str.size());
|
||||||
timespec val2 = oh.get().as<timespec>();
|
timespec val2 = oh.get().as<timespec>();
|
||||||
@@ -1134,7 +1138,7 @@ TEST(MSGPACK_TIMESPEC, timespec_pack_convert_34bit_sec_max_nano)
|
|||||||
|
|
||||||
msgpack::pack(ss, val1);
|
msgpack::pack(ss, val1);
|
||||||
std::string const& str = ss.str();
|
std::string const& str = ss.str();
|
||||||
EXPECT_EQ(str.data()[0], static_cast<char>(0xd7));
|
EXPECT_EQ(str.data()[0], static_cast<char>(0xd7u));
|
||||||
|
|
||||||
msgpack::object_handle oh;
|
msgpack::object_handle oh;
|
||||||
msgpack::unpack(oh, str.data(), str.size());
|
msgpack::unpack(oh, str.data(), str.size());
|
||||||
@@ -1162,7 +1166,7 @@ TEST(MSGPACK_TIMESPEC, timespec_pack_convert_35bit_sec_max_nano)
|
|||||||
|
|
||||||
msgpack::pack(ss, val1);
|
msgpack::pack(ss, val1);
|
||||||
std::string const& str = ss.str();
|
std::string const& str = ss.str();
|
||||||
EXPECT_EQ(str.data()[0], static_cast<char>(0xc7));
|
EXPECT_EQ(str.data()[0], static_cast<char>(0xc7u));
|
||||||
|
|
||||||
msgpack::object_handle oh;
|
msgpack::object_handle oh;
|
||||||
msgpack::unpack(oh, str.data(), str.size());
|
msgpack::unpack(oh, str.data(), str.size());
|
||||||
@@ -1184,12 +1188,13 @@ TEST(MSGPACK_TIMESPEC, timespec_object_with_zone_35bit_sec_max_nano)
|
|||||||
|
|
||||||
TEST(MSGPACK_TIMESPEC, timespec_pack_convert_64bit_sec_max_nano)
|
TEST(MSGPACK_TIMESPEC, timespec_pack_convert_64bit_sec_max_nano)
|
||||||
{
|
{
|
||||||
|
if (sizeof(decltype(std::declval<timespec>().tv_sec)) <= 4) return;
|
||||||
std::stringstream ss;
|
std::stringstream ss;
|
||||||
timespec val1{ std::numeric_limits<decltype(std::declval<timespec>().tv_sec)>::max(), 999999999 };
|
timespec val1{ std::numeric_limits<decltype(std::declval<timespec>().tv_sec)>::max(), 999999999 };
|
||||||
|
|
||||||
msgpack::pack(ss, val1);
|
msgpack::pack(ss, val1);
|
||||||
std::string const& str = ss.str();
|
std::string const& str = ss.str();
|
||||||
EXPECT_EQ(str.data()[0], static_cast<char>(0xc7));
|
EXPECT_EQ(str.data()[0], static_cast<char>(0xc7u));
|
||||||
|
|
||||||
msgpack::object_handle oh;
|
msgpack::object_handle oh;
|
||||||
msgpack::unpack(oh, str.data(), str.size());
|
msgpack::unpack(oh, str.data(), str.size());
|
||||||
|
@@ -1,11 +1,15 @@
|
|||||||
#include <msgpack.hpp>
|
#include <msgpack.hpp>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wconversion"
|
#pragma GCC diagnostic ignored "-Wconversion"
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
@@ -9,12 +9,16 @@
|
|||||||
#include <list>
|
#include <list>
|
||||||
#include <limits>
|
#include <limits>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wconversion"
|
#pragma GCC diagnostic ignored "-Wconversion"
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
@@ -1,12 +1,15 @@
|
|||||||
#include <msgpack.hpp>
|
#include <msgpack.hpp>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wconversion"
|
#pragma GCC diagnostic ignored "-Wconversion"
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
TEST(msgpack_tuple, member_get)
|
TEST(msgpack_tuple, member_get)
|
||||||
{
|
{
|
||||||
|
@@ -9,12 +9,16 @@
|
|||||||
#include <list>
|
#include <list>
|
||||||
#include <limits>
|
#include <limits>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wconversion"
|
#pragma GCC diagnostic ignored "-Wconversion"
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
@@ -4,12 +4,16 @@
|
|||||||
#include <limits>
|
#include <limits>
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wconversion"
|
#pragma GCC diagnostic ignored "-Wconversion"
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
// To avoid link error
|
// To avoid link error
|
||||||
TEST(MSGPACK_X3_PARSE, dummy)
|
TEST(MSGPACK_X3_PARSE, dummy)
|
||||||
|
@@ -1,12 +1,15 @@
|
|||||||
#include <msgpack.hpp>
|
#include <msgpack.hpp>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wconversion"
|
#pragma GCC diagnostic ignored "-Wconversion"
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
enum enum_test {
|
enum enum_test {
|
||||||
elem
|
elem
|
||||||
|
@@ -1,11 +1,15 @@
|
|||||||
#include <msgpack.hpp>
|
#include <msgpack.hpp>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wconversion"
|
#pragma GCC diagnostic ignored "-Wconversion"
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
|
||||||
@@ -769,14 +773,14 @@ TEST(object_with_zone, user_defined_non_virtual)
|
|||||||
|
|
||||||
msgpack::zone z;
|
msgpack::zone z;
|
||||||
msgpack::object obj(b, z);
|
msgpack::object obj(b, z);
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
|
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
bottom br = obj.as<bottom>();
|
bottom br = obj.as<bottom>();
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
EXPECT_EQ(b.b, br.b);
|
EXPECT_EQ(b.b, br.b);
|
||||||
EXPECT_EQ(b.m1, br.m1);
|
EXPECT_EQ(b.m1, br.m1);
|
||||||
EXPECT_EQ(b.m2, br.m2);
|
EXPECT_EQ(b.m2, br.m2);
|
||||||
@@ -814,14 +818,14 @@ TEST(object_with_zone, user_defined_virtual)
|
|||||||
|
|
||||||
msgpack::zone z;
|
msgpack::zone z;
|
||||||
msgpack::object obj(b, z);
|
msgpack::object obj(b, z);
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
|
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
v_bottom br = obj.as<v_bottom>();
|
v_bottom br = obj.as<v_bottom>();
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
EXPECT_EQ(b.b, br.b);
|
EXPECT_EQ(b.b, br.b);
|
||||||
EXPECT_EQ(b.m1, br.m1);
|
EXPECT_EQ(b.m1, br.m1);
|
||||||
EXPECT_EQ(b.m2, br.m2);
|
EXPECT_EQ(b.m2, br.m2);
|
||||||
|
@@ -1,11 +1,15 @@
|
|||||||
#include <msgpack.hpp>
|
#include <msgpack.hpp>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wconversion"
|
#pragma GCC diagnostic ignored "-Wconversion"
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
|
||||||
@@ -163,14 +167,14 @@ TEST(unpack, int_pointer_off_no_ref)
|
|||||||
std::size_t off = 0;
|
std::size_t off = 0;
|
||||||
|
|
||||||
// obsolete
|
// obsolete
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
||||||
msgpack::unpack(&oh, sbuf.data(), sbuf.size(), &off);
|
msgpack::unpack(&oh, sbuf.data(), sbuf.size(), &off);
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
||||||
EXPECT_EQ(1, oh.get().as<int>());
|
EXPECT_EQ(1, oh.get().as<int>());
|
||||||
EXPECT_EQ(off, sbuf.size());
|
EXPECT_EQ(off, sbuf.size());
|
||||||
}
|
}
|
||||||
@@ -184,14 +188,14 @@ TEST(unpack, int_pointer_off_no_ref_explicit)
|
|||||||
std::size_t off = 0;
|
std::size_t off = 0;
|
||||||
|
|
||||||
// obsolete
|
// obsolete
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
||||||
msgpack::unpack(&oh, sbuf.data(), sbuf.size(), &off, MSGPACK_NULLPTR);
|
msgpack::unpack(&oh, sbuf.data(), sbuf.size(), &off, MSGPACK_NULLPTR);
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
||||||
EXPECT_EQ(1, oh.get().as<int>());
|
EXPECT_EQ(1, oh.get().as<int>());
|
||||||
EXPECT_EQ(off, sbuf.size());
|
EXPECT_EQ(off, sbuf.size());
|
||||||
}
|
}
|
||||||
@@ -204,14 +208,14 @@ TEST(unpack, int_pointer_no_off_ref)
|
|||||||
bool referenced;
|
bool referenced;
|
||||||
|
|
||||||
// obsolete
|
// obsolete
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
||||||
msgpack::unpack(&oh, sbuf.data(), sbuf.size(), MSGPACK_NULLPTR, &referenced);
|
msgpack::unpack(&oh, sbuf.data(), sbuf.size(), MSGPACK_NULLPTR, &referenced);
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
||||||
EXPECT_EQ(1, oh.get().as<int>());
|
EXPECT_EQ(1, oh.get().as<int>());
|
||||||
EXPECT_FALSE(referenced);
|
EXPECT_FALSE(referenced);
|
||||||
}
|
}
|
||||||
@@ -225,14 +229,14 @@ TEST(unpack, int_pointer_off_ref)
|
|||||||
std::size_t off = 0;
|
std::size_t off = 0;
|
||||||
|
|
||||||
// obsolete
|
// obsolete
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
||||||
msgpack::unpack(&oh, sbuf.data(), sbuf.size(), &off, &referenced);
|
msgpack::unpack(&oh, sbuf.data(), sbuf.size(), &off, &referenced);
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
||||||
EXPECT_EQ(1, oh.get().as<int>());
|
EXPECT_EQ(1, oh.get().as<int>());
|
||||||
EXPECT_EQ(off, sbuf.size());
|
EXPECT_EQ(off, sbuf.size());
|
||||||
EXPECT_FALSE(referenced);
|
EXPECT_FALSE(referenced);
|
||||||
@@ -246,14 +250,14 @@ TEST(unpack, int_default_null_pointer)
|
|||||||
msgpack::object_handle oh;
|
msgpack::object_handle oh;
|
||||||
|
|
||||||
// obsolete
|
// obsolete
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
||||||
msgpack::unpack(&oh, sbuf.data(), sbuf.size());
|
msgpack::unpack(&oh, sbuf.data(), sbuf.size());
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
||||||
EXPECT_EQ(1, oh.get().as<int>());
|
EXPECT_EQ(1, oh.get().as<int>());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -524,7 +528,7 @@ TEST(unpack, int_off_larger_than_length)
|
|||||||
TEST(unpack, empty_array_fix)
|
TEST(unpack, empty_array_fix)
|
||||||
{
|
{
|
||||||
std::string buf;
|
std::string buf;
|
||||||
buf.push_back(static_cast<char>(0x90));
|
buf.push_back(static_cast<char>(0x90u));
|
||||||
std::size_t off = 0;
|
std::size_t off = 0;
|
||||||
|
|
||||||
msgpack::object_handle oh = msgpack::unpack(buf.data(), buf.size(), off);
|
msgpack::object_handle oh = msgpack::unpack(buf.data(), buf.size(), off);
|
||||||
@@ -536,7 +540,7 @@ TEST(unpack, empty_array_fix)
|
|||||||
TEST(unpack, empty_array_16)
|
TEST(unpack, empty_array_16)
|
||||||
{
|
{
|
||||||
std::string buf;
|
std::string buf;
|
||||||
buf.push_back(static_cast<char>(0xdc));
|
buf.push_back(static_cast<char>(0xdcu));
|
||||||
buf.push_back(static_cast<char>(0x00));
|
buf.push_back(static_cast<char>(0x00));
|
||||||
buf.push_back(static_cast<char>(0x00));
|
buf.push_back(static_cast<char>(0x00));
|
||||||
std::size_t off = 0;
|
std::size_t off = 0;
|
||||||
@@ -550,7 +554,7 @@ TEST(unpack, empty_array_16)
|
|||||||
TEST(unpack, empty_array_32)
|
TEST(unpack, empty_array_32)
|
||||||
{
|
{
|
||||||
std::string buf;
|
std::string buf;
|
||||||
buf.push_back(static_cast<char>(0xdd));
|
buf.push_back(static_cast<char>(0xddu));
|
||||||
buf.push_back(static_cast<char>(0x00));
|
buf.push_back(static_cast<char>(0x00));
|
||||||
buf.push_back(static_cast<char>(0x00));
|
buf.push_back(static_cast<char>(0x00));
|
||||||
buf.push_back(static_cast<char>(0x00));
|
buf.push_back(static_cast<char>(0x00));
|
||||||
@@ -566,7 +570,7 @@ TEST(unpack, empty_array_32)
|
|||||||
TEST(unpack, empty_map_fix)
|
TEST(unpack, empty_map_fix)
|
||||||
{
|
{
|
||||||
std::string buf;
|
std::string buf;
|
||||||
buf.push_back(static_cast<char>(0x80));
|
buf.push_back(static_cast<char>(0x80u));
|
||||||
std::size_t off = 0;
|
std::size_t off = 0;
|
||||||
|
|
||||||
msgpack::object_handle oh = msgpack::unpack(buf.data(), buf.size(), off);
|
msgpack::object_handle oh = msgpack::unpack(buf.data(), buf.size(), off);
|
||||||
@@ -578,7 +582,7 @@ TEST(unpack, empty_map_fix)
|
|||||||
TEST(unpack, empty_map_16)
|
TEST(unpack, empty_map_16)
|
||||||
{
|
{
|
||||||
std::string buf;
|
std::string buf;
|
||||||
buf.push_back(static_cast<char>(0xde));
|
buf.push_back(static_cast<char>(0xdeu));
|
||||||
buf.push_back(static_cast<char>(0x00));
|
buf.push_back(static_cast<char>(0x00));
|
||||||
buf.push_back(static_cast<char>(0x00));
|
buf.push_back(static_cast<char>(0x00));
|
||||||
std::size_t off = 0;
|
std::size_t off = 0;
|
||||||
@@ -592,7 +596,7 @@ TEST(unpack, empty_map_16)
|
|||||||
TEST(unpack, empty_map_32)
|
TEST(unpack, empty_map_32)
|
||||||
{
|
{
|
||||||
std::string buf;
|
std::string buf;
|
||||||
buf.push_back(static_cast<char>(0xdf));
|
buf.push_back(static_cast<char>(0xdfu));
|
||||||
buf.push_back(static_cast<char>(0x00));
|
buf.push_back(static_cast<char>(0x00));
|
||||||
buf.push_back(static_cast<char>(0x00));
|
buf.push_back(static_cast<char>(0x00));
|
||||||
buf.push_back(static_cast<char>(0x00));
|
buf.push_back(static_cast<char>(0x00));
|
||||||
|
@@ -1,11 +1,15 @@
|
|||||||
#include <msgpack.h>
|
#include <msgpack.h>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wconversion"
|
#pragma GCC diagnostic ignored "-Wconversion"
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
|
@@ -3,12 +3,16 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wconversion"
|
#pragma GCC diagnostic ignored "-Wconversion"
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
@@ -1,11 +1,15 @@
|
|||||||
#include <msgpack.hpp>
|
#include <msgpack.hpp>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wconversion"
|
#pragma GCC diagnostic ignored "-Wconversion"
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
TEST(reference, unpack_int)
|
TEST(reference, unpack_int)
|
||||||
{
|
{
|
||||||
|
@@ -1,11 +1,15 @@
|
|||||||
#include <msgpack.hpp>
|
#include <msgpack.hpp>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wconversion"
|
#pragma GCC diagnostic ignored "-Wconversion"
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#if !defined(MSGPACK_USE_CPP03)
|
#if !defined(MSGPACK_USE_CPP03)
|
||||||
|
|
||||||
|
@@ -1,12 +1,16 @@
|
|||||||
#include <msgpack.hpp>
|
#include <msgpack.hpp>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wconversion"
|
#pragma GCC diagnostic ignored "-Wconversion"
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
@@ -2,12 +2,16 @@
|
|||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <iterator>
|
#include <iterator>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wconversion"
|
#pragma GCC diagnostic ignored "-Wconversion"
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
@@ -1,12 +1,16 @@
|
|||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <msgpack.hpp>
|
#include <msgpack.hpp>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wconversion"
|
#pragma GCC diagnostic ignored "-Wconversion"
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
TEST(size_equal_only, array)
|
TEST(size_equal_only, array)
|
||||||
{
|
{
|
||||||
|
@@ -1,11 +1,15 @@
|
|||||||
#include <msgpack.hpp>
|
#include <msgpack.hpp>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wconversion"
|
#pragma GCC diagnostic ignored "-Wconversion"
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
|
||||||
@@ -85,14 +89,14 @@ TEST(streaming, basic_pointer)
|
|||||||
|
|
||||||
pac.buffer_consumed(len);
|
pac.buffer_consumed(len);
|
||||||
|
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
||||||
while(pac.next(&oh)) {
|
while(pac.next(&oh)) {
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
||||||
msgpack::object obj = oh.get();
|
msgpack::object obj = oh.get();
|
||||||
switch(count++) {
|
switch(count++) {
|
||||||
case 0:
|
case 0:
|
||||||
|
@@ -1,11 +1,15 @@
|
|||||||
#include <msgpack.h>
|
#include <msgpack.h>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wconversion"
|
#pragma GCC diagnostic ignored "-Wconversion"
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
|
@@ -2,12 +2,16 @@
|
|||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <iterator>
|
#include <iterator>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wconversion"
|
#pragma GCC diagnostic ignored "-Wconversion"
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
@@ -2,12 +2,16 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wconversion"
|
#pragma GCC diagnostic ignored "-Wconversion"
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
@@ -153,10 +157,10 @@ public:
|
|||||||
|
|
||||||
void msgpack_unpack(msgpack::object o)
|
void msgpack_unpack(msgpack::object o)
|
||||||
{
|
{
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
|
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
msgpack::type::tuple<bool, msgpack::object> tuple(false, msgpack::object());
|
msgpack::type::tuple<bool, msgpack::object> tuple(false, msgpack::object());
|
||||||
o.convert(tuple);
|
o.convert(tuple);
|
||||||
|
|
||||||
@@ -165,18 +169,18 @@ public:
|
|||||||
tuple.get<1>().convert(value.f);
|
tuple.get<1>().convert(value.f);
|
||||||
else
|
else
|
||||||
tuple.get<1>().convert(value.i);
|
tuple.get<1>().convert(value.i);
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
TEST(MSGPACK_USER_DEFINED, simple_buffer_union_member)
|
TEST(MSGPACK_USER_DEFINED, simple_buffer_union_member)
|
||||||
{
|
{
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
|
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
{
|
{
|
||||||
// double
|
// double
|
||||||
TestUnionMemberClass val1(1.0);
|
TestUnionMemberClass val1(1.0);
|
||||||
@@ -200,9 +204,9 @@ TEST(MSGPACK_USER_DEFINED, simple_buffer_union_member)
|
|||||||
EXPECT_EQ(val1.value.i, 1);
|
EXPECT_EQ(val1.value.i, 1);
|
||||||
EXPECT_EQ(val1.value.i, val2.value.i);
|
EXPECT_EQ(val1.value.i, val2.value.i);
|
||||||
}
|
}
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
}
|
}
|
||||||
|
|
||||||
// inheritance
|
// inheritance
|
||||||
@@ -401,14 +405,14 @@ TEST(MSGPACK_INHERIT, define_map_non_virtual)
|
|||||||
msgpack::pack(sbuf, b);
|
msgpack::pack(sbuf, b);
|
||||||
msgpack::object_handle oh =
|
msgpack::object_handle oh =
|
||||||
msgpack::unpack(sbuf.data(), sbuf.size());
|
msgpack::unpack(sbuf.data(), sbuf.size());
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
|
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
dm_bottom br = oh.get().as<dm_bottom>();
|
dm_bottom br = oh.get().as<dm_bottom>();
|
||||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
EXPECT_EQ(b.b, br.b);
|
EXPECT_EQ(b.b, br.b);
|
||||||
EXPECT_EQ(b.m1, br.m1);
|
EXPECT_EQ(b.m1, br.m1);
|
||||||
EXPECT_EQ(b.m2, br.m2);
|
EXPECT_EQ(b.m2, br.m2);
|
||||||
|
@@ -1,11 +1,15 @@
|
|||||||
#include <msgpack.hpp>
|
#include <msgpack.hpp>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wconversion"
|
#pragma GCC diagnostic ignored "-Wconversion"
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
TEST(version, print)
|
TEST(version, print)
|
||||||
{
|
{
|
||||||
|
@@ -1,11 +1,15 @@
|
|||||||
#include <msgpack.hpp>
|
#include <msgpack.hpp>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wconversion"
|
#pragma GCC diagnostic ignored "-Wconversion"
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
|
||||||
|
@@ -1,11 +1,15 @@
|
|||||||
#include <msgpack.hpp>
|
#include <msgpack.hpp>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wconversion"
|
#pragma GCC diagnostic ignored "-Wconversion"
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
|
#endif //defined(__GNUC__)
|
||||||
|
|
||||||
TEST(zone, allocate_align)
|
TEST(zone, allocate_align)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user