mirror of
https://github.com/msgpack/msgpack-c.git
synced 2025-10-21 15:51:44 +02:00
Compare commits
71 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 | ||
![]() |
8085ab8721 | ||
![]() |
b36e75a42e | ||
![]() |
f17f8d79c4 | ||
![]() |
f89f05b883 | ||
![]() |
bd5f814cb2 | ||
![]() |
bf6cc035c7 | ||
![]() |
a6bf728a5c | ||
![]() |
698a482b67 | ||
![]() |
fbf5b9d74c | ||
![]() |
65c35caab2 | ||
![]() |
ff9f14742b | ||
![]() |
4b4eb83cd1 | ||
![]() |
7761497778 | ||
![]() |
6046d5c666 | ||
![]() |
83eb70d718 | ||
![]() |
70f950ac05 | ||
![]() |
3129326432 | ||
![]() |
799cd15107 | ||
![]() |
942965ee87 | ||
![]() |
a123053823 | ||
![]() |
c7603fbbd1 | ||
![]() |
6954e01338 | ||
![]() |
7e23ec496a | ||
![]() |
bae148bd76 | ||
![]() |
3fcecf7099 | ||
![]() |
7d994630d2 |
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
|
239
.travis.yml
239
.travis.yml
@@ -1,239 +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
|
||||
|
||||
|
||||
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
|
23
CHANGELOG.md
23
CHANGELOG.md
@@ -1,3 +1,26 @@
|
||||
# 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
|
||||
* Fix snprintf return value checking (#821)
|
||||
* Remove some warnings (#819)
|
||||
* Fix fbuffer result checking (#812)
|
||||
* Fix temporary object handling (#807)
|
||||
* Improve cmake support (#804)
|
||||
* Fix invalid `int main` parameter (#800)
|
||||
* Improve supporting platform (#797, #817)
|
||||
* Fix ZLIB error handling (#795)
|
||||
* Remove unused variable (#793)
|
||||
* Improve integer overflow checking (#792)
|
||||
|
||||
# 2019-05-27 version 3.2.0
|
||||
|
||||
* Fix invalid include (#783)
|
||||
|
154
CMakeLists.txt
154
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 ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_REVISION})
|
||||
|
||||
LIST (APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake/")
|
||||
SET (prefix ${CMAKE_INSTALL_PREFIX})
|
||||
SET (exec_prefix "\${prefix}")
|
||||
SET (libdir "\${exec_prefix}/lib")
|
||||
@@ -152,39 +153,57 @@ FIND_PACKAGE (ZLIB)
|
||||
FIND_PACKAGE (Threads)
|
||||
IF (GTEST_FOUND AND ZLIB_FOUND AND THREADS_FOUND AND NOT "${MSGPACK_FUZZ_REGRESSION}" STREQUAL "ON")
|
||||
OPTION (MSGPACK_BUILD_TESTS "Build msgpack tests." ON)
|
||||
ENDIF ()
|
||||
|
||||
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 ()
|
||||
OPTION (MSGPACK_GEN_COVERAGE "Enable running gcov to get a test coverage report." OFF)
|
||||
ENDIF ()
|
||||
|
||||
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)
|
||||
CHECK_CXX_SOURCE_COMPILES ("
|
||||
#include <bits/atomicity.h>
|
||||
@@ -209,8 +228,9 @@ CONFIGURE_FILE (
|
||||
@ONLY
|
||||
)
|
||||
|
||||
IF (MSGPACK_ENABLE_SHARED)
|
||||
ADD_LIBRARY (msgpackc SHARED
|
||||
|
||||
IF (MSGPACK_ENABLE_SHARED OR MSGPACK_ENABLE_STATIC)
|
||||
ADD_LIBRARY (msgpackc
|
||||
${msgpackc_SOURCES}
|
||||
${msgpackc_HEADERS}
|
||||
)
|
||||
@@ -238,7 +258,7 @@ IF (MSGPACK_ENABLE_CXX AND ((CMAKE_VERSION VERSION_GREATER 3.0) OR (CMAKE_VERSIO
|
||||
)
|
||||
ENDIF ()
|
||||
|
||||
IF (MSGPACK_ENABLE_STATIC)
|
||||
IF (MSGPACK_ENABLE_SHARED AND MSGPACK_ENABLE_STATIC)
|
||||
ADD_LIBRARY (msgpackc-static STATIC
|
||||
${msgpackc_SOURCES}
|
||||
${msgpackc_HEADERS}
|
||||
@@ -253,11 +273,6 @@ IF (MSGPACK_ENABLE_STATIC)
|
||||
${CMAKE_CURRENT_SOURCE_DIR}
|
||||
)
|
||||
|
||||
IF (NOT MSGPACK_ENABLE_SHARED)
|
||||
# Add alias for subdirectories
|
||||
ADD_LIBRARY (msgpackc ALIAS msgpackc-static)
|
||||
ENDIF ()
|
||||
|
||||
SET_TARGET_PROPERTIES (msgpackc-static PROPERTIES OUTPUT_NAME "msgpackc")
|
||||
|
||||
IF (MSGPACK_ENABLE_SHARED)
|
||||
@@ -280,6 +295,21 @@ IF ("${MSGPACK_FUZZ_REGRESSION}" STREQUAL "ON" AND "${CMAKE_CXX_COMPILER_ID}" ST
|
||||
SET (MSGPACK_BUILD_EXAMPLES OFF)
|
||||
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)
|
||||
ENABLE_TESTING ()
|
||||
@@ -291,19 +321,19 @@ IF (MSGPACK_BUILD_TESTS)
|
||||
ENDIF ()
|
||||
|
||||
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
||||
IF (MSGPACK_ENABLE_SHARED)
|
||||
IF (MSGPACK_ENABLE_SHARED OR MSGPACK_ENABLE_STATIC)
|
||||
SET_PROPERTY (TARGET msgpackc APPEND_STRING PROPERTY COMPILE_FLAGS " -Wall -Wextra -DPIC")
|
||||
ENDIF ()
|
||||
IF (MSGPACK_ENABLE_STATIC)
|
||||
IF (MSGPACK_ENABLE_SHARED AND MSGPACK_ENABLE_STATIC)
|
||||
SET_PROPERTY (TARGET msgpackc-static APPEND_STRING PROPERTY COMPILE_FLAGS " -Wall -Wextra" )
|
||||
ENDIF ()
|
||||
ENDIF ()
|
||||
|
||||
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
|
||||
IF (MSGPACK_ENABLE_SHARED)
|
||||
IF (MSGPACK_ENABLE_SHARED OR MSGPACK_ENABLE_STATIC)
|
||||
SET_PROPERTY (TARGET msgpackc APPEND_STRING PROPERTY COMPILE_FLAGS " -Wno-mismatched-tags")
|
||||
ENDIF ()
|
||||
IF (MSGPACK_ENABLE_STATIC)
|
||||
IF (MSGPACK_ENABLE_SHARED AND MSGPACK_ENABLE_STATIC)
|
||||
SET_PROPERTY (TARGET msgpackc-static APPEND_STRING PROPERTY COMPILE_FLAGS " -Wno-mismatched-tags")
|
||||
ENDIF ()
|
||||
ENDIF ()
|
||||
@@ -316,6 +346,14 @@ IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
|
||||
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")
|
||||
SET_SOURCE_FILES_PROPERTIES(${msgpackc_SOURCES} PROPERTIES LANGUAGE CXX)
|
||||
ENDIF ()
|
||||
@@ -337,7 +375,7 @@ IF (MSGPACK_BUILD_EXAMPLES)
|
||||
ADD_SUBDIRECTORY (example)
|
||||
ENDIF ()
|
||||
|
||||
IF (MSGPACK_ENABLE_SHARED)
|
||||
IF (MSGPACK_ENABLE_SHARED OR MSGPACK_ENABLE_STATIC)
|
||||
SET (MSGPACK_INSTALLTARGETS msgpackc)
|
||||
ENDIF ()
|
||||
|
||||
@@ -345,7 +383,7 @@ IF (MSGPACK_ENABLE_CXX AND ((CMAKE_VERSION VERSION_GREATER 3.0) OR (CMAKE_VERSIO
|
||||
LIST (APPEND MSGPACK_INSTALLTARGETS msgpackc-cxx)
|
||||
ENDIF ()
|
||||
|
||||
IF (MSGPACK_ENABLE_STATIC)
|
||||
IF (MSGPACK_ENABLE_SHARED AND MSGPACK_ENABLE_STATIC)
|
||||
LIST (APPEND MSGPACK_INSTALLTARGETS msgpackc-static)
|
||||
ENDIF ()
|
||||
|
||||
@@ -358,7 +396,7 @@ FOREACH (file ${msgpackc_HEADERS})
|
||||
GET_FILENAME_COMPONENT (dir ${file} PATH)
|
||||
INSTALL (FILES ${file} DESTINATION ${CMAKE_INSTALL_PREFIX}/${dir})
|
||||
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)
|
||||
ENDIF ()
|
||||
|
||||
@@ -432,17 +470,19 @@ CONFIGURE_PACKAGE_CONFIG_FILE (msgpack-config.cmake.in
|
||||
INSTALL_DESTINATION "${CMAKE_INSTALL_CMAKEDIR}"
|
||||
)
|
||||
|
||||
INSTALL (EXPORT msgpack-targets
|
||||
FILE
|
||||
msgpack-targets.cmake
|
||||
DESTINATION
|
||||
"${CMAKE_INSTALL_CMAKEDIR}"
|
||||
)
|
||||
IF (NOT MSGPACK_CXX_ONLY)
|
||||
INSTALL (EXPORT msgpack-targets
|
||||
FILE
|
||||
msgpack-targets.cmake
|
||||
DESTINATION
|
||||
"${CMAKE_INSTALL_CMAKEDIR}"
|
||||
)
|
||||
|
||||
INSTALL (
|
||||
FILES
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/msgpack-config.cmake"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/msgpack-config-version.cmake"
|
||||
DESTINATION
|
||||
"${CMAKE_INSTALL_CMAKEDIR}"
|
||||
)
|
||||
INSTALL (
|
||||
FILES
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/msgpack-config.cmake"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/msgpack-config-version.cmake"
|
||||
DESTINATION
|
||||
"${CMAKE_INSTALL_CMAKEDIR}"
|
||||
)
|
||||
ENDIF ()
|
||||
|
34
Files.cmake
34
Files.cmake
@@ -5,14 +5,11 @@ LIST (APPEND msgpackc_SOURCES
|
||||
src/vrefbuffer.c
|
||||
src/zone.c
|
||||
)
|
||||
|
||||
# For both C and C++ libraries
|
||||
LIST (APPEND msgpackc_HEADERS
|
||||
include/msgpack.h
|
||||
include/msgpack/fbuffer.h
|
||||
include/msgpack/gcc_atomic.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/architecture.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/version.h
|
||||
include/msgpack/predef/version_number.h
|
||||
include/msgpack/sbuffer.h
|
||||
include/msgpack/sysdep.h
|
||||
include/msgpack/timestamp.h
|
||||
include/msgpack/unpack.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/vrefbuffer.h
|
||||
include/msgpack/zbuffer.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)
|
||||
# Only for C++ library
|
||||
LIST (APPEND msgpackc_HEADERS
|
||||
include/msgpack.hpp
|
||||
include/msgpack/adaptor/adaptor_base.hpp
|
||||
|
@@ -6,10 +6,11 @@ Currently, RPC implementation is not available.
|
||||
|
||||
# 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
|
||||
@@ -23,48 +24,44 @@ You can also install via Homebrew.
|
||||
$ 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
|
||||
$ cd msgpack-1.3.0
|
||||
$ ./configure
|
||||
$ 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
|
||||
$ ./bootstrap # If the 'configure' script already exists, you can omit this step.
|
||||
$ ./configure
|
||||
$ make
|
||||
$ sudo make install
|
||||
|
@@ -59,7 +59,7 @@ $ ./hello
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
|
||||
int main(void) {
|
||||
int main() {
|
||||
// serializes multiple objects using msgpack::packer.
|
||||
msgpack::sbuffer buffer;
|
||||
|
||||
@@ -98,7 +98,7 @@ int main(void) {
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
|
||||
int main(void) {
|
||||
int main() {
|
||||
// serializes multiple objects into one message containing an array using msgpack::packer.
|
||||
msgpack::sbuffer buffer;
|
||||
|
||||
@@ -139,7 +139,7 @@ public:
|
||||
MSGPACK_DEFINE(m_str, m_vec);
|
||||
};
|
||||
|
||||
int main(void) {
|
||||
int main() {
|
||||
std::vector<myclass> vec;
|
||||
// add some elements into vec...
|
||||
|
||||
|
@@ -1,7 +1,8 @@
|
||||
`msgpack` for C/C++
|
||||
===================
|
||||
|
||||
Version 3.2.0 [](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.
|
||||
|
||||
@@ -68,7 +69,7 @@ In C++:
|
||||
#include <iostream>
|
||||
#include <sstream>
|
||||
|
||||
int main(void)
|
||||
int main()
|
||||
{
|
||||
msgpack::type::tuple<int, bool, std::string> src(1, true, "example");
|
||||
|
||||
@@ -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.
|
||||
|
||||
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
|
||||
|
||||
|
@@ -1,4 +1,8 @@
|
||||
version: 3.2.0.{build}
|
||||
version: 3.3.0.{build}
|
||||
|
||||
branches:
|
||||
only:
|
||||
- master
|
||||
|
||||
image:
|
||||
- Visual Studio 2015
|
||||
@@ -51,7 +55,7 @@ build_script:
|
||||
- md 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 --build . --config Release
|
||||
- cmake --build . --config Release -v
|
||||
|
||||
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
|
||||
|
@@ -19,11 +19,13 @@ fi
|
||||
if [ "${ARCH}" == "32" ]
|
||||
then
|
||||
export BIT32="ON"
|
||||
export ARCH_FLAG="-m32"
|
||||
else
|
||||
export BIT32="OFF"
|
||||
export ARCH_FLAG="-m64"
|
||||
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=$?
|
||||
if [ $ret -ne 0 ]
|
||||
@@ -72,4 +74,39 @@ then
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "${ARCH}" != "32" ]
|
||||
then
|
||||
mkdir install-test
|
||||
|
||||
ret=$?
|
||||
if [ $ret -ne 0 ]
|
||||
then
|
||||
exit $ret
|
||||
fi
|
||||
|
||||
cd install-test
|
||||
|
||||
ret=$?
|
||||
if [ $ret -ne 0 ]
|
||||
then
|
||||
exit $ret
|
||||
fi
|
||||
|
||||
cmake -DCMAKE_PREFIX_PATH=`pwd`/../install/usr/local/lib/cmake ../../example/cmake
|
||||
|
||||
ret=$?
|
||||
if [ $ret -ne 0 ]
|
||||
then
|
||||
exit $ret
|
||||
fi
|
||||
|
||||
make
|
||||
|
||||
ret=$?
|
||||
if [ $ret -ne 0 ]
|
||||
then
|
||||
exit $ret
|
||||
fi
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
59
ci/build_cmake_embedded.sh
Executable file
59
ci/build_cmake_embedded.sh
Executable file
@@ -0,0 +1,59 @@
|
||||
#!/bin/bash
|
||||
|
||||
cd example/cmake
|
||||
|
||||
ret=$?
|
||||
if [ $ret -ne 0 ]
|
||||
then
|
||||
exit $ret
|
||||
fi
|
||||
|
||||
rm -f msgpack-c
|
||||
|
||||
ret=$?
|
||||
if [ $ret -ne 0 ]
|
||||
then
|
||||
exit $ret
|
||||
fi
|
||||
|
||||
ln -s ../.. msgpack-c
|
||||
|
||||
ret=$?
|
||||
if [ $ret -ne 0 ]
|
||||
then
|
||||
exit $ret
|
||||
fi
|
||||
|
||||
mkdir build
|
||||
|
||||
ret=$?
|
||||
if [ $ret -ne 0 ]
|
||||
then
|
||||
exit $ret
|
||||
fi
|
||||
|
||||
cd build
|
||||
|
||||
ret=$?
|
||||
if [ $ret -ne 0 ]
|
||||
then
|
||||
exit $ret
|
||||
fi
|
||||
|
||||
cmake -DEXAMPLE_MSGPACK_EMBEDDED=ON ..
|
||||
|
||||
ret=$?
|
||||
if [ $ret -ne 0 ]
|
||||
then
|
||||
exit $ret
|
||||
fi
|
||||
|
||||
make example example-static
|
||||
|
||||
ret=$?
|
||||
if [ $ret -ne 0 ]
|
||||
then
|
||||
exit $ret
|
||||
fi
|
||||
|
||||
exit 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)
|
||||
ADD_SUBDIRECTORY (cpp03)
|
||||
ADD_SUBDIRECTORY (cpp11)
|
||||
ADD_SUBDIRECTORY (boost)
|
||||
ADD_SUBDIRECTORY (x3)
|
||||
IF (NOT MSGPACK_CXX_ONLY)
|
||||
ADD_SUBDIRECTORY (c)
|
||||
ENDIF ()
|
||||
IF (MSGPACK_ENABLE_CXX)
|
||||
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}
|
||||
PRIVATE
|
||||
$<TARGET_PROPERTY:msgpackc,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:msgpackc-cxx,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
)
|
||||
TARGET_LINK_LIBRARIES (${source_file_we}
|
||||
${Boost_SYSTEM_LIBRARY}
|
||||
|
@@ -83,7 +83,8 @@ int main() {
|
||||
u.address = "Tokyo";
|
||||
msgpack::pack(ss, u);
|
||||
|
||||
msgpack::object_handle oh = msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh = msgpack::unpack(str.data(), str.size());
|
||||
msgpack::object const& obj = oh.get();
|
||||
std::cout << "Unpacked msgpack object." << std::endl;
|
||||
std::cout << obj << std::endl;
|
||||
|
@@ -1,19 +1,16 @@
|
||||
IF (MSGPACK_ENABLE_SHARED)
|
||||
SET (MSGPACK_LIB msgpackc)
|
||||
ENDIF ()
|
||||
|
||||
IF (MSGPACK_ENABLE_STATIC)
|
||||
SET (MSGPACK_LIB msgpackc-static)
|
||||
ENDIF ()
|
||||
|
||||
FIND_PACKAGE (cJSON)
|
||||
|
||||
LIST (APPEND exec_PROGRAMS
|
||||
boundary.c
|
||||
lib_buffer_unpack.c
|
||||
simple_c.c
|
||||
speed_test_uint32_array.c
|
||||
speed_test_uint64_array.c
|
||||
user_buffer_unpack.c
|
||||
)
|
||||
IF (cJSON_FOUND)
|
||||
LIST (APPEND exec_PROGRAMS jsonconv.c)
|
||||
ENDIF ()
|
||||
|
||||
FOREACH (source_file ${exec_PROGRAMS})
|
||||
GET_FILENAME_COMPONENT (source_file_we ${source_file} NAME_WE)
|
||||
@@ -22,21 +19,26 @@ FOREACH (source_file ${exec_PROGRAMS})
|
||||
${source_file}
|
||||
)
|
||||
TARGET_LINK_LIBRARIES (${source_file_we}
|
||||
${MSGPACK_LIB}
|
||||
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")
|
||||
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")
|
||||
ENDIF ()
|
||||
|
||||
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
|
||||
IF (CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
|
||||
STRING(REGEX REPLACE "/W[0-4]" "/W3 /WX" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
||||
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_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W3 /WX")
|
||||
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W3 /WX")
|
||||
ENDIF ()
|
||||
ENDIF ()
|
||||
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 <stdio.h>
|
||||
|
||||
void print(char const* buf, unsigned int len)
|
||||
void print(char const* buf,size_t len)
|
||||
{
|
||||
size_t i = 0;
|
||||
for(; i < len ; ++i)
|
||||
|
17
example/cmake/CMakeLists.txt
Normal file
17
example/cmake/CMakeLists.txt
Normal file
@@ -0,0 +1,17 @@
|
||||
cmake_minimum_required (VERSION 3.0)
|
||||
project (example)
|
||||
|
||||
if(EXAMPLE_MSGPACK_EMBEDDED)
|
||||
add_subdirectory(msgpack-c)
|
||||
set(msgpack_DIR ${CMAKE_CURRENT_BINARY_DIR}/msgpack-c)
|
||||
endif()
|
||||
|
||||
find_package(msgpack REQUIRED)
|
||||
|
||||
add_executable (${PROJECT_NAME} ${CMAKE_CURRENT_LIST_DIR}/../c/simple_c.c)
|
||||
target_link_libraries(${PROJECT_NAME} msgpackc)
|
||||
|
||||
if(TARGET msgpackc-static)
|
||||
add_executable (${PROJECT_NAME}-static ${CMAKE_CURRENT_LIST_DIR}/../c/simple_c.c)
|
||||
target_link_libraries(${PROJECT_NAME}-static msgpackc-static)
|
||||
endif()
|
@@ -37,7 +37,7 @@ FOREACH (source_file ${exec_PROGRAMS})
|
||||
)
|
||||
TARGET_INCLUDE_DIRECTORIES (${source_file_we}
|
||||
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")
|
||||
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}
|
||||
PRIVATE
|
||||
$<TARGET_PROPERTY:msgpackc,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:msgpackc-cxx,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
)
|
||||
TARGET_LINK_LIBRARIES (${source_file_we}
|
||||
${CMAKE_THREAD_LIBS_INIT}
|
||||
@@ -88,7 +88,7 @@ FOREACH (source_file ${with_boost_lib_PROGRAMS})
|
||||
)
|
||||
TARGET_INCLUDE_DIRECTORIES (${source_file_we}
|
||||
PRIVATE
|
||||
$<TARGET_PROPERTY:msgpackc,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:msgpackc-cxx,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
)
|
||||
LINK_DIRECTORIES(${Boost_LIBRARY_DIRS})
|
||||
TARGET_LINK_LIBRARIES (${source_file_we}
|
||||
|
@@ -82,10 +82,11 @@ int main() {
|
||||
std::stringstream ss;
|
||||
msgpack::pack(ss, my);
|
||||
|
||||
print(ss.str());
|
||||
std::string const& str = ss.str();
|
||||
print(str);
|
||||
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(str.data(), str.size());
|
||||
msgpack::object obj = oh.get();
|
||||
std::cout << obj << std::endl;
|
||||
assert(obj.as<my_class>() == my);
|
||||
|
@@ -59,8 +59,9 @@ int main() {
|
||||
|
||||
print(ss.str());
|
||||
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(str.data(), str.size());
|
||||
msgpack::object obj = oh.get();
|
||||
std::cout << obj << std::endl;
|
||||
assert(obj.as<my_class>() == my);
|
||||
|
@@ -100,10 +100,11 @@ int main() {
|
||||
std::stringstream ss;
|
||||
msgpack::pack(ss, my);
|
||||
|
||||
print(ss.str());
|
||||
std::string const& str = ss.str();
|
||||
print(str);
|
||||
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(str.data(), str.size());
|
||||
msgpack::object obj = oh.get();
|
||||
std::cout << obj << std::endl;
|
||||
assert(obj.as<my_class>() == my);
|
||||
|
@@ -71,7 +71,8 @@ int main() {
|
||||
|
||||
print(ss.str());
|
||||
|
||||
msgpack::object_handle oh = msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh = msgpack::unpack(str.data(), str.size());
|
||||
|
||||
msgpack::object obj = oh.get();
|
||||
std::cout << obj << std::endl;
|
||||
|
@@ -31,12 +31,13 @@ int main() {
|
||||
std::size_t offset = 0;
|
||||
|
||||
// msgpack array is constructed on z.
|
||||
msgpack::object obj = msgpack::unpack(z, ss.str().data(), ss.str().size(), offset);
|
||||
std::string const& ps = ss.str();
|
||||
msgpack::object obj = msgpack::unpack(z, ps.data(), ps.size(), offset);
|
||||
std::cout << obj << std::endl;
|
||||
assert(obj.as<std::vector<int> >() == v);
|
||||
|
||||
// msgpack str is constructed on z.
|
||||
std::string const& str = msgpack::unpack(z, ss.str().data(), ss.str().size(), offset).as<std::string>();
|
||||
std::string const& str = msgpack::unpack(z, ps.data(), ps.size(), offset).as<std::string>();
|
||||
std::cout << str << std::endl;
|
||||
assert(str == s);
|
||||
}
|
||||
|
@@ -1,4 +1,4 @@
|
||||
IF (MSGPACK_CXX11)
|
||||
IF (MSGPACK_CXX11 OR MSGPACK_CXX17)
|
||||
INCLUDE_DIRECTORIES (
|
||||
../include
|
||||
)
|
||||
@@ -22,7 +22,7 @@ IF (MSGPACK_CXX11)
|
||||
)
|
||||
TARGET_INCLUDE_DIRECTORIES (${source_file_we}
|
||||
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")
|
||||
SET_PROPERTY (TARGET ${source_file_we} APPEND_STRING PROPERTY COMPILE_FLAGS " -Wall -Wextra")
|
||||
|
@@ -37,7 +37,8 @@ void tuple() {
|
||||
std::stringstream ss;
|
||||
msgpack::pack(ss, t);
|
||||
|
||||
auto oh = msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
auto const& str = ss.str();
|
||||
auto oh = msgpack::unpack(str.data(), str.size());
|
||||
auto obj = oh.get();
|
||||
|
||||
std::cout << obj << std::endl;
|
||||
@@ -49,7 +50,8 @@ void unordered_map() {
|
||||
std::stringstream ss;
|
||||
msgpack::pack(ss, m);
|
||||
|
||||
auto oh = msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
auto const& str = ss.str();
|
||||
auto oh = msgpack::unpack(str.data(), str.size());
|
||||
msgpack::object obj = oh.get();
|
||||
|
||||
std::cout << obj << std::endl;
|
||||
@@ -61,7 +63,8 @@ void unordered_set() {
|
||||
std::stringstream ss;
|
||||
msgpack::pack(ss, s);
|
||||
|
||||
auto oh = msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
auto const& str = ss.str();
|
||||
auto oh = msgpack::unpack(str.data(), str.size());
|
||||
auto obj = oh.get();
|
||||
|
||||
std::cout << obj << std::endl;
|
||||
@@ -74,7 +77,8 @@ void forward_list() {
|
||||
std::stringstream ss;
|
||||
msgpack::pack(ss, f);
|
||||
|
||||
auto oh = msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
auto const& str = ss.str();
|
||||
auto oh = msgpack::unpack(str.data(), str.size());
|
||||
auto obj = oh.get();
|
||||
|
||||
std::cout << obj << std::endl;
|
||||
@@ -98,7 +102,8 @@ void combi() {
|
||||
std::size_t offset = 0;
|
||||
std::cout << "offset: " << offset << std::endl;
|
||||
{
|
||||
auto oh = msgpack::unpack(ss.str().data(), ss.str().size(), offset);
|
||||
auto const& str = ss.str();
|
||||
auto oh = msgpack::unpack(str.data(), str.size(), offset);
|
||||
auto obj = oh.get();
|
||||
|
||||
std::cout << obj << std::endl;
|
||||
@@ -106,7 +111,8 @@ void combi() {
|
||||
}
|
||||
std::cout << "offset: " << offset << std::endl;
|
||||
{
|
||||
auto oh = msgpack::unpack(ss.str().data(), ss.str().size(), offset);
|
||||
auto const& str = ss.str();
|
||||
auto oh = msgpack::unpack(str.data(), str.size(), offset);
|
||||
auto obj = oh.get();
|
||||
|
||||
std::cout << obj << std::endl;
|
||||
@@ -114,7 +120,8 @@ void combi() {
|
||||
}
|
||||
std::cout << "offset: " << offset << std::endl;
|
||||
{
|
||||
auto oh = msgpack::unpack(ss.str().data(), ss.str().size(), offset);
|
||||
auto const& str = ss.str();
|
||||
auto oh = msgpack::unpack(str.data(), str.size(), offset);
|
||||
auto obj = oh.get();
|
||||
|
||||
std::cout << obj << std::endl;
|
||||
@@ -122,7 +129,8 @@ void combi() {
|
||||
}
|
||||
std::cout << "offset: " << offset << std::endl;
|
||||
{
|
||||
auto oh = msgpack::unpack(ss.str().data(), ss.str().size(), offset);
|
||||
auto const& str = ss.str();
|
||||
auto oh = msgpack::unpack(str.data(), str.size(), offset);
|
||||
auto obj = oh.get();
|
||||
|
||||
std::cout << obj << std::endl;
|
||||
@@ -130,7 +138,8 @@ void combi() {
|
||||
}
|
||||
std::cout << "offset: " << offset << std::endl;
|
||||
{
|
||||
auto oh = msgpack::unpack(ss.str().data(), ss.str().size(), offset);
|
||||
auto const& str = ss.str();
|
||||
auto oh = msgpack::unpack(str.data(), str.size(), offset);
|
||||
auto obj = oh.get();
|
||||
|
||||
std::cout << obj << std::endl;
|
||||
|
@@ -20,7 +20,7 @@ IF (MSGPACK_USE_X3_PARSE AND MSGPACK_DEFAULT_API_VERSION VERSION_GREATER 1)
|
||||
)
|
||||
TARGET_INCLUDE_DIRECTORIES (${source_file_we}
|
||||
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")
|
||||
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}
|
||||
PRIVATE
|
||||
$<TARGET_PROPERTY:msgpackc,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:msgpackc-cxx,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
)
|
||||
TARGET_LINK_LIBRARIES (${source_file_we}
|
||||
${Boost_CONTEXT_LIBRARY}
|
||||
|
@@ -25,7 +25,7 @@ extern "C" {
|
||||
|
||||
static inline int msgpack_fbuffer_write(void* data, const char* buf, size_t len)
|
||||
{
|
||||
return (len == fwrite(buf, len, 1, (FILE *)data)) ? 0 : -1;
|
||||
return (1 == fwrite(buf, len, 1, (FILE *)data)) ? 0 : -1;
|
||||
}
|
||||
|
||||
/** @} */
|
||||
|
@@ -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_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_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_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_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);
|
||||
|
||||
@@ -143,7 +146,27 @@ inline void msgpack_packer_free(msgpack_packer* 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
|
||||
}
|
||||
#endif
|
||||
|
@@ -14,7 +14,7 @@
|
||||
#include <stddef.h>
|
||||
|
||||
#if defined(_MSC_VER) && _MSC_VER <= 1800
|
||||
# define snprintf(buf, len, format,...) _snprintf_s(buf, len, len, format, __VA_ARGS__)
|
||||
# define snprintf(buf, len, format,...) _snprintf_s(buf, len, _TRUNCATE, format, __VA_ARGS__)
|
||||
#endif
|
||||
|
||||
#if defined(_MSC_VER) && _MSC_VER < 1600
|
||||
|
@@ -258,14 +258,15 @@ struct object_with_zone<msgpack::type::array_ref<T> > {
|
||||
o.via.array.size = size;
|
||||
typename T::const_iterator it(v.data->begin());
|
||||
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 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);
|
||||
#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
|
||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||
++p;
|
||||
++it;
|
||||
} while(p < pend);
|
||||
|
@@ -15,16 +15,16 @@
|
||||
#include "msgpack/adaptor/check_container_size.hpp"
|
||||
|
||||
// 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 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>
|
||||
|
||||
#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
|
||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) || defined(__clang__)
|
||||
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) || defined(__clang__)
|
||||
|
||||
namespace msgpack {
|
||||
|
||||
|
@@ -35,27 +35,27 @@ struct convert<std::vector<std::byte, Alloc> > {
|
||||
case msgpack::type::BIN:
|
||||
v.resize(o.via.bin.size);
|
||||
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 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);
|
||||
#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
|
||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||
}
|
||||
break;
|
||||
case msgpack::type::STR:
|
||||
v.resize(o.via.str.size);
|
||||
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 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);
|
||||
#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
|
||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
@@ -201,15 +201,15 @@ struct object_with_zone<std::map<K, V, Compare, Alloc> > {
|
||||
o.via.map.size = size;
|
||||
typename std::map<K, V, Compare, Alloc>::const_iterator it(v.begin());
|
||||
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 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->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
|
||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||
++p;
|
||||
++it;
|
||||
} while(p < pend);
|
||||
|
@@ -95,14 +95,14 @@ struct object_with_zone<std::vector<T, Alloc> > {
|
||||
o.via.array.size = size;
|
||||
typename std::vector<T, Alloc>::const_iterator it(v.begin());
|
||||
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 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);
|
||||
#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
|
||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||
++p;
|
||||
++it;
|
||||
} while(p < pend);
|
||||
|
@@ -32,27 +32,27 @@ struct convert<std::vector<char, Alloc> > {
|
||||
case msgpack::type::BIN:
|
||||
v.resize(o.via.bin.size);
|
||||
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 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);
|
||||
#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
|
||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||
}
|
||||
break;
|
||||
case msgpack::type::STR:
|
||||
v.resize(o.via.str.size);
|
||||
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 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);
|
||||
#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
|
||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
@@ -32,27 +32,27 @@ struct convert<std::vector<unsigned char, Alloc> > {
|
||||
case msgpack::type::BIN:
|
||||
v.resize(o.via.bin.size);
|
||||
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 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);
|
||||
#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
|
||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||
}
|
||||
break;
|
||||
case msgpack::type::STR:
|
||||
v.resize(o.via.str.size);
|
||||
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 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);
|
||||
#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
|
||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
@@ -95,14 +95,14 @@ struct object_with_zone<std::wstring> {
|
||||
o.via.array.size = size;
|
||||
std::wstring::const_iterator it(v.begin());
|
||||
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 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);
|
||||
#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
|
||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||
++p;
|
||||
++it;
|
||||
} while(p < pend);
|
||||
|
@@ -113,10 +113,13 @@ struct unpack_array {
|
||||
if (n > u.limit().array()) throw msgpack::array_size_overflow("array size overflow");
|
||||
o.type = msgpack::type::ARRAY;
|
||||
o.via.array.size = 0;
|
||||
size_t size = n*sizeof(msgpack::object);
|
||||
if (size / sizeof(msgpack::object) != n) {
|
||||
|
||||
#if SIZE_MAX == UINT_MAX
|
||||
if (n > SIZE_MAX/sizeof(msgpack::object))
|
||||
throw msgpack::array_size_overflow("array size overflow");
|
||||
}
|
||||
#endif // SIZE_MAX == UINT_MAX
|
||||
|
||||
size_t size = n*sizeof(msgpack::object);
|
||||
o.via.array.ptr = static_cast<msgpack::object*>(u.zone().allocate_align(size, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||
}
|
||||
};
|
||||
@@ -125,6 +128,7 @@ inline void unpack_array_item(msgpack::object& c, msgpack::object const& o)
|
||||
{
|
||||
#if defined(__GNUC__) && !defined(__clang__)
|
||||
std::memcpy(&c.via.array.ptr[c.via.array.size++], &o, sizeof(msgpack::object));
|
||||
|
||||
#else /* __GNUC__ && !__clang__ */
|
||||
c.via.array.ptr[c.via.array.size++] = o;
|
||||
#endif /* __GNUC__ && !__clang__ */
|
||||
@@ -135,10 +139,13 @@ struct unpack_map {
|
||||
if (n > u.limit().map()) throw msgpack::map_size_overflow("map size overflow");
|
||||
o.type = msgpack::type::MAP;
|
||||
o.via.map.size = 0;
|
||||
size_t size = n*sizeof(msgpack::object_kv);
|
||||
if (size / sizeof(msgpack::object_kv) != n) {
|
||||
|
||||
#if SIZE_MAX == UINT_MAX
|
||||
if (n > SIZE_MAX/sizeof(msgpack::object_kv))
|
||||
throw msgpack::map_size_overflow("map size overflow");
|
||||
}
|
||||
#endif // SIZE_MAX == UINT_MAX
|
||||
|
||||
size_t size = n*sizeof(msgpack::object_kv);
|
||||
o.via.map.ptr = static_cast<msgpack::object_kv*>(u.zone().allocate_align(size, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
|
||||
}
|
||||
};
|
||||
|
@@ -69,6 +69,7 @@ public:
|
||||
case Z_STREAM_END:
|
||||
return m_data;
|
||||
case Z_OK:
|
||||
case Z_BUF_ERROR:
|
||||
if(!expand()) {
|
||||
throw std::bad_alloc();
|
||||
}
|
||||
|
@@ -163,10 +163,13 @@ public:
|
||||
obj->via.array.ptr = MSGPACK_NULLPTR;
|
||||
}
|
||||
else {
|
||||
size_t size = num_elements*sizeof(msgpack::object);
|
||||
if (size / sizeof(msgpack::object) != num_elements) {
|
||||
|
||||
#if SIZE_MAX == UINT_MAX
|
||||
if (num_elements > SIZE_MAX/sizeof(msgpack::object))
|
||||
throw msgpack::array_size_overflow("array size overflow");
|
||||
}
|
||||
#endif // SIZE_MAX == UINT_MAX
|
||||
|
||||
size_t size = num_elements*sizeof(msgpack::object);
|
||||
obj->via.array.ptr =
|
||||
static_cast<msgpack::object*>(m_zone->allocate_align(size, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||
}
|
||||
@@ -194,10 +197,12 @@ public:
|
||||
obj->via.map.ptr = MSGPACK_NULLPTR;
|
||||
}
|
||||
else {
|
||||
size_t size = num_kv_pairs*sizeof(msgpack::object_kv);
|
||||
if (size / sizeof(msgpack::object_kv) != num_kv_pairs) {
|
||||
|
||||
#if SIZE_MAX == UINT_MAX
|
||||
if (num_kv_pairs > SIZE_MAX/sizeof(msgpack::object_kv))
|
||||
throw msgpack::map_size_overflow("map size overflow");
|
||||
}
|
||||
#endif // SIZE_MAX == UINT_MAX
|
||||
size_t size = num_kv_pairs*sizeof(msgpack::object_kv);
|
||||
obj->via.map.ptr =
|
||||
static_cast<msgpack::object_kv*>(m_zone->allocate_align(size, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
|
||||
}
|
||||
|
@@ -241,8 +241,6 @@ inline parse_return context<VisitorHolder>::execute(const char* data, std::size_
|
||||
const char* const pe = data + len;
|
||||
const char* n = MSGPACK_NULLPTR;
|
||||
|
||||
msgpack::object obj;
|
||||
|
||||
if(m_current == pe) {
|
||||
off = static_cast<std::size_t>(m_current - m_start);
|
||||
return PARSE_CONTINUE;
|
||||
|
@@ -250,8 +250,6 @@ inline parse_return context<VisitorHolder>::execute(const char* data, std::size_
|
||||
const char* const pe = data + len;
|
||||
const char* n = MSGPACK_NULLPTR;
|
||||
|
||||
msgpack::object obj;
|
||||
|
||||
if(m_current == pe) {
|
||||
off = static_cast<std::size_t>(m_current - m_start);
|
||||
return PARSE_CONTINUE;
|
||||
|
@@ -33,9 +33,9 @@ inline msgpack::object_handle unpack(
|
||||
data, len, off, *z, obj, referenced, f, user_data, limit);
|
||||
|
||||
switch(ret) {
|
||||
case msgpack::PARSE_SUCCESS:
|
||||
case PARSE_SUCCESS:
|
||||
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));
|
||||
default:
|
||||
break;
|
||||
@@ -84,11 +84,11 @@ inline void unpack(
|
||||
data, len, off, *z, obj, referenced, f, user_data, limit);
|
||||
|
||||
switch(ret) {
|
||||
case msgpack::PARSE_SUCCESS:
|
||||
case PARSE_SUCCESS:
|
||||
result.set(obj);
|
||||
result.zone() = msgpack::move(z);
|
||||
return;
|
||||
case msgpack::PARSE_EXTRA_BYTES:
|
||||
case PARSE_EXTRA_BYTES:
|
||||
result.set(obj);
|
||||
result.zone() = msgpack::move(z);
|
||||
return;
|
||||
@@ -141,9 +141,9 @@ inline msgpack::object unpack(
|
||||
data, len, off, z, obj, referenced, f, user_data, limit);
|
||||
|
||||
switch(ret) {
|
||||
case msgpack::PARSE_SUCCESS:
|
||||
case PARSE_SUCCESS:
|
||||
return obj;
|
||||
case msgpack::PARSE_EXTRA_BYTES:
|
||||
case PARSE_EXTRA_BYTES:
|
||||
return obj;
|
||||
default:
|
||||
break;
|
||||
|
@@ -1,3 +1,3 @@
|
||||
#define MSGPACK_VERSION_MAJOR 3
|
||||
#define MSGPACK_VERSION_MINOR 2
|
||||
#define MSGPACK_VERSION_MINOR 3
|
||||
#define MSGPACK_VERSION_REVISION 0
|
||||
|
@@ -13,7 +13,7 @@
|
||||
#include "zone.h"
|
||||
#include <stdlib.h>
|
||||
|
||||
#if defined(unix) || defined(__unix) || defined(__APPLE__) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(__QNX__) || defined(__QNXTO__)
|
||||
#if defined(unix) || defined(__unix) || defined(__linux__) || defined(__APPLE__) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(__QNX__) || defined(__QNXTO__) || defined(__HAIKU__)
|
||||
#include <sys/uio.h>
|
||||
#else
|
||||
struct iovec {
|
||||
|
@@ -100,7 +100,7 @@ static inline void msgpack_zbuffer_free(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 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->stream.next_out = (Bytef*)(tmp + used);
|
||||
zbuf->stream.avail_out = static_cast<uInt>(nsize - used);
|
||||
zbuf->stream.avail_out = (uInt)(nsize - used);
|
||||
|
||||
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;
|
||||
|
||||
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) {
|
||||
if(zbuf->stream.avail_out < MSGPACK_ZBUFFER_RESERVE_SIZE) {
|
||||
@@ -146,6 +146,7 @@ static inline char* msgpack_zbuffer_flush(msgpack_zbuffer* zbuf)
|
||||
case Z_STREAM_END:
|
||||
return zbuf->data;
|
||||
case Z_OK:
|
||||
case Z_BUF_ERROR:
|
||||
if(!msgpack_zbuffer_expand(zbuf)) {
|
||||
return NULL;
|
||||
}
|
||||
@@ -163,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)
|
||||
{
|
||||
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)
|
||||
|
@@ -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 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
|
||||
|
||||
echo 'LIST (APPEND msgpackc_SOURCES' > 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
|
||||
cat c_headers.tmp | sed -e 's/^/ /g' >> Files.cmake
|
||||
echo ')' >> Files.cmake
|
||||
echo '# For both C and C++ libraries
|
||||
LIST (APPEND msgpackc_HEADERS' >> 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 ' LIST (APPEND msgpackc_HEADERS' >> Files.cmake
|
||||
echo 'IF (NOT MSGPACK_CXX_ONLY)
|
||||
# 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
|
||||
echo ' )' >> Files.cmake
|
||||
echo 'ENDIF ()' >> Files.cmake
|
||||
echo -e ' )\nENDIF ()' >> 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
|
||||
|
@@ -6,8 +6,9 @@
|
||||
#
|
||||
# ::
|
||||
#
|
||||
# msgpackc-static
|
||||
# msgpackc
|
||||
# msgpackc-cxx
|
||||
# msgpackc-static (optional)
|
||||
#
|
||||
|
||||
@PACKAGE_INIT@
|
||||
@@ -16,8 +17,4 @@ include(CMakeFindDependencyMacro)
|
||||
|
||||
if(NOT TARGET msgpackc AND NOT TARGET msgpackc-static)
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/msgpack-targets.cmake")
|
||||
|
||||
if(NOT @MSGPACK_ENABLE_SHARED@)
|
||||
add_library(msgpackc ALIAS msgpackc-static)
|
||||
endif()
|
||||
endif()
|
||||
|
@@ -256,7 +256,7 @@ void msgpack_object_print(FILE* out, msgpack_object o)
|
||||
|
||||
#define MSGPACK_CHECKED_CALL(ret, func, aux_buffer, aux_buffer_size, ...) \
|
||||
ret = func(aux_buffer, aux_buffer_size, __VA_ARGS__); \
|
||||
if (ret <= 0 || ret > (int)aux_buffer_size) return 0; \
|
||||
if (ret <= 0 || ret >= (int)aux_buffer_size) return 0; \
|
||||
aux_buffer = aux_buffer + ret; \
|
||||
aux_buffer_size = aux_buffer_size - ret \
|
||||
|
||||
|
@@ -25,6 +25,12 @@ bool msgpack_vrefbuffer_init(msgpack_vrefbuffer* vbuf,
|
||||
struct iovec* array;
|
||||
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->ref_size =
|
||||
ref_size > MSGPACK_PACKER_MAX_BUFFER_SIZE + 1 ?
|
||||
|
@@ -7,73 +7,85 @@ INCLUDE_DIRECTORIES (
|
||||
${ZLIB_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
LIST (APPEND check_PROGRAMS
|
||||
array_ref.cpp
|
||||
buffer.cpp
|
||||
carray.cpp
|
||||
cases.cpp
|
||||
convert.cpp
|
||||
fixint.cpp
|
||||
SET (tests_C
|
||||
buffer_c.cpp
|
||||
fixint_c.cpp
|
||||
inc_adaptor_define.cpp
|
||||
json.cpp
|
||||
limit.cpp
|
||||
msgpack_basic.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
|
||||
raw.cpp
|
||||
reference.cpp
|
||||
size_equal_only.cpp
|
||||
streaming.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
|
||||
boost_fusion.cpp
|
||||
boost_variant.cpp
|
||||
boost_optional.cpp
|
||||
boost_string_ref.cpp
|
||||
boost_string_view.cpp
|
||||
${tests_C}
|
||||
)
|
||||
ENDIF ()
|
||||
|
||||
IF (MSGPACK_USE_X3_PARSE)
|
||||
IF (MSGPACK_ENABLE_CXX)
|
||||
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)
|
||||
LIST (APPEND check_PROGRAMS
|
||||
iterator_cpp11.cpp
|
||||
msgpack_cpp11.cpp
|
||||
reference_cpp11.cpp
|
||||
reference_wrapper_cpp11.cpp
|
||||
shared_ptr_cpp11.cpp
|
||||
unique_ptr_cpp11.cpp
|
||||
IF (MSGPACK_BOOST)
|
||||
LIST (APPEND check_PROGRAMS
|
||||
boost_fusion.cpp
|
||||
boost_variant.cpp
|
||||
boost_optional.cpp
|
||||
boost_string_ref.cpp
|
||||
boost_string_view.cpp
|
||||
)
|
||||
ENDIF ()
|
||||
|
||||
# fuzzers are cpp11 only
|
||||
fuzz_unpack_pack_fuzzer_cpp11.cpp
|
||||
)
|
||||
ENDIF ()
|
||||
IF (MSGPACK_USE_X3_PARSE)
|
||||
LIST (APPEND check_PROGRAMS
|
||||
msgpack_x3_parse.cpp
|
||||
)
|
||||
ENDIF ()
|
||||
|
||||
IF (MSGPACK_CXX17)
|
||||
LIST (APPEND check_PROGRAMS
|
||||
msgpack_cpp17.cpp
|
||||
)
|
||||
ENDIF ()
|
||||
IF (MSGPACK_CXX11 OR MSGPACK_CXX17)
|
||||
LIST (APPEND check_PROGRAMS
|
||||
iterator_cpp11.cpp
|
||||
msgpack_cpp11.cpp
|
||||
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})
|
||||
GET_FILENAME_COMPONENT (source_file_we ${source_file} NAME_WE)
|
||||
@@ -81,8 +93,16 @@ FOREACH (source_file ${check_PROGRAMS})
|
||||
${source_file_we}
|
||||
${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}
|
||||
msgpackc
|
||||
${link_target}
|
||||
${GTEST_BOTH_LIBRARIES}
|
||||
${ZLIB_LIBRARIES}
|
||||
${CMAKE_THREAD_LIBS_INIT}
|
||||
@@ -96,20 +116,22 @@ FOREACH (source_file ${check_PROGRAMS})
|
||||
ENDIF ()
|
||||
|
||||
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}")
|
||||
ELSE ()
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W3")
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W3 /WX")
|
||||
ENDIF ()
|
||||
ENDIF ()
|
||||
ENDFOREACH ()
|
||||
|
||||
ADD_EXECUTABLE (
|
||||
multi_file
|
||||
multi_file1.cpp multi_file2.cpp
|
||||
)
|
||||
TARGET_INCLUDE_DIRECTORIES (multi_file
|
||||
PRIVATE
|
||||
$<TARGET_PROPERTY:msgpackc,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
)
|
||||
ADD_TEST (multi_file multi_file)
|
||||
IF (MSGPACK_ENABLE_CXX)
|
||||
ADD_EXECUTABLE (
|
||||
multi_file
|
||||
multi_file1.cpp multi_file2.cpp
|
||||
)
|
||||
TARGET_INCLUDE_DIRECTORIES (multi_file
|
||||
PRIVATE
|
||||
$<TARGET_PROPERTY:msgpackc-cxx,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
)
|
||||
ADD_TEST (multi_file multi_file)
|
||||
ENDIF ()
|
||||
|
@@ -3,12 +3,16 @@
|
||||
#include <string>
|
||||
#include <sstream>
|
||||
|
||||
#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__)
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
@@ -25,8 +29,9 @@ TEST(MSGPACK_ARRAY_REF, pack_unpack_convert_vector_char)
|
||||
std::stringstream ss;
|
||||
msgpack::pack(ss, ar1);
|
||||
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(str.data(), str.size());
|
||||
EXPECT_EQ(oh.get().type, msgpack::type::ARRAY);
|
||||
std::vector<char> v2;
|
||||
msgpack::type::array_ref<std::vector<char> > ar2(v2);
|
||||
@@ -47,8 +52,9 @@ TEST(MSGPACK_ARRAY_REF, pack_unpack_convert_vector_char_const)
|
||||
std::stringstream ss;
|
||||
msgpack::pack(ss, ar1);
|
||||
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(str.data(), str.size());
|
||||
EXPECT_EQ(oh.get().type, msgpack::type::ARRAY);
|
||||
std::vector<char> v2;
|
||||
msgpack::type::array_ref<std::vector<char> > ar2(v2);
|
||||
@@ -67,8 +73,9 @@ TEST(MSGPACK_ARRAY_REF, pack_unpack_convert_vector_unsigned_char)
|
||||
std::stringstream ss;
|
||||
msgpack::pack(ss, ar1);
|
||||
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(str.data(), str.size());
|
||||
EXPECT_EQ(oh.get().type, msgpack::type::ARRAY);
|
||||
std::vector<unsigned char> v2;
|
||||
msgpack::type::array_ref<std::vector<unsigned char> > ar2(v2);
|
||||
@@ -89,8 +96,9 @@ TEST(MSGPACK_ARRAY_REF, pack_unpack_convert_vector_unsigned_char_const)
|
||||
std::stringstream ss;
|
||||
msgpack::pack(ss, ar1);
|
||||
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(str.data(), str.size());
|
||||
EXPECT_EQ(oh.get().type, msgpack::type::ARRAY);
|
||||
std::vector<unsigned char> v2;
|
||||
msgpack::type::array_ref<std::vector<unsigned char> > ar2(v2);
|
||||
@@ -184,8 +192,9 @@ TEST(MSGPACK_ARRAY_REF, pack_unpack_convert_array_char)
|
||||
std::stringstream ss;
|
||||
msgpack::pack(ss, ar1);
|
||||
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(str.data(), str.size());
|
||||
EXPECT_EQ(oh.get().type, msgpack::type::ARRAY);
|
||||
std::array<char, 3> v2;
|
||||
msgpack::type::array_ref<std::array<char, 3> > ar2(v2);
|
||||
@@ -203,8 +212,9 @@ TEST(MSGPACK_ARRAY_REF, pack_unpack_convert_array_char_const)
|
||||
std::stringstream ss;
|
||||
msgpack::pack(ss, ar1);
|
||||
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(str.data(), str.size());
|
||||
EXPECT_EQ(oh.get().type, msgpack::type::ARRAY);
|
||||
std::array<char, 3> v2;
|
||||
msgpack::type::array_ref<std::array<char, 3> > ar2(v2);
|
||||
@@ -220,8 +230,9 @@ TEST(MSGPACK_ARRAY_REF, pack_unpack_convert_array_unsigned_char)
|
||||
std::stringstream ss;
|
||||
msgpack::pack(ss, ar1);
|
||||
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(str.data(), str.size());
|
||||
EXPECT_EQ(oh.get().type, msgpack::type::ARRAY);
|
||||
std::array<unsigned char, 3> v2;
|
||||
msgpack::type::array_ref<std::array<unsigned char, 3> > ar2(v2);
|
||||
@@ -239,8 +250,9 @@ TEST(MSGPACK_ARRAY_REF, pack_unpack_convert_array_unsigned_char_const)
|
||||
std::stringstream ss;
|
||||
msgpack::pack(ss, ar1);
|
||||
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(str.data(), str.size());
|
||||
EXPECT_EQ(oh.get().type, msgpack::type::ARRAY);
|
||||
std::array<unsigned char, 3> v2;
|
||||
msgpack::type::array_ref<std::array<unsigned char, 3> > ar2(v2);
|
||||
|
@@ -3,12 +3,16 @@
|
||||
#include <iterator>
|
||||
#include <cmath>
|
||||
|
||||
#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__)
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
@@ -35,8 +39,9 @@ TEST(MSGPACK_BOOST, fusion_pack_unpack_convert)
|
||||
val1.f1 = 42;
|
||||
val1.f2 = 123.45;
|
||||
msgpack::pack(ss, val1);
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(str.data(), str.size());
|
||||
mystruct val2 = oh.get().as<mystruct>();
|
||||
EXPECT_TRUE(val1.f1 == val2.f1);
|
||||
EXPECT_TRUE(fabs(val2.f2 - val1.f2) <= kEPS);
|
||||
@@ -156,8 +161,9 @@ TEST(MSGPACK_BOOST, pack_convert_no_def_con)
|
||||
std::stringstream ss;
|
||||
mystruct_no_def_con val1(no_def_con1(1), no_def_con2(2), no_def_con1(3));
|
||||
msgpack::pack(ss, val1);
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(str.data(), str.size());
|
||||
mystruct_no_def_con val2 = oh.get().as<mystruct_no_def_con>();
|
||||
EXPECT_TRUE(val1 == val2);
|
||||
}
|
||||
@@ -207,8 +213,9 @@ TEST(MSGPACK_BOOST, pack_convert_no_def_con_def_con)
|
||||
std::stringstream ss;
|
||||
mystruct_no_def_con_def_con val1(no_def_con1(1), no_def_con2(2), 3);
|
||||
msgpack::pack(ss, val1);
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(str.data(), str.size());
|
||||
mystruct_no_def_con_def_con val2 = oh.get().as<mystruct_no_def_con_def_con>();
|
||||
EXPECT_TRUE(val1 == val2);
|
||||
}
|
||||
@@ -224,8 +231,9 @@ TEST(MSGPACK_BOOST, fusion_pack_unpack_convert_pair)
|
||||
std::stringstream ss;
|
||||
std::pair<bool, int> val1(false, 42);
|
||||
msgpack::pack(ss, val1);
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(str.data(), str.size());
|
||||
std::pair<bool, int> val2 = oh.get().as<std::pair<bool, int> >();
|
||||
EXPECT_TRUE(val1.first == val2.first);
|
||||
EXPECT_TRUE(val1.second == val2.second);
|
||||
@@ -240,8 +248,9 @@ TEST(MSGPACK_BOOST, fusion_pack_unpack_convert_tuple)
|
||||
std::stringstream ss;
|
||||
std::tuple<bool, int> val1(false, 42);
|
||||
msgpack::pack(ss, val1);
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(str.data(), str.size());
|
||||
std::tuple<bool, int> val2 = oh.get().as<std::tuple<bool, int> >();
|
||||
EXPECT_TRUE(val1 == val2);
|
||||
}
|
||||
|
@@ -2,12 +2,16 @@
|
||||
#include <sstream>
|
||||
#include <iterator>
|
||||
|
||||
#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__)
|
||||
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
@@ -21,8 +25,9 @@ TEST(MSGPACK_BOOST, pack_convert_nil)
|
||||
std::stringstream ss;
|
||||
boost::optional<int> val1;
|
||||
msgpack::pack(ss, val1);
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(str.data(), str.size());
|
||||
boost::optional<int> val2 = oh.get().as<boost::optional<int> >();
|
||||
EXPECT_TRUE(val1 == val2);
|
||||
}
|
||||
@@ -32,8 +37,9 @@ TEST(MSGPACK_BOOST, pack_convert_int)
|
||||
std::stringstream ss;
|
||||
boost::optional<int> val1 = 1;
|
||||
msgpack::pack(ss, val1);
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(str.data(), str.size());
|
||||
boost::optional<int> val2 = oh.get().as<boost::optional<int> >();
|
||||
EXPECT_TRUE(val1 == val2);
|
||||
}
|
||||
@@ -49,8 +55,9 @@ TEST(MSGPACK_BOOST, pack_convert_vector)
|
||||
v.push_back(3);
|
||||
val1 = v;
|
||||
msgpack::pack(ss, val1);
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(str.data(), str.size());
|
||||
ovi_t val2 = oh.get().as<ovi_t>();
|
||||
EXPECT_TRUE(val1 == val2);
|
||||
}
|
||||
@@ -64,8 +71,9 @@ TEST(MSGPACK_BOOST, pack_convert_vector_optional)
|
||||
val1[0] = 1;
|
||||
val1[2] = 3;
|
||||
msgpack::pack(ss, val1);
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(str.data(), str.size());
|
||||
voi_t val2 = oh.get().as<voi_t>();
|
||||
EXPECT_TRUE(val1 == val2);
|
||||
}
|
||||
@@ -171,8 +179,9 @@ TEST(MSGPACK_BOOST, pack_convert_no_def_con)
|
||||
std::stringstream ss;
|
||||
boost::optional<no_def_con> val1 = no_def_con(1);
|
||||
msgpack::pack(ss, val1);
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(str.data(), str.size());
|
||||
boost::optional<no_def_con> val2 = oh.get().as<boost::optional<no_def_con>>();
|
||||
EXPECT_TRUE(val1 == val2);
|
||||
}
|
||||
|
@@ -2,13 +2,16 @@
|
||||
#include <sstream>
|
||||
#include <iterator>
|
||||
|
||||
#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__)
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
@@ -26,7 +29,8 @@ TEST(MSGPACK_BOOST, pack_convert_string_ref)
|
||||
msgpack::pack(ss, val1);
|
||||
|
||||
msgpack::object_handle oh;
|
||||
msgpack::unpack(oh, ss.str().data(), ss.str().size());
|
||||
std::string const& str = ss.str();
|
||||
msgpack::unpack(oh, str.data(), str.size());
|
||||
boost::string_ref val2 = oh.get().as<boost::string_ref>();
|
||||
EXPECT_TRUE(val1 == val2);
|
||||
}
|
||||
|
@@ -2,12 +2,16 @@
|
||||
#include <sstream>
|
||||
#include <iterator>
|
||||
|
||||
#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__)
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
@@ -25,7 +29,8 @@ TEST(MSGPACK_BOOST, pack_convert_string_view)
|
||||
msgpack::pack(ss, val1);
|
||||
|
||||
msgpack::object_handle oh;
|
||||
msgpack::unpack(oh, ss.str().data(), ss.str().size());
|
||||
std::string const& str = ss.str();
|
||||
msgpack::unpack(oh, str.data(), str.size());
|
||||
boost::string_view val2 = oh.get().as<boost::string_view>();
|
||||
EXPECT_TRUE(val1 == val2);
|
||||
}
|
||||
|
@@ -3,12 +3,16 @@
|
||||
#include <sstream>
|
||||
#include <iterator>
|
||||
|
||||
#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__)
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
@@ -27,8 +31,9 @@ TEST(MSGPACK_BOOST, pack_convert_variant_nil)
|
||||
EXPECT_TRUE(val1.is_nil());
|
||||
msgpack::pack(ss, val1);
|
||||
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(str.data(), str.size());
|
||||
msgpack::type::variant val2 = oh.get().as<msgpack::type::variant>();
|
||||
EXPECT_TRUE(val2.is_nil());
|
||||
EXPECT_NO_THROW(boost::get<msgpack::type::nil_t>(val2));
|
||||
@@ -65,8 +70,9 @@ TEST(MSGPACK_BOOST, pack_convert_variant_nil_default)
|
||||
|
||||
msgpack::pack(ss, val1);
|
||||
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(str.data(), str.size());
|
||||
msgpack::type::variant val2 = oh.get().as<msgpack::type::variant>();
|
||||
EXPECT_TRUE(val2.is_nil());
|
||||
EXPECT_NO_THROW(boost::get<msgpack::type::nil_t>(val2));
|
||||
@@ -104,8 +110,9 @@ TEST(MSGPACK_BOOST, pack_convert_variant_bool)
|
||||
|
||||
msgpack::pack(ss, val1);
|
||||
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(str.data(), str.size());
|
||||
msgpack::type::variant val2 = oh.get().as<msgpack::type::variant>();
|
||||
EXPECT_TRUE(val2.is_bool());
|
||||
EXPECT_TRUE(val2.as_bool());
|
||||
@@ -157,8 +164,9 @@ TEST(MSGPACK_BOOST, pack_convert_variant_positive_integer)
|
||||
|
||||
msgpack::pack(ss, val1);
|
||||
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(str.data(), str.size());
|
||||
msgpack::type::variant val2 = oh.get().as<msgpack::type::variant>();
|
||||
EXPECT_TRUE(val2.is_uint64_t());
|
||||
EXPECT_EQ(val2.as_uint64_t(), 123U);
|
||||
@@ -204,8 +212,9 @@ TEST(MSGPACK_BOOST, pack_convert_variant_negative_integer)
|
||||
|
||||
msgpack::pack(ss, val1);
|
||||
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(str.data(), str.size());
|
||||
msgpack::type::variant val2 = oh.get().as<msgpack::type::variant>();
|
||||
EXPECT_TRUE(val2.is_int64_t());
|
||||
EXPECT_EQ(val2.as_int64_t(), -123);
|
||||
@@ -251,8 +260,9 @@ TEST(MSGPACK_BOOST, pack_convert_variant_float)
|
||||
|
||||
msgpack::pack(ss, val1);
|
||||
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(str.data(), str.size());
|
||||
msgpack::type::variant val2 = oh.get().as<msgpack::type::variant>();
|
||||
EXPECT_TRUE(val2.is_double());
|
||||
EXPECT_TRUE(fabs(12.34 - val2.as_double()) <= kEPS);
|
||||
@@ -298,8 +308,9 @@ TEST(MSGPACK_BOOST, pack_convert_variant_str)
|
||||
|
||||
msgpack::pack(ss, val1);
|
||||
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(str.data(), str.size());
|
||||
msgpack::type::variant val2 = oh.get().as<msgpack::type::variant>();
|
||||
EXPECT_TRUE(val2.is_string());
|
||||
EXPECT_EQ(val2.as_string(), "ABC");
|
||||
@@ -360,8 +371,9 @@ TEST(MSGPACK_BOOST, pack_convert_variant_bin)
|
||||
|
||||
msgpack::pack(ss, val1);
|
||||
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(str.data(), str.size());
|
||||
msgpack::type::variant val2 = oh.get().as<msgpack::type::variant>();
|
||||
EXPECT_TRUE(val2.is_vector_char());
|
||||
EXPECT_EQ(val2.as_vector_char(), v);
|
||||
@@ -431,8 +443,9 @@ TEST(MSGPACK_BOOST, pack_convert_variant_ext)
|
||||
|
||||
msgpack::pack(ss, val1);
|
||||
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(str.data(), str.size());
|
||||
msgpack::type::variant val2 = oh.get().as<msgpack::type::variant>();
|
||||
EXPECT_TRUE(val2.is_ext());
|
||||
EXPECT_EQ(val2.as_ext(), e);
|
||||
@@ -498,8 +511,9 @@ TEST(MSGPACK_BOOST, pack_convert_variant_array)
|
||||
|
||||
msgpack::pack(ss, val1);
|
||||
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(str.data(), str.size());
|
||||
msgpack::type::variant val2 = oh.get().as<msgpack::type::variant>();
|
||||
EXPECT_TRUE(val2.is_vector());
|
||||
EXPECT_EQ(val2.as_vector(), v);
|
||||
@@ -540,8 +554,9 @@ TEST(MSGPACK_BOOST, pack_convert_variant_map)
|
||||
|
||||
msgpack::pack(ss, val1);
|
||||
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(str.data(), str.size());
|
||||
msgpack::type::variant val2 = oh.get().as<msgpack::type::variant>();
|
||||
EXPECT_TRUE(val2.is_multimap());
|
||||
EXPECT_EQ(val2.as_multimap(), v);
|
||||
@@ -584,8 +599,9 @@ TEST(MSGPACK_BOOST, pack_convert_variant_ref_str)
|
||||
|
||||
msgpack::pack(ss, val1);
|
||||
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(str.data(), str.size());
|
||||
msgpack::type::variant_ref val2 = oh.get().as<msgpack::type::variant_ref>();
|
||||
EXPECT_TRUE(val2.is_boost_string_ref());
|
||||
EXPECT_EQ(val2.as_boost_string_ref(), sr);
|
||||
@@ -629,8 +645,9 @@ TEST(MSGPACK_BOOST, pack_convert_variant_ref_bin)
|
||||
|
||||
msgpack::pack(ss, val1);
|
||||
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(str.data(), str.size());
|
||||
msgpack::type::variant_ref val2 = oh.get().as<msgpack::type::variant_ref>();
|
||||
EXPECT_TRUE(val2.is_raw_ref());
|
||||
EXPECT_EQ(val2.as_raw_ref(), rr);
|
||||
@@ -676,8 +693,9 @@ TEST(MSGPACK_BOOST, pack_convert_variant_ref_ext)
|
||||
|
||||
msgpack::pack(ss, val1);
|
||||
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(str.data(), str.size());
|
||||
msgpack::type::variant_ref val2 = oh.get().as<msgpack::type::variant_ref>();
|
||||
EXPECT_NO_THROW(boost::get<msgpack::type::ext_ref>(val2));
|
||||
EXPECT_TRUE(val2.is_ext_ref());
|
||||
@@ -726,8 +744,9 @@ TEST(MSGPACK_BOOST, pack_convert_variant_ref_array)
|
||||
|
||||
msgpack::pack(ss, val1);
|
||||
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(str.data(), str.size());
|
||||
msgpack::type::variant_ref val2 = oh.get().as<msgpack::type::variant_ref>();
|
||||
EXPECT_TRUE(val2.is_vector());
|
||||
EXPECT_EQ(val2.as_vector(), v);
|
||||
@@ -779,8 +798,9 @@ TEST(MSGPACK_BOOST, pack_convert_variant_ref_map)
|
||||
|
||||
msgpack::pack(ss, val1);
|
||||
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(str.data(), str.size());
|
||||
msgpack::type::variant_ref val2 = oh.get().as<msgpack::type::variant_ref>();
|
||||
EXPECT_TRUE(val2.is_multimap());
|
||||
EXPECT_EQ(val2.as_multimap(), v);
|
||||
|
@@ -1,15 +1,17 @@
|
||||
#include <msgpack.hpp>
|
||||
#include <msgpack/fbuffer.hpp>
|
||||
#include <msgpack/fbuffer.h>
|
||||
#include <msgpack/zbuffer.hpp>
|
||||
#include <msgpack/zbuffer.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>
|
||||
|
||||
@@ -69,7 +71,6 @@ TEST(buffer, vrefbuffer)
|
||||
EXPECT_TRUE( memcmp(sbuf.data(), "aaa", 3) == 0 );
|
||||
}
|
||||
|
||||
|
||||
TEST(buffer, zbuffer)
|
||||
{
|
||||
msgpack::zbuffer zbuf;
|
||||
@@ -81,22 +82,6 @@ TEST(buffer, zbuffer)
|
||||
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)
|
||||
{
|
||||
#if defined(_MSC_VER)
|
||||
@@ -124,31 +109,3 @@ TEST(buffer, fbuffer)
|
||||
EXPECT_EQ(EOF, fgetc(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>
|
||||
|
||||
#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 <sstream>
|
||||
|
||||
@@ -15,7 +19,8 @@ TEST(carray, pack_unpack_int)
|
||||
int v1[] = { 0, 1 };
|
||||
|
||||
msgpack::pack(ss, v1);
|
||||
msgpack::object_handle oh = msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh = msgpack::unpack(str.data(), str.size());
|
||||
EXPECT_EQ(oh.get().type, msgpack::type::ARRAY);
|
||||
|
||||
int v2[2];
|
||||
@@ -44,7 +49,8 @@ TEST(carray, pack_unpack_const_int)
|
||||
const int v1[] = { 0, 1 };
|
||||
|
||||
msgpack::pack(ss, v1);
|
||||
msgpack::object_handle oh = msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh = msgpack::unpack(str.data(), str.size());
|
||||
EXPECT_EQ(oh.get().type, msgpack::type::ARRAY);
|
||||
|
||||
int v2[2];
|
||||
@@ -73,7 +79,8 @@ TEST(carray, pack_unpack_string)
|
||||
std::string v1[] = { "ABC", "DEFG" };
|
||||
|
||||
msgpack::pack(ss, v1);
|
||||
msgpack::object_handle oh = msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh = msgpack::unpack(str.data(), str.size());
|
||||
EXPECT_EQ(oh.get().type, msgpack::type::ARRAY);
|
||||
|
||||
std::string v2[2];
|
||||
@@ -102,7 +109,8 @@ TEST(carray, pack_unpack_char)
|
||||
char v1[] = { 0, 1 };
|
||||
|
||||
msgpack::pack(ss, msgpack::type::make_array_ref(v1));
|
||||
msgpack::object_handle oh = msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh = msgpack::unpack(str.data(), str.size());
|
||||
EXPECT_EQ(oh.get().type, msgpack::type::ARRAY);
|
||||
|
||||
char v2[2];
|
||||
@@ -118,7 +126,8 @@ TEST(carray, pack_unpack_char_as_str)
|
||||
char v1[2] = { 1, '\0' };
|
||||
|
||||
msgpack::pack(ss, v1);
|
||||
msgpack::object_handle oh = msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh = msgpack::unpack(str.data(), str.size());
|
||||
EXPECT_EQ(oh.get().type, msgpack::type::STR);
|
||||
EXPECT_EQ(oh.get().via.str.size, static_cast<size_t>(1));
|
||||
|
||||
@@ -164,7 +173,8 @@ TEST(carray, pack_unpack_unsigned_char)
|
||||
unsigned char v1[] = { 0, 1 };
|
||||
|
||||
msgpack::pack(ss, msgpack::type::make_array_ref(v1));
|
||||
msgpack::object_handle oh = msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh = msgpack::unpack(str.data(), str.size());
|
||||
EXPECT_EQ(oh.get().type, msgpack::type::ARRAY);
|
||||
|
||||
unsigned char v2[2];
|
||||
@@ -180,7 +190,8 @@ TEST(carray, pack_unpack_unsigned_char_as_bin)
|
||||
unsigned char v1[] = { 0, 1 };
|
||||
|
||||
msgpack::pack(ss, v1);
|
||||
msgpack::object_handle oh = msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh = msgpack::unpack(str.data(), str.size());
|
||||
EXPECT_EQ(oh.get().type, msgpack::type::BIN);
|
||||
EXPECT_EQ(oh.get().via.bin.size, static_cast<size_t>(2));
|
||||
|
||||
@@ -226,7 +237,8 @@ TEST(carray, pack_unpack_signed_char)
|
||||
signed char v1[] = { 0, 1 };
|
||||
|
||||
msgpack::pack(ss, v1);
|
||||
msgpack::object_handle oh = msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh = msgpack::unpack(str.data(), str.size());
|
||||
EXPECT_EQ(oh.get().type, msgpack::type::ARRAY);
|
||||
|
||||
signed char v2[2];
|
||||
|
@@ -1,12 +1,16 @@
|
||||
#include <msgpack.hpp>
|
||||
#include <fstream>
|
||||
|
||||
#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__)
|
||||
|
||||
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)
|
||||
{
|
||||
#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 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_compact;
|
||||
|
||||
@@ -44,7 +48,7 @@ TEST(cases, format)
|
||||
}
|
||||
|
||||
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
|
||||
#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>
|
||||
|
||||
#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__)
|
||||
|
||||
class enum_member {
|
||||
public:
|
||||
@@ -99,14 +103,14 @@ TEST(convert, return_value_ptr)
|
||||
|
||||
int i;
|
||||
// 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 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);
|
||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
||||
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
||||
#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);
|
||||
}
|
||||
|
||||
|
@@ -1,11 +1,15 @@
|
||||
#include <msgpack.hpp>
|
||||
|
||||
#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__)
|
||||
|
||||
template <typename T>
|
||||
void check_size(size_t size) {
|
||||
|
@@ -1,11 +1,15 @@
|
||||
#include <msgpack.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__)
|
||||
|
||||
TEST(fixint, size)
|
||||
{
|
||||
|
@@ -1,9 +1,13 @@
|
||||
#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 "../fuzz/unpack_pack_fuzzer.cpp"
|
||||
|
||||
|
@@ -1,11 +1,15 @@
|
||||
#include <msgpack.hpp>
|
||||
|
||||
#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__)
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
|
@@ -2,12 +2,16 @@
|
||||
#include <fstream>
|
||||
#include <sstream>
|
||||
|
||||
#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__)
|
||||
|
||||
TEST(json, basic_elements)
|
||||
{
|
||||
|
@@ -1,11 +1,15 @@
|
||||
#include <msgpack.hpp>
|
||||
|
||||
#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 <sstream>
|
||||
|
||||
@@ -525,15 +529,15 @@ TEST(limit, unpack_array_over_off_ref_pointer)
|
||||
bool ref;
|
||||
std::size_t off = 0;
|
||||
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 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_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
|
||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
||||
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
||||
EXPECT_TRUE(false);
|
||||
}
|
||||
catch(msgpack::array_size_overflow const&) {
|
||||
|
@@ -9,12 +9,16 @@
|
||||
#include <list>
|
||||
#include <limits>
|
||||
|
||||
#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__)
|
||||
|
||||
#if defined(_MSC_VER) || defined(__MINGW32__)
|
||||
#define msgpack_rand() ((double)rand() / RAND_MAX)
|
||||
|
@@ -4,12 +4,16 @@
|
||||
#include <vector>
|
||||
#include <limits>
|
||||
|
||||
#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__)
|
||||
|
||||
#if defined(_MSC_VER) || defined(__MINGW32__)
|
||||
#define msgpack_rand() ((double)rand() / RAND_MAX)
|
||||
@@ -1368,3 +1372,200 @@ TEST(MSGPACKC, vref_buffer_overflow)
|
||||
EXPECT_FALSE(msgpack_vrefbuffer_init(&vbuf, ref_size, chunk_size));
|
||||
EXPECT_EQ(-1, msgpack_vrefbuffer_migrate(&vbuf, &to));
|
||||
}
|
||||
|
||||
TEST(MSGPACKC, object_print_buffer_overflow) {
|
||||
msgpack_object obj;
|
||||
obj.type = MSGPACK_OBJECT_NIL;
|
||||
char buffer[4];
|
||||
|
||||
int ret;
|
||||
ret = msgpack_object_print_buffer(buffer, 1, obj);
|
||||
EXPECT_EQ(0, ret);
|
||||
ret = msgpack_object_print_buffer(buffer, 2, obj);
|
||||
EXPECT_EQ(0, ret);
|
||||
ret = msgpack_object_print_buffer(buffer, 3, obj);
|
||||
EXPECT_EQ(0, ret);
|
||||
ret = msgpack_object_print_buffer(buffer, 4, obj);
|
||||
EXPECT_EQ(3, ret);
|
||||
EXPECT_STREQ("nil", buffer);
|
||||
}
|
||||
|
||||
TEST(MSGPACKC, object_bin_print_buffer_overflow) {
|
||||
msgpack_object obj;
|
||||
obj.type = MSGPACK_OBJECT_BIN;
|
||||
obj.via.bin.ptr = "test";
|
||||
obj.via.bin.size = 4;
|
||||
char buffer[7];
|
||||
|
||||
int ret;
|
||||
ret = msgpack_object_print_buffer(buffer, 1, obj);
|
||||
EXPECT_EQ(0, ret);
|
||||
ret = msgpack_object_print_buffer(buffer, 2, obj);
|
||||
EXPECT_EQ(0, ret);
|
||||
ret = msgpack_object_print_buffer(buffer, 3, obj);
|
||||
EXPECT_EQ(0, ret);
|
||||
ret = msgpack_object_print_buffer(buffer, 4, obj);
|
||||
EXPECT_EQ(0, ret);
|
||||
ret = msgpack_object_print_buffer(buffer, 5, obj);
|
||||
EXPECT_EQ(0, ret);
|
||||
ret = msgpack_object_print_buffer(buffer, 6, obj);
|
||||
EXPECT_EQ(0, ret);
|
||||
ret = msgpack_object_print_buffer(buffer, 7, obj);
|
||||
EXPECT_EQ(6, ret);
|
||||
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"
|
||||
|
||||
#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__)
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
|
@@ -1,11 +1,15 @@
|
||||
#include <msgpack.hpp>
|
||||
|
||||
#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__)
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
@@ -183,7 +187,7 @@ TEST(MSGPACK_CPP11, simple_buffer_array_char)
|
||||
for (unsigned int k = 0; k < kLoop; k++) {
|
||||
array<char, kElements> val1;
|
||||
for (unsigned int i = 0; i < kElements; i++)
|
||||
val1[i] = rand();
|
||||
val1[i] = static_cast<char>(rand());
|
||||
msgpack::sbuffer sbuf;
|
||||
msgpack::pack(sbuf, val1);
|
||||
msgpack::object_handle oh =
|
||||
@@ -214,7 +218,7 @@ TEST(MSGPACK_CPP11, simple_buffer_array_unsigned_char)
|
||||
for (unsigned int k = 0; k < kLoop; k++) {
|
||||
array<unsigned char, kElements> val1;
|
||||
for (unsigned int i = 0; i < kElements; i++)
|
||||
val1[i] = rand();
|
||||
val1[i] = static_cast<unsigned char>(rand());
|
||||
msgpack::sbuffer sbuf;
|
||||
msgpack::pack(sbuf, val1);
|
||||
msgpack::object_handle oh =
|
||||
@@ -883,7 +887,7 @@ TEST(MSGPACK_CHRONO, system_clock_32)
|
||||
msgpack::sbuffer sbuf;
|
||||
msgpack::pack(sbuf, val1);
|
||||
char packed[] = {
|
||||
static_cast<char>(0xd6),
|
||||
static_cast<char>(0xd6u),
|
||||
static_cast<char>(-1),
|
||||
static_cast<char>(0x12),
|
||||
static_cast<char>(0x34),
|
||||
@@ -908,12 +912,12 @@ TEST(MSGPACK_CHRONO, system_clock_32_max)
|
||||
msgpack::sbuffer sbuf;
|
||||
msgpack::pack(sbuf, val1);
|
||||
char packed[] = {
|
||||
static_cast<char>(0xd6),
|
||||
static_cast<char>(0xd6u),
|
||||
static_cast<char>(-1),
|
||||
static_cast<char>(0xff),
|
||||
static_cast<char>(0xff),
|
||||
static_cast<char>(0xff),
|
||||
static_cast<char>(0xff)
|
||||
static_cast<char>(0xffu),
|
||||
static_cast<char>(0xffu),
|
||||
static_cast<char>(0xffu),
|
||||
static_cast<char>(0xffu)
|
||||
};
|
||||
EXPECT_EQ(memcmp(sbuf.data(), packed, sizeof(packed)), 0);
|
||||
|
||||
@@ -959,28 +963,28 @@ TEST(MSGPACK_CHRONO, system_clock_64_max)
|
||||
msgpack::sbuffer sbuf;
|
||||
msgpack::pack(sbuf, val1);
|
||||
char packed_nano[] = {
|
||||
static_cast<char>(0xd7),
|
||||
static_cast<char>(0xd7u),
|
||||
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>(0x27),
|
||||
static_cast<char>(0xfc),
|
||||
static_cast<char>(0xff), // 32 bit sec
|
||||
static_cast<char>(0xff),
|
||||
static_cast<char>(0xff),
|
||||
static_cast<char>(0xff)
|
||||
static_cast<char>(0xfcu),
|
||||
static_cast<char>(0xffu), // 32 bit sec
|
||||
static_cast<char>(0xffu),
|
||||
static_cast<char>(0xffu),
|
||||
static_cast<char>(0xffu)
|
||||
};
|
||||
char packed_micro[] = {
|
||||
static_cast<char>(0xd7),
|
||||
static_cast<char>(0xd7u),
|
||||
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>(0x18),
|
||||
static_cast<char>(0x60),
|
||||
static_cast<char>(0xff), // 32 bit sec
|
||||
static_cast<char>(0xff),
|
||||
static_cast<char>(0xff),
|
||||
static_cast<char>(0xff)
|
||||
static_cast<char>(0xffu), // 32 bit sec
|
||||
static_cast<char>(0xffu),
|
||||
static_cast<char>(0xffu),
|
||||
static_cast<char>(0xffu)
|
||||
};
|
||||
if (std::chrono::system_clock::duration::period::ratio::den == 1000000000) {
|
||||
EXPECT_EQ(memcmp(sbuf.data(), packed_nano, sizeof(packed_nano)), 0);
|
||||
@@ -1055,10 +1059,11 @@ TEST(MSGPACK_TIMESPEC, timespec_pack_convert_zero)
|
||||
timespec val1{ 0, 0 };
|
||||
|
||||
msgpack::pack(ss, val1);
|
||||
EXPECT_EQ(ss.str().data()[0], static_cast<char>(0xd6));
|
||||
std::string const& str = ss.str();
|
||||
EXPECT_EQ(str.data()[0], static_cast<char>(0xd6u));
|
||||
|
||||
msgpack::object_handle oh;
|
||||
msgpack::unpack(oh, ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(oh, str.data(), str.size());
|
||||
timespec val2 = oh.get().as<timespec>();
|
||||
EXPECT_EQ(val1.tv_sec, val2.tv_sec);
|
||||
EXPECT_EQ(val1.tv_nsec, val2.tv_nsec);
|
||||
@@ -1077,13 +1082,14 @@ TEST(MSGPACK_TIMESPEC, timespec_object_with_zone_zero)
|
||||
TEST(MSGPACK_TIMESPEC, timespec_pack_convert_32bit_sec)
|
||||
{
|
||||
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);
|
||||
EXPECT_EQ(ss.str().data()[0], static_cast<char>(0xd6));
|
||||
std::string const& str = ss.str();
|
||||
EXPECT_EQ(str.data()[0], static_cast<char>(0xd6u));
|
||||
|
||||
msgpack::object_handle oh;
|
||||
msgpack::unpack(oh, ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(oh, str.data(), str.size());
|
||||
timespec val2 = oh.get().as<timespec>();
|
||||
EXPECT_EQ(val1.tv_sec, val2.tv_sec);
|
||||
EXPECT_EQ(val1.tv_nsec, val2.tv_nsec);
|
||||
@@ -1092,7 +1098,7 @@ TEST(MSGPACK_TIMESPEC, timespec_pack_convert_32bit_sec)
|
||||
TEST(MSGPACK_TIMESPEC, timespec_object_with_zone_32bit_sec)
|
||||
{
|
||||
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);
|
||||
timespec val2 = obj.as<timespec>();
|
||||
EXPECT_EQ(val1.tv_sec, val2.tv_sec);
|
||||
@@ -1105,9 +1111,10 @@ TEST(MSGPACK_TIMESPEC, timespec_pack_convert_max_nano)
|
||||
timespec val1{ 0, 999999999 };
|
||||
|
||||
msgpack::pack(ss, val1);
|
||||
EXPECT_EQ(ss.str().data()[0], static_cast<char>(0xd7));
|
||||
std::string const& str = ss.str();
|
||||
EXPECT_EQ(str.data()[0], static_cast<char>(0xd7u));
|
||||
msgpack::object_handle oh;
|
||||
msgpack::unpack(oh, ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(oh, str.data(), str.size());
|
||||
timespec val2 = oh.get().as<timespec>();
|
||||
EXPECT_EQ(val1.tv_sec, val2.tv_sec);
|
||||
EXPECT_EQ(val1.tv_nsec, val2.tv_nsec);
|
||||
@@ -1130,10 +1137,11 @@ TEST(MSGPACK_TIMESPEC, timespec_pack_convert_34bit_sec_max_nano)
|
||||
timespec val1{ static_cast<decltype(std::declval<timespec>().tv_sec)>(0x3ffffffffULL), 999999999 };
|
||||
|
||||
msgpack::pack(ss, val1);
|
||||
EXPECT_EQ(ss.str().data()[0], static_cast<char>(0xd7));
|
||||
std::string const& str = ss.str();
|
||||
EXPECT_EQ(str.data()[0], static_cast<char>(0xd7u));
|
||||
|
||||
msgpack::object_handle oh;
|
||||
msgpack::unpack(oh, ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(oh, str.data(), str.size());
|
||||
timespec val2 = oh.get().as<timespec>();
|
||||
EXPECT_EQ(val1.tv_sec, val2.tv_sec);
|
||||
EXPECT_EQ(val1.tv_nsec, val2.tv_nsec);
|
||||
@@ -1157,10 +1165,11 @@ TEST(MSGPACK_TIMESPEC, timespec_pack_convert_35bit_sec_max_nano)
|
||||
timespec val1{ static_cast<decltype(std::declval<timespec>().tv_sec)>(0x7ffffffffULL), 999999999 };
|
||||
|
||||
msgpack::pack(ss, val1);
|
||||
EXPECT_EQ(ss.str().data()[0], static_cast<char>(0xc7));
|
||||
std::string const& str = ss.str();
|
||||
EXPECT_EQ(str.data()[0], static_cast<char>(0xc7u));
|
||||
|
||||
msgpack::object_handle oh;
|
||||
msgpack::unpack(oh, ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(oh, str.data(), str.size());
|
||||
timespec val2 = oh.get().as<timespec>();
|
||||
EXPECT_EQ(val1.tv_sec, val2.tv_sec);
|
||||
EXPECT_EQ(val1.tv_nsec, val2.tv_nsec);
|
||||
@@ -1179,14 +1188,16 @@ TEST(MSGPACK_TIMESPEC, timespec_object_with_zone_35bit_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;
|
||||
timespec val1{ std::numeric_limits<decltype(std::declval<timespec>().tv_sec)>::max(), 999999999 };
|
||||
|
||||
msgpack::pack(ss, val1);
|
||||
EXPECT_EQ(ss.str().data()[0], static_cast<char>(0xc7));
|
||||
std::string const& str = ss.str();
|
||||
EXPECT_EQ(str.data()[0], static_cast<char>(0xc7u));
|
||||
|
||||
msgpack::object_handle oh;
|
||||
msgpack::unpack(oh, ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(oh, str.data(), str.size());
|
||||
timespec val2 = oh.get().as<timespec>();
|
||||
EXPECT_EQ(val1.tv_sec, val2.tv_sec);
|
||||
EXPECT_EQ(val1.tv_nsec, val2.tv_nsec);
|
||||
|
@@ -1,11 +1,15 @@
|
||||
#include <msgpack.hpp>
|
||||
|
||||
#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__)
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
@@ -27,8 +31,9 @@ TEST(MSGPACK_CPP17, optional_pack_convert_nil)
|
||||
std::stringstream ss;
|
||||
std::optional<int> val1;
|
||||
msgpack::pack(ss, val1);
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(str.data(), str.size());
|
||||
std::optional<int> val2 = oh.get().as<std::optional<int> >();
|
||||
EXPECT_TRUE(val1 == val2);
|
||||
}
|
||||
@@ -38,8 +43,9 @@ TEST(MSGPACK_CPP17, optional_pack_convert_int)
|
||||
std::stringstream ss;
|
||||
std::optional<int> val1 = 1;
|
||||
msgpack::pack(ss, val1);
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(str.data(), str.size());
|
||||
std::optional<int> val2 = oh.get().as<std::optional<int> >();
|
||||
EXPECT_TRUE(val1 == val2);
|
||||
}
|
||||
@@ -55,8 +61,9 @@ TEST(MSGPACK_CPP17, optional_pack_convert_vector)
|
||||
v.push_back(3);
|
||||
val1 = v;
|
||||
msgpack::pack(ss, val1);
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(str.data(), str.size());
|
||||
ovi_t val2 = oh.get().as<ovi_t>();
|
||||
EXPECT_TRUE(val1 == val2);
|
||||
}
|
||||
@@ -70,8 +77,9 @@ TEST(MSGPACK_CPP17, optional_pack_convert_vector_optional)
|
||||
val1[0] = 1;
|
||||
val1[2] = 3;
|
||||
msgpack::pack(ss, val1);
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(str.data(), str.size());
|
||||
voi_t val2 = oh.get().as<voi_t>();
|
||||
EXPECT_TRUE(val1 == val2);
|
||||
}
|
||||
@@ -177,8 +185,9 @@ TEST(MSGPACK_CPP17, optional_pack_convert_no_def_con)
|
||||
std::stringstream ss;
|
||||
std::optional<no_def_con> val1 = no_def_con(1);
|
||||
msgpack::pack(ss, val1);
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(str.data(), str.size());
|
||||
std::optional<no_def_con> val2 = oh.get().as<std::optional<no_def_con>>();
|
||||
EXPECT_TRUE(val1 == val2);
|
||||
}
|
||||
@@ -195,8 +204,9 @@ TEST(MSGPACK_CPP17, string_view_pack_convert)
|
||||
|
||||
msgpack::pack(ss, val1);
|
||||
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh;
|
||||
msgpack::unpack(oh, ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(oh, str.data(), str.size());
|
||||
std::string_view val2 = oh.get().as<std::string_view>();
|
||||
EXPECT_TRUE(val1 == val2);
|
||||
}
|
||||
@@ -230,7 +240,8 @@ TEST(MSGPACK_CPP17, byte_pack_convert)
|
||||
msgpack::pack(ss, val1);
|
||||
|
||||
msgpack::object_handle oh;
|
||||
msgpack::unpack(oh, ss.str().data(), ss.str().size());
|
||||
std::string const& str = ss.str();
|
||||
msgpack::unpack(oh, str.data(), str.size());
|
||||
std::byte val2 = oh.get().as<std::byte>();
|
||||
EXPECT_EQ(val1, val2);
|
||||
}
|
||||
@@ -263,11 +274,13 @@ TEST(MSGPACK_CPP17, vector_byte_pack_convert)
|
||||
|
||||
char packed[] = { char(0xc4), char(0x05), char(0x01), char(0x02), char(0x7f), char(0x80), char(0xff) };
|
||||
for (size_t i = 0; i != sizeof(packed); ++i) {
|
||||
EXPECT_EQ(ss.str()[i], packed[i]);
|
||||
std::string const& str = ss.str();
|
||||
EXPECT_EQ(str[i], packed[i]);
|
||||
}
|
||||
|
||||
msgpack::object_handle oh;
|
||||
msgpack::unpack(oh, ss.str().data(), ss.str().size());
|
||||
std::string const& str = ss.str();
|
||||
msgpack::unpack(oh, str.data(), str.size());
|
||||
std::vector<std::byte> val2 = oh.get().as<std::vector<std::byte>>();
|
||||
EXPECT_EQ(val1, val2);
|
||||
}
|
||||
@@ -308,11 +321,13 @@ TEST(MSGPACK_CPP17, carray_byte_pack_convert)
|
||||
|
||||
char packed[] = { char(0xc4), char(0x05), char(0x01), char(0x02), char(0x7f), char(0x80), char(0xff) };
|
||||
for (size_t i = 0; i != sizeof(packed); ++i) {
|
||||
EXPECT_EQ(ss.str()[i], packed[i]);
|
||||
std::string const& str = ss.str();
|
||||
EXPECT_EQ(str[i], packed[i]);
|
||||
}
|
||||
|
||||
msgpack::object_handle oh;
|
||||
msgpack::unpack(oh, ss.str().data(), ss.str().size());
|
||||
std::string const& str = ss.str();
|
||||
msgpack::unpack(oh, str.data(), str.size());
|
||||
std::byte val2[sizeof(val1)];
|
||||
oh.get().convert(val2);
|
||||
for (size_t i = 0; i != sizeof(val1); ++i) {
|
||||
|
@@ -9,12 +9,16 @@
|
||||
#include <list>
|
||||
#include <limits>
|
||||
|
||||
#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__)
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
|
@@ -1,12 +1,15 @@
|
||||
#include <msgpack.hpp>
|
||||
|
||||
#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__)
|
||||
|
||||
TEST(msgpack_tuple, member_get)
|
||||
{
|
||||
|
@@ -9,12 +9,16 @@
|
||||
#include <list>
|
||||
#include <limits>
|
||||
|
||||
#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__)
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
|
@@ -4,12 +4,16 @@
|
||||
#include <limits>
|
||||
#include <cmath>
|
||||
|
||||
#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__)
|
||||
|
||||
// To avoid link error
|
||||
TEST(MSGPACK_X3_PARSE, dummy)
|
||||
|
@@ -1,12 +1,15 @@
|
||||
#include <msgpack.hpp>
|
||||
|
||||
#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__)
|
||||
|
||||
enum enum_test {
|
||||
elem
|
||||
|
@@ -1,11 +1,15 @@
|
||||
#include <msgpack.hpp>
|
||||
|
||||
#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 <cmath>
|
||||
|
||||
@@ -769,14 +773,14 @@ TEST(object_with_zone, user_defined_non_virtual)
|
||||
|
||||
msgpack::zone 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 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>();
|
||||
#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
|
||||
#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.m1, br.m1);
|
||||
EXPECT_EQ(b.m2, br.m2);
|
||||
@@ -814,14 +818,14 @@ TEST(object_with_zone, user_defined_virtual)
|
||||
|
||||
msgpack::zone 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 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>();
|
||||
#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
|
||||
#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.m1, br.m1);
|
||||
EXPECT_EQ(b.m2, br.m2);
|
||||
|
@@ -1,11 +1,15 @@
|
||||
#include <msgpack.hpp>
|
||||
|
||||
#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 <sstream>
|
||||
|
||||
@@ -163,14 +167,14 @@ TEST(unpack, int_pointer_off_no_ref)
|
||||
std::size_t off = 0;
|
||||
|
||||
// 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 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);
|
||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
||||
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
||||
#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(off, sbuf.size());
|
||||
}
|
||||
@@ -184,14 +188,14 @@ TEST(unpack, int_pointer_off_no_ref_explicit)
|
||||
std::size_t off = 0;
|
||||
|
||||
// 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 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);
|
||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
||||
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
||||
#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(off, sbuf.size());
|
||||
}
|
||||
@@ -204,14 +208,14 @@ TEST(unpack, int_pointer_no_off_ref)
|
||||
bool referenced;
|
||||
|
||||
// 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 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);
|
||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
||||
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
||||
#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_FALSE(referenced);
|
||||
}
|
||||
@@ -225,14 +229,14 @@ TEST(unpack, int_pointer_off_ref)
|
||||
std::size_t off = 0;
|
||||
|
||||
// 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 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);
|
||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
||||
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
||||
#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(off, sbuf.size());
|
||||
EXPECT_FALSE(referenced);
|
||||
@@ -246,14 +250,14 @@ TEST(unpack, int_default_null_pointer)
|
||||
msgpack::object_handle oh;
|
||||
|
||||
// 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 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());
|
||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
||||
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
||||
#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>());
|
||||
}
|
||||
|
||||
@@ -524,7 +528,7 @@ TEST(unpack, int_off_larger_than_length)
|
||||
TEST(unpack, empty_array_fix)
|
||||
{
|
||||
std::string buf;
|
||||
buf.push_back(static_cast<char>(0x90));
|
||||
buf.push_back(static_cast<char>(0x90u));
|
||||
std::size_t off = 0;
|
||||
|
||||
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)
|
||||
{
|
||||
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));
|
||||
std::size_t off = 0;
|
||||
@@ -550,7 +554,7 @@ TEST(unpack, empty_array_16)
|
||||
TEST(unpack, empty_array_32)
|
||||
{
|
||||
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));
|
||||
@@ -566,7 +570,7 @@ TEST(unpack, empty_array_32)
|
||||
TEST(unpack, empty_map_fix)
|
||||
{
|
||||
std::string buf;
|
||||
buf.push_back(static_cast<char>(0x80));
|
||||
buf.push_back(static_cast<char>(0x80u));
|
||||
std::size_t off = 0;
|
||||
|
||||
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)
|
||||
{
|
||||
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));
|
||||
std::size_t off = 0;
|
||||
@@ -592,7 +596,7 @@ TEST(unpack, empty_map_16)
|
||||
TEST(unpack, empty_map_32)
|
||||
{
|
||||
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));
|
||||
|
@@ -1,11 +1,15 @@
|
||||
#include <msgpack.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 <stdio.h>
|
||||
|
||||
|
28
test/raw.cpp
28
test/raw.cpp
@@ -3,12 +3,16 @@
|
||||
#include <string>
|
||||
#include <sstream>
|
||||
|
||||
#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__)
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
@@ -29,7 +33,7 @@ TEST(MSGPACK_RAW_REF, pack_unpack)
|
||||
EXPECT_EQ(packed_str[4], 'C');
|
||||
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(packed_str.data(), packed_str.size());
|
||||
msgpack::type::raw_ref rr2 = oh.get().as<msgpack::type::raw_ref>();
|
||||
EXPECT_TRUE(rr1 == rr2);
|
||||
}
|
||||
@@ -46,7 +50,7 @@ TEST(MSGPACK_RAW_REF, pack_unpack_8_l)
|
||||
EXPECT_EQ(packed_str[1], static_cast<char>(0x00u));
|
||||
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(packed_str.data(), packed_str.size());
|
||||
msgpack::type::raw_ref rr2 = oh.get().as<msgpack::type::raw_ref>();
|
||||
EXPECT_TRUE(rr1 == rr2);
|
||||
}
|
||||
@@ -64,7 +68,7 @@ TEST(MSGPACK_RAW_REF, pack_unpack_8_h)
|
||||
EXPECT_EQ(packed_str[2], 'A');
|
||||
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(packed_str.data(), packed_str.size());
|
||||
msgpack::type::raw_ref rr2 = oh.get().as<msgpack::type::raw_ref>();
|
||||
EXPECT_TRUE(rr1 == rr2);
|
||||
}
|
||||
@@ -83,7 +87,7 @@ TEST(MSGPACK_RAW_REF, pack_unpack_16_l)
|
||||
EXPECT_EQ(packed_str[3], 'A');
|
||||
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(packed_str.data(), packed_str.size());
|
||||
msgpack::type::raw_ref rr2 = oh.get().as<msgpack::type::raw_ref>();
|
||||
EXPECT_TRUE(rr1 == rr2);
|
||||
}
|
||||
@@ -102,7 +106,7 @@ TEST(MSGPACK_RAW_REF, pack_unpack_16_h)
|
||||
EXPECT_EQ(packed_str[3], 'A');
|
||||
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(packed_str.data(), packed_str.size());
|
||||
msgpack::type::raw_ref rr2 = oh.get().as<msgpack::type::raw_ref>();
|
||||
EXPECT_TRUE(rr1 == rr2);
|
||||
}
|
||||
@@ -123,7 +127,7 @@ TEST(MSGPACK_RAW_REF, pack_unpack_32_l)
|
||||
EXPECT_EQ(packed_str[5], 'A');
|
||||
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(packed_str.data(), packed_str.size());
|
||||
msgpack::type::raw_ref rr2 = oh.get().as<msgpack::type::raw_ref>();
|
||||
EXPECT_TRUE(rr1 == rr2);
|
||||
}
|
||||
@@ -142,7 +146,7 @@ TEST(MSGPACK_V4RAW_REF, pack_unpack)
|
||||
EXPECT_EQ(packed_str[3], 'C');
|
||||
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(packed_str.data(), packed_str.size());
|
||||
msgpack::type::v4raw_ref rr2 = oh.get().as<msgpack::type::v4raw_ref>();
|
||||
EXPECT_TRUE(rr1 == rr2);
|
||||
}
|
||||
@@ -158,7 +162,7 @@ TEST(MSGPACK_V4RAW_REF, pack_unpack_fix_l)
|
||||
EXPECT_EQ(packed_str[0], static_cast<char>(0xa0u));
|
||||
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(packed_str.data(), packed_str.size());
|
||||
msgpack::type::v4raw_ref rr2 = oh.get().as<msgpack::type::v4raw_ref>();
|
||||
EXPECT_TRUE(rr1 == rr2);
|
||||
}
|
||||
@@ -175,7 +179,7 @@ TEST(MSGPACK_V4RAW_REF, pack_unpack_fix_h)
|
||||
EXPECT_EQ(packed_str[1], 'A');
|
||||
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(packed_str.data(), packed_str.size());
|
||||
msgpack::type::v4raw_ref rr2 = oh.get().as<msgpack::type::v4raw_ref>();
|
||||
EXPECT_TRUE(rr1 == rr2);
|
||||
}
|
||||
@@ -194,7 +198,7 @@ TEST(MSGPACK_V4RAW_REF, pack_unpack_16_l)
|
||||
EXPECT_EQ(packed_str[3], 'A');
|
||||
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(packed_str.data(), packed_str.size());
|
||||
msgpack::type::v4raw_ref rr2 = oh.get().as<msgpack::type::v4raw_ref>();
|
||||
EXPECT_TRUE(rr1 == rr2);
|
||||
}
|
||||
@@ -213,7 +217,7 @@ TEST(MSGPACK_V4RAW_REF, pack_unpack_16_h)
|
||||
EXPECT_EQ(packed_str[3], 'A');
|
||||
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(packed_str.data(), packed_str.size());
|
||||
msgpack::type::v4raw_ref rr2 = oh.get().as<msgpack::type::v4raw_ref>();
|
||||
EXPECT_TRUE(rr1 == rr2);
|
||||
}
|
||||
@@ -234,7 +238,7 @@ TEST(MSGPACK_V4RAW_REF, pack_unpack_32_l)
|
||||
EXPECT_EQ(packed_str[5], 'A');
|
||||
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(packed_str.data(), packed_str.size());
|
||||
msgpack::type::v4raw_ref rr2 = oh.get().as<msgpack::type::v4raw_ref>();
|
||||
EXPECT_TRUE(rr1 == rr2);
|
||||
}
|
||||
|
@@ -1,11 +1,15 @@
|
||||
#include <msgpack.hpp>
|
||||
|
||||
#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__)
|
||||
|
||||
TEST(reference, unpack_int)
|
||||
{
|
||||
|
@@ -1,11 +1,15 @@
|
||||
#include <msgpack.hpp>
|
||||
|
||||
#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__)
|
||||
|
||||
#if !defined(MSGPACK_USE_CPP03)
|
||||
|
||||
|
@@ -1,12 +1,16 @@
|
||||
#include <msgpack.hpp>
|
||||
#include <sstream>
|
||||
|
||||
#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__)
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
@@ -20,7 +24,8 @@ TEST(MSGPACK_REFERENCE_WRAPPER, pack_convert)
|
||||
std::reference_wrapper<int> val1(i1);
|
||||
std::stringstream ss;
|
||||
msgpack::pack(ss, val1);
|
||||
msgpack::object_handle oh = msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh = msgpack::unpack(str.data(), str.size());
|
||||
int i2 = 0;
|
||||
std::reference_wrapper<int> val2(i2);
|
||||
oh.get().convert(val2);
|
||||
@@ -33,7 +38,8 @@ TEST(MSGPACK_REFERENCE_WRAPPER, pack_convert_const)
|
||||
std::reference_wrapper<const int> val1(i1);
|
||||
std::stringstream ss;
|
||||
msgpack::pack(ss, val1);
|
||||
msgpack::object_handle oh = msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh = msgpack::unpack(str.data(), str.size());
|
||||
int i2 = 0;
|
||||
std::reference_wrapper<int> val2(i2);
|
||||
oh.get().convert(val2);
|
||||
@@ -46,7 +52,8 @@ TEST(MSGPACK_REFERENCE_WRAPPER, pack_vector)
|
||||
std::vector<std::reference_wrapper<int>> val1{i1};
|
||||
std::stringstream ss;
|
||||
msgpack::pack(ss, val1);
|
||||
msgpack::object_handle oh = msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh = msgpack::unpack(str.data(), str.size());
|
||||
std::vector<int> val2 = oh.get().as<std::vector<int>>();
|
||||
EXPECT_EQ(val2.size(), static_cast<size_t>(1));
|
||||
EXPECT_EQ(val1[0], val2[0]);
|
||||
|
@@ -2,12 +2,16 @@
|
||||
#include <sstream>
|
||||
#include <iterator>
|
||||
|
||||
#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__)
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
@@ -20,8 +24,9 @@ TEST(SHARED_PTR, pack_convert_nil)
|
||||
std::stringstream ss;
|
||||
std::shared_ptr<int> val1;
|
||||
msgpack::pack(ss, val1);
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(str.data(), str.size());
|
||||
std::shared_ptr<int> val2 = oh.get().as<std::shared_ptr<int>>();
|
||||
EXPECT_TRUE(val1 == val2);
|
||||
}
|
||||
@@ -31,8 +36,9 @@ TEST(SHARED_PTR, pack_convert_int)
|
||||
std::stringstream ss;
|
||||
std::shared_ptr<int> val1(new int(1));
|
||||
msgpack::pack(ss, val1);
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(str.data(), str.size());
|
||||
std::shared_ptr<int> val2 = oh.get().as<std::shared_ptr<int>>();
|
||||
EXPECT_TRUE(*val1 == *val2);
|
||||
}
|
||||
@@ -119,8 +125,9 @@ TEST(SHARED_PTR, pack_convert_nil_no_def_con)
|
||||
std::stringstream ss;
|
||||
std::shared_ptr<no_def_con> val1(new no_def_con(1));
|
||||
msgpack::pack(ss, val1);
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(str.data(), str.size());
|
||||
std::shared_ptr<no_def_con> val2 = oh.get().as<std::shared_ptr<no_def_con>>();
|
||||
EXPECT_TRUE(*val1 == *val2);
|
||||
}
|
||||
|
@@ -1,12 +1,16 @@
|
||||
#include <sstream>
|
||||
#include <msgpack.hpp>
|
||||
|
||||
#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__)
|
||||
|
||||
TEST(size_equal_only, array)
|
||||
{
|
||||
@@ -15,7 +19,8 @@ TEST(size_equal_only, array)
|
||||
msgpack::type::size_equal_only<int[3]> seo(buf);
|
||||
|
||||
msgpack::pack(ss, seo);
|
||||
msgpack::object_handle oh = msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh = msgpack::unpack(str.data(), str.size());
|
||||
|
||||
int ret_buf1[3];
|
||||
oh.get().convert(ret_buf1);
|
||||
@@ -58,7 +63,8 @@ TEST(size_equal_only, vector)
|
||||
msgpack::type::size_equal_only<std::vector<int> > seo(buf);
|
||||
|
||||
msgpack::pack(ss, seo);
|
||||
msgpack::object_handle oh = msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh = msgpack::unpack(str.data(), str.size());
|
||||
|
||||
std::vector<int> ret_buf1;
|
||||
oh.get().convert(ret_buf1);
|
||||
@@ -91,7 +97,8 @@ TEST(size_equal_only, msgpack_tuple)
|
||||
msgpack::type::size_equal_only<msgpack::type::tuple<int, bool, std::string> > seo(buf);
|
||||
|
||||
msgpack::pack(ss, seo);
|
||||
msgpack::object_handle oh = msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh = msgpack::unpack(str.data(), str.size());
|
||||
|
||||
msgpack::type::tuple<int, bool, std::string> ret_buf1;
|
||||
oh.get().convert(ret_buf1);
|
||||
@@ -148,7 +155,8 @@ TEST(size_equal_only, tuple)
|
||||
auto seo = msgpack::type::make_size_equal_only(buf);
|
||||
|
||||
msgpack::pack(ss, seo);
|
||||
msgpack::object_handle oh = msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh = msgpack::unpack(str.data(), str.size());
|
||||
|
||||
std::tuple<int, bool, std::string> ret_buf1;
|
||||
oh.get().convert(ret_buf1);
|
||||
@@ -210,7 +218,8 @@ TEST(size_equal_only, custom_class)
|
||||
std::stringstream ss;
|
||||
foo1 f1(42, true);
|
||||
msgpack::pack(ss, f1);
|
||||
msgpack::object_handle oh = msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh = msgpack::unpack(str.data(), str.size());
|
||||
|
||||
foo2 f2(123, false, "ABC");
|
||||
try {
|
||||
|
@@ -1,11 +1,15 @@
|
||||
#include <msgpack.hpp>
|
||||
|
||||
#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 <sstream>
|
||||
|
||||
@@ -85,14 +89,14 @@ TEST(streaming, basic_pointer)
|
||||
|
||||
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 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)) {
|
||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
||||
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
|
||||
#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();
|
||||
switch(count++) {
|
||||
case 0:
|
||||
|
@@ -1,11 +1,15 @@
|
||||
#include <msgpack.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 <stdio.h>
|
||||
|
||||
|
@@ -2,12 +2,16 @@
|
||||
#include <sstream>
|
||||
#include <iterator>
|
||||
|
||||
#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__)
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
@@ -20,8 +24,9 @@ TEST(UNIQUE_PTR, pack_convert_nil)
|
||||
std::stringstream ss;
|
||||
std::unique_ptr<int> val1;
|
||||
msgpack::pack(ss, val1);
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(str.data(), str.size());
|
||||
std::unique_ptr<int> val2 = oh.get().as<std::unique_ptr<int>>();
|
||||
EXPECT_TRUE(val1 == val2);
|
||||
}
|
||||
@@ -31,8 +36,9 @@ TEST(UNIQUE_PTR, pack_convert_int)
|
||||
std::stringstream ss;
|
||||
std::unique_ptr<int> val1(new int(1));
|
||||
msgpack::pack(ss, val1);
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(str.data(), str.size());
|
||||
std::unique_ptr<int> val2 = oh.get().as<std::unique_ptr<int>>();
|
||||
EXPECT_TRUE(*val1 == *val2);
|
||||
}
|
||||
@@ -119,8 +125,9 @@ TEST(UNIQUE_PTR, pack_convert_nil_no_def_con)
|
||||
std::stringstream ss;
|
||||
std::unique_ptr<no_def_con> val1(new no_def_con(1));
|
||||
msgpack::pack(ss, val1);
|
||||
std::string const& str = ss.str();
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||
msgpack::unpack(str.data(), str.size());
|
||||
std::unique_ptr<no_def_con> val2 = oh.get().as<std::unique_ptr<no_def_con>>();
|
||||
EXPECT_TRUE(*val1 == *val2);
|
||||
}
|
||||
|
@@ -2,12 +2,16 @@
|
||||
#include <string>
|
||||
#include <cmath>
|
||||
|
||||
#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__)
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
@@ -153,10 +157,10 @@ public:
|
||||
|
||||
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 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());
|
||||
o.convert(tuple);
|
||||
|
||||
@@ -165,18 +169,18 @@ public:
|
||||
tuple.get<1>().convert(value.f);
|
||||
else
|
||||
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
|
||||
#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)
|
||||
{
|
||||
#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 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
|
||||
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, 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
|
||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||
#endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||
}
|
||||
|
||||
// inheritance
|
||||
@@ -401,14 +405,14 @@ TEST(MSGPACK_INHERIT, define_map_non_virtual)
|
||||
msgpack::pack(sbuf, b);
|
||||
msgpack::object_handle oh =
|
||||
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 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>();
|
||||
#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
|
||||
#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.m1, br.m1);
|
||||
EXPECT_EQ(b.m2, br.m2);
|
||||
|
@@ -1,11 +1,15 @@
|
||||
#include <msgpack.hpp>
|
||||
|
||||
#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__)
|
||||
|
||||
TEST(version, print)
|
||||
{
|
||||
|
@@ -1,11 +1,15 @@
|
||||
#include <msgpack.hpp>
|
||||
|
||||
#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 <sstream>
|
||||
|
||||
@@ -98,7 +102,8 @@ TEST(visitor, json_like)
|
||||
std::string json_like;
|
||||
json_like_visitor v(json_like);
|
||||
std::size_t off = 0;
|
||||
bool ret = msgpack::parse(ss.str().data(), ss.str().size(), off, v);
|
||||
std::string const& str = ss.str();
|
||||
bool ret = msgpack::parse(str.data(), str.size(), off, v);
|
||||
EXPECT_TRUE(ret);
|
||||
EXPECT_EQ("{\"key\":[42,null,true]}", json_like);
|
||||
}
|
||||
|
@@ -1,11 +1,15 @@
|
||||
#include <msgpack.hpp>
|
||||
|
||||
#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__)
|
||||
|
||||
TEST(zone, allocate_align)
|
||||
{
|
||||
|
Reference in New Issue
Block a user