Skip to content

Commit 84ad9a2

Browse files
committed
Added Spirit.X3 based parse.
It uses iterator pair instead of data and size.
1 parent 9b141fa commit 84ad9a2

17 files changed

+2124
-212
lines changed

.travis.yml

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,28 @@ cache:
33
- apt
44
before_install:
55
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test; fi
6-
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo add-apt-repository -y ppa:h-rayflood/llvm-upper; fi
6+
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo add-apt-repository -y 'deb http://apt.llvm.org/precise/ llvm-toolchain-precise-3.8 main'; fi
77
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo apt-get update -qq; fi
88
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo apt-get update; fi
99
install:
10-
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo apt-get install -qq gcc-4.8-multilib g++-4.8-multilib; fi
11-
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo apt-get install --allow-unauthenticated -qq clang-3.6; fi
12-
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 90; fi
13-
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 90; fi
10+
11+
- if [ "$CXX" == "clang++" ]; then export CXXFLAGS="-stdlib=libc++"; fi
12+
- if [ "$CXX" == "clang++" ]; then svn co --quiet http://llvm.org/svn/llvm-project/libcxx/tags/RELEASE_380/final libcxx; fi
13+
- if [ "$CXX" == "clang++" ]; then cd libcxx/lib && bash buildit; fi
14+
- if [ "$CXX" == "clang++" ]; then sudo cp ./libc++.so.1.0 /usr/lib/; fi
15+
- if [ "$CXX" == "clang++" ]; then sudo mkdir /usr/include/c++/v1; fi
16+
- if [ "$CXX" == "clang++" ]; then cd .. && sudo cp -r include/* /usr/include/c++/v1/; fi
17+
- if [ "$CXX" == "clang++" ]; then cd /usr/lib && sudo ln -sf libc++.so.1.0 libc++.so; fi
18+
- if [ "$CXX" == "clang++" ]; then sudo ln -sf libc++.so.1.0 libc++.so.1 && cd $cwd; fi
19+
20+
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo apt-get install -qq gcc-5-multilib g++-5-multilib; fi
21+
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo apt-get install --allow-unauthenticated -qq clang-3.8; fi
22+
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 90; fi
23+
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 90; fi
1424
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo apt-get install -y lib32gcc1; fi
1525
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo apt-get install -y libc6-i386; fi
1626
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo apt-get install -y lib32z1-dev; fi
17-
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo apt-get install -y lib32stdc++6; fi
27+
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo apt-get install -y lib32stdc++6-6-dbg; fi
1828
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo apt-get install -y bzip2; fi
1929
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo apt-get install -y libc6-dbg; fi
2030
- wget https://github.com/google/googletest/archive/release-1.7.0.zip -O googletest-release-1.7.0.zip
@@ -36,7 +46,7 @@ matrix:
3646
env: ACTION="ci/build_cmake.sh" VERSION="cpp03" ARCH="64" LIBPATH="/usr/local/lib" BOOST="boost" BOOST_INC="/usr/local/boost" CHAR_SIGN="unsigned" API_VERSION="1"
3747
- os: osx
3848
compiler: clang
39-
env: ACTION="ci/build_cmake.sh" VERSION="cpp11" ARCH="64" LIBPATH="/usr/local/lib" BOOST="boost" BOOST_INC="/usr/local/boost" CHAR_SIGN="signed" API_VERSION="2"
49+
env: ACTION="ci/build_cmake.sh" VERSION="cpp11" ARCH="64" LIBPATH="/usr/local/lib" BOOST="boost" BOOST_INC="/usr/local/boost" CHAR_SIGN="signed" API_VERSION="2" X3_PARSE="ON"
4050
- os: osx
4151
compiler: clang
4252
env: ACTION="ci/build_cmake.sh" VERSION="cpp11" ARCH="64" LIBPATH="/usr/local/lib" BOOST="" BOOST_INC="" CHAR_SIGN="signed" API_VERSION="2"
@@ -51,7 +61,7 @@ matrix:
5161
env: ACTION="ci/build_cmake.sh" VERSION="cpp03" ARCH="32" LIBPATH="/usr/local/lib32" BOOST="" BOOST_INC="" CHAR_SIGN="signed" API_VERSION="2"
5262
- os: linux
5363
compiler: clang
54-
env: ACTION="ci/build_cmake.sh" VERSION="cpp11" ARCH="64" LIBPATH="/usr/local/lib" BOOST="boost" BOOST_INC="/usr/local/boost" CHAR_SIGN="signed" API_VERSION="2"
64+
env: ACTION="ci/build_cmake.sh" VERSION="cpp11" ARCH="64" LIBPATH="/usr/local/lib" BOOST="boost" BOOST_INC="/usr/local/boost" CHAR_SIGN="signed" API_VERSION="2" X3_PARSE="ON"
5565
- os: linux
5666
compiler: clang
5767
env: ACTION="ci/build_cmake.sh" VERSION="cpp11" ARCH="32" LIBPATH="/usr/local/lib32" BOOST="" BOOST_INC="" SHARED="OFF" CHAR_SIGN="unsigned" API_VERSION="2"
@@ -60,7 +70,7 @@ matrix:
6070
env: ACTION="ci/build_cmake.sh" VERSION="cpp11" ARCH="64" LIBPATH="/usr/local/lib" BOOST="" BOOST_INC="" CHAR_SIGN="signed" API_VERSION="2"
6171
- os: linux
6272
compiler: gcc
63-
env: ACTION="ci/build_cmake.sh" VERSION="cpp11" ARCH="32" LIBPATH="/usr/local/lib32" BOOST="boost" BOOST_INC="/usr/local/boost" CHAR_SIGN="unsigned" API_VERSION="2"
73+
env: ACTION="ci/build_cmake.sh" VERSION="cpp11" ARCH="32" LIBPATH="/usr/local/lib32" BOOST="boost" BOOST_INC="/usr/local/boost" CHAR_SIGN="unsigned" API_VERSION="2" X3_PARSE="ON"
6474
- os: linux
6575
compiler: gcc
6676
env: ACTION="ci/build_cmake.sh" VERSION="cpp03" ARCH="64" LIBPATH="/usr/local/lib" BOOST="" BOOST_INC="" CHAR_SIGN="unsigned" API_VERSION="2"
@@ -72,4 +82,4 @@ matrix:
7282
env: ACTION="ci/build_cmake.sh" VERSION="cpp03" ARCH="32" LIBPATH="/usr/local/lib32" BOOST="boost" BOOST_INC="/usr/local/boost" SHARED="OFF" CHAR_SIGN="signed" API_VERSION="2"
7383

7484
script:
75-
- git clean -xdf && CMAKE_LIBRARY_PATH=${LIBPATH} ${ACTION} ${VERSION} ${ARCH} ${BOOST} ${BOOST_INC} ${CHAR_SIGN}
85+
- git clean -xdf && CMAKE_LIBRARY_PATH=${LIBPATH} ${ACTION} ${VERSION} ${ARCH} ${BOOST} ${BOOST_INC}

CMakeLists.txt

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -38,27 +38,40 @@ IF (APPLE)
3838
ENDIF ()
3939
ENDIF ()
4040

41-
IF (MSGPACK_CXX11)
41+
IF (MSGPACK_USE_X3_PARSE)
4242
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
43-
SET (CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}")
43+
SET (CMAKE_CXX_FLAGS "-DMSGPACK_USE_X3_PARSE -std=c++1y ${CMAKE_CXX_FLAGS}")
4444
ELSEIF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
45-
SET (CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}")
45+
SET (CMAKE_CXX_FLAGS "-DMSGPACK_USE_X3_PARSE -std=c++1y ${CMAKE_CXX_FLAGS}")
4646
ELSEIF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
47+
SET (CMAKE_CXX_FLAGS "-DMSGPACK_USE_X3_PARSE ${CMAKE_CXX_FLAGS}")
4748
IF (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19)
48-
MESSAGE ( FATAL_ERROR "MSVC doesn't support C++11.")
49+
MESSAGE ( FATAL_ERROR "MSVC doesn't support C++14.")
4950
ENDIF ()
5051
ENDIF ()
5152
ELSE ()
52-
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
53-
IF ((CMAKE_CXX_COMPILER_VERSION VERSION_GREATER ${GNUCXX_STD_SUPPORT_VERSION}) OR
54-
(CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL ${GNUCXX_STD_SUPPORT_VERSION}))
55-
SET (CMAKE_CXX_FLAGS "-std=c++98 ${CMAKE_CXX_FLAGS}")
53+
IF (MSGPACK_CXX11)
54+
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
55+
SET (CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}")
56+
ELSEIF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
57+
SET (CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}")
58+
ELSEIF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
59+
IF (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19)
60+
MESSAGE ( FATAL_ERROR "MSVC doesn't support C++11.")
61+
ENDIF ()
5662
ENDIF ()
57-
ELSEIF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
58-
SET (CMAKE_CXX_FLAGS "-std=c++98 ${CMAKE_CXX_FLAGS}")
59-
ELSEIF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
60-
IF (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 18)
61-
SET (CMAKE_CXX_FLAGS "-DMSGPACK_USE_CPP03 ${CMAKE_CXX_FLAGS}")
63+
ELSE ()
64+
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
65+
IF ((CMAKE_CXX_COMPILER_VERSION VERSION_GREATER ${GNUCXX_STD_SUPPORT_VERSION}) OR
66+
(CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL ${GNUCXX_STD_SUPPORT_VERSION}))
67+
SET (CMAKE_CXX_FLAGS "-std=c++98 ${CMAKE_CXX_FLAGS}")
68+
ENDIF ()
69+
ELSEIF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
70+
SET (CMAKE_CXX_FLAGS "-std=c++98 ${CMAKE_CXX_FLAGS}")
71+
ELSEIF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
72+
IF (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 18)
73+
SET (CMAKE_CXX_FLAGS "-DMSGPACK_USE_CPP03 ${CMAKE_CXX_FLAGS}")
74+
ENDIF ()
6275
ENDIF ()
6376
ENDIF ()
6477
ENDIF ()

appveyor.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,10 @@ build_script:
3333
- cmake --build . --config Release
3434
- cd ..
3535
- cd ..
36-
- appveyor DownloadFile http://zlib.net/zlib-1.2.9.tar.gz -FileName zlib-1.2.9.tar.gz
37-
- 7z x zlib-1.2.9.tar.gz > NUL
38-
- 7z x zlib-1.2.9.tar > NUL
39-
- cd zlib-1.2.9
36+
- appveyor DownloadFile http://zlib.net/zlib-1.2.10.tar.gz -FileName zlib-1.2.10.tar.gz
37+
- 7z x zlib-1.2.10.tar.gz > NUL
38+
- 7z x zlib-1.2.10.tar > NUL
39+
- cd zlib-1.2.10
4040
- md build
4141
- cd build
4242
- cmake -G %msvc% ..
@@ -46,9 +46,9 @@ build_script:
4646
- cd ..
4747
- md build
4848
- cd build
49-
- cmake -G %msvc% %cpp11% %boost% -DMSGPACK_BOOST_DIR=C:\Libraries\\boost_1_60_0 -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.9\build\Release\zlib.lib -DZLIB_INCLUDE_DIR=%APPVEYOR_BUILD_FOLDER%\zlib-1.2.9 -DCMAKE_CXX_FLAGS='"/D_VARIADIC_MAX=10 /EHsc"' ..
49+
- cmake -G %msvc% %cpp11% %boost% %x3_parse% -DMSGPACK_BOOST_DIR=C:\Libraries\\boost_1_60_0 -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.10\build\Release\zlib.lib -DZLIB_INCLUDE_DIR=%APPVEYOR_BUILD_FOLDER%\zlib-1.2.10 -DCMAKE_CXX_FLAGS='"/D_VARIADIC_MAX=10 /EHsc"' ..
5050
- cmake --build . --config Release
5151

5252
test_script:
53-
- set PATH=%PATH%;%APPVEYOR_BUILD_FOLDER%\googletest-release-1.7.0\build\Release;%APPVEYOR_BUILD_FOLDER%\zlib-1.2.9\build\Release;%APPVEYOR_BUILD_FOLDER%\build\release
53+
- set PATH=%PATH%;%APPVEYOR_BUILD_FOLDER%\googletest-release-1.7.0\build\Release;%APPVEYOR_BUILD_FOLDER%\zlib-1.2.10\build\Release;%APPVEYOR_BUILD_FOLDER%\build\release
5454
- ctest -V

ci/build_cmake.sh

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,22 +51,23 @@ else
5151
shared=""
5252
fi
5353

54-
cmake $cpp11 $bit32 $boost $boost_dir $shared -DMSGPACK_CHAR_SIGN=${CHAR_SIGN} -DMSGPACK_DEFAULT_API_VERSION=${API_VERSION} ..
54+
cmake $cpp11 $bit32 $boost $boost_dir $shared -DMSGPACK_CHAR_SIGN=${CHAR_SIGN} -DMSGPACK_DEFAULT_API_VERSION=${API_VERSION} -DMSGPACK_USE_X3_PARSE=${X3_PARSE} ..
5555

5656
ret=$?
5757
if [ $ret -ne 0 ]
5858
then
5959
exit $ret
6060
fi
6161

62-
make
62+
make msgpack_x3_parse VERBOSE=1
6363

6464
ret=$?
6565
if [ $ret -ne 0 ]
6666
then
6767
exit $ret
6868
fi
6969

70+
test/msgpack_x3_parse
7071
make test
7172

7273
ret=$?

include/msgpack/parse_return.hpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
//
2+
// MessagePack for C++ deserializing routine
3+
//
4+
// Copyright (C) 2017 KONDO Takatoshi
5+
//
6+
// Distributed under the Boost Software License, Version 1.0.
7+
// (See accompanying file LICENSE_1_0.txt or copy at
8+
// http://www.boost.org/LICENSE_1_0.txt)
9+
//
10+
#ifndef MSGPACK_PARSE_RETURN_HPP
11+
#define MSGPACK_PARSE_RETURN_HPP
12+
13+
#include "msgpack/v1/parse_return.hpp"
14+
#include "msgpack/v2/parse_return.hpp"
15+
16+
#endif // MSGPACK_PARSE_RETURN_HPP

include/msgpack/unpack.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,6 @@
1414

1515
#include "msgpack/v1/unpack.hpp"
1616
#include "msgpack/v2/unpack.hpp"
17+
#include "msgpack/v2/x3_unpack.hpp"
1718

1819
#endif // MSGPACK_UNPACK_HPP
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
//
2+
// MessagePack for C++ deserializing routine
3+
//
4+
// Copyright (C) 2008-2016 FURUHASHI Sadayuki and KONDO Takatoshi
5+
//
6+
// Distributed under the Boost Software License, Version 1.0.
7+
// (See accompanying file LICENSE_1_0.txt or copy at
8+
// http://www.boost.org/LICENSE_1_0.txt)
9+
//
10+
#ifndef MSGPACK_V1_PARSE_RETURN_HPP
11+
#define MSGPACK_V1_PARSE_RETURN_HPP
12+
13+
#include "msgpack/versioning.hpp"
14+
15+
namespace msgpack {
16+
17+
/// @cond
18+
MSGPACK_API_VERSION_NAMESPACE(v1) {
19+
/// @endcond
20+
21+
22+
// for internal use
23+
typedef enum {
24+
PARSE_SUCCESS = 2,
25+
PARSE_EXTRA_BYTES = 1,
26+
PARSE_CONTINUE = 0,
27+
PARSE_PARSE_ERROR = -1
28+
} parse_return;
29+
30+
/// @cond
31+
} // MSGPACK_API_VERSION_NAMESPACE(v1)
32+
/// @endcond
33+
34+
} // namespace msgpack
35+
36+
#endif // MSGPACK_V1_PARSE_RETURN_HPP

include/msgpack/v1/unpack.hpp

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1335,7 +1335,7 @@ inline void unpacker::remove_nonparsed_buffer()
13351335

13361336
namespace detail {
13371337

1338-
inline unpack_return
1338+
inline parse_return
13391339
unpack_imp(const char* data, std::size_t len, std::size_t& off,
13401340
msgpack::zone& result_zone, msgpack::object& result, bool& referenced,
13411341
unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR,
@@ -1345,7 +1345,7 @@ unpack_imp(const char* data, std::size_t len, std::size_t& off,
13451345

13461346
if(len <= noff) {
13471347
// FIXME
1348-
return UNPACK_CONTINUE;
1348+
return PARSE_CONTINUE;
13491349
}
13501350

13511351
detail::context ctx(f, user_data, limit);
@@ -1357,23 +1357,23 @@ unpack_imp(const char* data, std::size_t len, std::size_t& off,
13571357

13581358
int e = ctx.execute(data, len, noff);
13591359
if(e < 0) {
1360-
return UNPACK_PARSE_ERROR;
1360+
return PARSE_PARSE_ERROR;
13611361
}
13621362

13631363
referenced = ctx.user().referenced();
13641364
off = noff;
13651365

13661366
if(e == 0) {
1367-
return UNPACK_CONTINUE;
1367+
return PARSE_CONTINUE;
13681368
}
13691369

13701370
result = ctx.data();
13711371

13721372
if(noff < len) {
1373-
return UNPACK_EXTRA_BYTES;
1373+
return PARSE_EXTRA_BYTES;
13741374
}
13751375

1376-
return UNPACK_SUCCESS;
1376+
return PARSE_SUCCESS;
13771377
}
13781378

13791379
} // detail
@@ -1390,19 +1390,19 @@ inline msgpack::object_handle unpack(
13901390
msgpack::unique_ptr<msgpack::zone> z(new msgpack::zone);
13911391
referenced = false;
13921392
std::size_t noff = off;
1393-
unpack_return ret = detail::unpack_imp(
1393+
parse_return ret = detail::unpack_imp(
13941394
data, len, noff, *z, obj, referenced, f, user_data, limit);
13951395

13961396
switch(ret) {
1397-
case UNPACK_SUCCESS:
1397+
case PARSE_SUCCESS:
13981398
off = noff;
13991399
return msgpack::object_handle(obj, msgpack::move(z));
1400-
case UNPACK_EXTRA_BYTES:
1400+
case PARSE_EXTRA_BYTES:
14011401
off = noff;
14021402
return msgpack::object_handle(obj, msgpack::move(z));
1403-
case UNPACK_CONTINUE:
1403+
case PARSE_CONTINUE:
14041404
throw msgpack::insufficient_bytes("insufficient bytes");
1405-
case UNPACK_PARSE_ERROR:
1405+
case PARSE_PARSE_ERROR:
14061406
default:
14071407
throw msgpack::parse_error("parse error");
14081408
}
@@ -1447,23 +1447,23 @@ inline void unpack(
14471447
msgpack::unique_ptr<msgpack::zone> z(new msgpack::zone);
14481448
referenced = false;
14491449
std::size_t noff = off;
1450-
unpack_return ret = detail::unpack_imp(
1450+
parse_return ret = detail::unpack_imp(
14511451
data, len, noff, *z, obj, referenced, f, user_data, limit);
14521452

14531453
switch(ret) {
1454-
case UNPACK_SUCCESS:
1454+
case PARSE_SUCCESS:
14551455
off = noff;
14561456
result.set(obj);
14571457
result.zone() = msgpack::move(z);
14581458
return;
1459-
case UNPACK_EXTRA_BYTES:
1459+
case PARSE_EXTRA_BYTES:
14601460
off = noff;
14611461
result.set(obj);
14621462
result.zone() = msgpack::move(z);
14631463
return;
1464-
case UNPACK_CONTINUE:
1464+
case PARSE_CONTINUE:
14651465
throw msgpack::insufficient_bytes("insufficient bytes");
1466-
case UNPACK_PARSE_ERROR:
1466+
case PARSE_PARSE_ERROR:
14671467
default:
14681468
throw msgpack::parse_error("parse error");
14691469
}
@@ -1510,19 +1510,19 @@ inline msgpack::object unpack(
15101510
msgpack::object obj;
15111511
std::size_t noff = off;
15121512
referenced = false;
1513-
unpack_return ret = detail::unpack_imp(
1513+
parse_return ret = detail::unpack_imp(
15141514
data, len, noff, z, obj, referenced, f, user_data, limit);
15151515

15161516
switch(ret) {
1517-
case UNPACK_SUCCESS:
1517+
case PARSE_SUCCESS:
15181518
off = noff;
15191519
return obj;
1520-
case UNPACK_EXTRA_BYTES:
1520+
case PARSE_EXTRA_BYTES:
15211521
off = noff;
15221522
return obj;
1523-
case UNPACK_CONTINUE:
1523+
case PARSE_CONTINUE:
15241524
throw msgpack::insufficient_bytes("insufficient bytes");
1525-
case UNPACK_PARSE_ERROR:
1525+
case PARSE_PARSE_ERROR:
15261526
default:
15271527
throw msgpack::parse_error("parse error");
15281528
}

include/msgpack/v1/unpack_decl.hpp

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
#include "msgpack/zone.hpp"
1717
#include "msgpack/cpp_config.hpp"
1818
#include "msgpack/sysdep.h"
19+
#include "msgpack/parse_return.hpp"
1920

2021
#include <memory>
2122
#include <stdexcept>
@@ -433,17 +434,9 @@ void unpack(
433434
unpack_reference_func f = MSGPACK_NULLPTR, void* user_data = MSGPACK_NULLPTR, unpack_limit const& limit = unpack_limit());
434435

435436

436-
// for internal use
437-
typedef enum {
438-
UNPACK_SUCCESS = 2,
439-
UNPACK_EXTRA_BYTES = 1,
440-
UNPACK_CONTINUE = 0,
441-
UNPACK_PARSE_ERROR = -1
442-
} unpack_return;
443-
444437
namespace detail {
445438

446-
unpack_return
439+
parse_return
447440
unpack_imp(const char* data, std::size_t len, std::size_t& off,
448441
msgpack::zone& result_zone, msgpack::object& result, bool& referenced,
449442
unpack_reference_func f, void* user_data,

0 commit comments

Comments
 (0)