Skip to content

Commit 45defd5

Browse files
authored
Merge pull request #719 from redboltz/add_byte
Add byte
2 parents 7710868 + f1726ce commit 45defd5

File tree

11 files changed

+530
-51
lines changed

11 files changed

+530
-51
lines changed

.travis.yml

Lines changed: 39 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,8 @@ install:
1010
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then ./cmake-3.7.1-Linux-x86_64.sh --prefix=${BASE}/usr --skip-license; fi
1111
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then export PATH="${BASE}/usr/bin:$PATH"; fi
1212
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then export LD_LIBRARY_PATH="${BASE}/usr/lib:$LD_LIBRARY_PATH"; fi
13-
- if [ "$CXX" == "g++" ]; then export CXX="g++-6" CC="gcc-6"; fi
14-
- if [ "$CXX" == "clang++" ] && [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$MSGPACK_FUZZ_REGRESSION" != "ON" ]; then export CXX="clang++-3.9" CC="clang-3.9"; fi
15-
- if [ "$CXX" == "clang++" ] && [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$MSGPACK_FUZZ_REGRESSION" == "ON" ]; then export CXX="clang++-5.0" CC="clang-5.0"; fi
13+
- if [ "$CXX" == "g++" ]; then export CXX="g++-7" CC="gcc-7"; fi
14+
- if [ "$CXX" == "clang++" ] && [ "$TRAVIS_OS_NAME" == "linux" ]; then export CXX="clang++-5.0" CC="clang-5.0"; fi
1615
- 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
1716
#gtest
1817
- wget https://github.com/google/googletest/archive/release-1.7.0.zip -O googletest-release-1.7.0.zip
@@ -30,21 +29,21 @@ install:
3029
# valgrind
3130
- 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
3231
# boost
33-
- if [ "$BOOST" == "ON" ] && [ "MSGPACK_FUZZ_REGRESSION" != "ON" ]; then wget http://sourceforge.net/projects/boost/files/boost/1.66.0/boost_1_66_0.zip && unzip -q boost_1_66_0.zip && cd boost_1_66_0 && ./bootstrap.sh && ./b2 -j3 --prefix=${BASE}/usr --with-chrono --with-context --with-system --with-timer address-model=${ARCH} install > /dev/null && cd ..; fi
34-
- if [ "$MSGPACK_FUZZ_REGRESSION" == "ON" ]; then wget http://sourceforge.net/projects/boost/files/boost/1.66.0/boost_1_66_0.zip && unzip -q boost_1_66_0.zip && cd boost_1_66_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
32+
- 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
33+
- 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
3534
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo ln -s /usr/include/x86_64-linux-gnu/zconf.h /usr/include; fi
3635

3736
matrix:
3837
include:
3938
- os: osx
4039
compiler: clang
41-
env: ACTION="ci/build_cmake.sh" CXX11="ON" ARCH="64" BOOST="ON" SHARED="ON" CHAR_SIGN="unsigned" API_VERSION="1"
40+
env: ACTION="ci/build_cmake.sh" CXX17="ON" ARCH="64" BOOST="ON" SHARED="ON" CHAR_SIGN="unsigned" API_VERSION="1"
4241
- os: osx
4342
compiler: clang
44-
env: ACTION="ci/build_cmake.sh" CXX11="ON" ARCH="64" BOOST="ON" SHARED="ON" CHAR_SIGN="signed" API_VERSION="3"
43+
env: ACTION="ci/build_cmake.sh" CXX17="ON" ARCH="64" BOOST="ON" SHARED="ON" CHAR_SIGN="signed" API_VERSION="3"
4544
- os: osx
4645
compiler: clang
47-
env: ACTION="ci/build_cmake.sh" CXX11="ON" ARCH="64" SHARED="ON" CHAR_SIGN="signed" API_VERSION="2"
46+
env: ACTION="ci/build_cmake.sh" CXX17="ON" ARCH="64" SHARED="ON" CHAR_SIGN="signed" API_VERSION="2"
4847
- os: osx
4948
compiler: clang
5049
env: ACTION="ci/build_cmake.sh" ARCH="64" SHARED="ON" CHAR_SIGN="unsigned" API_VERSION="2"
@@ -55,15 +54,14 @@ matrix:
5554
apt:
5655
sources:
5756
- ubuntu-toolchain-r-test
58-
- llvm-toolchain-precise-3.9
59-
- llvm-toolchain-precise
57+
- llvm-toolchain-trusty-5.0
6058
packages:
6159
- g++-multilib
6260
- gcc-multilib
63-
- gcc-5-multilib
64-
- g++-5-multilib
61+
- gcc-7-multilib
62+
- g++-7-multilib
6563
- bzip2
66-
- clang-3.9
64+
- clang-5.0
6765
- libc6-dbg
6866
- os: linux
6967
compiler: clang
@@ -72,86 +70,83 @@ matrix:
7270
apt:
7371
sources:
7472
- ubuntu-toolchain-r-test
75-
- llvm-toolchain-precise-3.9
76-
- llvm-toolchain-precise
73+
- llvm-toolchain-trusty-5.0
7774
packages:
7875
- g++-multilib
7976
- gcc-multilib
80-
- gcc-5-multilib
81-
- g++-5-multilib
77+
- gcc-7-multilib
78+
- g++-7-multilib
8279
- lib32stdc++6-6-dbg
8380
- lib32gcc1
8481
- libc6-i386
8582
- lib32z1-dev
8683
- zlib1g-dev
8784
- bzip2
88-
- clang-3.9
85+
- clang-5.0
8986
- libc6-dbg
9087
- os: linux
9188
compiler: clang
92-
env: ACTION="ci/build_cmake.sh" CXX11="ON" ARCH="64" BOOST="ON" SHARED="ON" CHAR_SIGN="signed" API_VERSION="3" X3_PARSE="ON"
89+
env: ACTION="ci/build_cmake.sh" CXX17="ON" ARCH="64" BOOST="ON" SHARED="ON" CHAR_SIGN="signed" API_VERSION="3" X3_PARSE="ON"
9390
addons:
9491
apt:
9592
sources:
9693
- ubuntu-toolchain-r-test
97-
- llvm-toolchain-precise-3.9
98-
- llvm-toolchain-precise
94+
- llvm-toolchain-trusty-5.0
9995
packages:
10096
- g++-multilib
10197
- gcc-multilib
102-
- gcc-5-multilib
103-
- g++-5-multilib
98+
- gcc-7-multilib
99+
- g++-7-multilib
104100
- bzip2
105-
- clang-3.9
101+
- clang-5.0
106102
- libc6-dbg
107103
- os: linux
108104
compiler: clang
109-
env: ACTION="ci/build_cmake.sh" CXX11="ON" ARCH="32" SHARED="OFF" CHAR_SIGN="unsigned" API_VERSION="2"
105+
env: ACTION="ci/build_cmake.sh" CXX17="ON" ARCH="32" SHARED="OFF" CHAR_SIGN="unsigned" API_VERSION="2"
110106
addons:
111107
apt:
112108
sources:
113109
- ubuntu-toolchain-r-test
114-
- llvm-toolchain-precise-3.9
115-
- llvm-toolchain-precise
110+
- llvm-toolchain-trusty-5.0
116111
packages:
117112
- g++-multilib
118113
- gcc-multilib
119-
- gcc-5-multilib
120-
- g++-5-multilib
114+
- gcc-7-multilib
115+
- g++-7-multilib
121116
- lib32stdc++6-6-dbg
122117
- lib32gcc1
123118
- libc6-i386
124119
- lib32z1-dev
125120
- zlib1g-dev
126121
- bzip2
127-
- clang-3.9
122+
- clang-5.0
128123
- libc6-dbg
129124
- os: linux
130125
compiler: gcc
131-
env: ACTION="ci/build_cmake.sh" CXX11="ON" ARCH="64" SHARED="ON" CHAR_SIGN="signed" API_VERSION="2"
126+
env: ACTION="ci/build_cmake.sh" CXX17="ON" ARCH="64" SHARED="ON" CHAR_SIGN="signed" API_VERSION="2"
132127
addons:
133128
apt:
134129
sources:
135130
- ubuntu-toolchain-r-test
136131
packages:
137132
- g++-multilib
138133
- gcc-multilib
139-
- gcc-6-multilib
140-
- g++-6-multilib
134+
- gcc-7-multilib
135+
- g++-7-multilib
141136
- bzip2
142137
- libc6-dbg
143138
- os: linux
144139
compiler: gcc
145-
env: ACTION="ci/build_cmake.sh" CXX11="ON" ARCH="32" BOOST="ON" SHARED="ON" CHAR_SIGN="unsigned" API_VERSION="3" X3_PARSE="ON"
140+
env: ACTION="ci/build_cmake.sh" CXX17="ON" ARCH="32" BOOST="ON" SHARED="ON" CHAR_SIGN="unsigned" API_VERSION="3" X3_PARSE="ON"
146141
addons:
147142
apt:
148143
sources:
149144
- ubuntu-toolchain-r-test
150145
packages:
151146
- g++-multilib
152147
- gcc-multilib
153-
- gcc-6-multilib
154-
- g++-6-multilib
148+
- gcc-7-multilib
149+
- g++-7-multilib
155150
- lib32stdc++6-6-dbg
156151
- lib32gcc1
157152
- libc6-i386
@@ -169,8 +164,8 @@ matrix:
169164
packages:
170165
- g++-multilib
171166
- gcc-multilib
172-
- gcc-6-multilib
173-
- g++-6-multilib
167+
- gcc-7-multilib
168+
- g++-7-multilib
174169
- bzip2
175170
- libc6-dbg
176171
- os: linux
@@ -183,8 +178,8 @@ matrix:
183178
packages:
184179
- g++-multilib
185180
- gcc-multilib
186-
- gcc-6-multilib
187-
- g++-6-multilib
181+
- gcc-7-multilib
182+
- g++-7-multilib
188183
- lib32stdc++6-6-dbg
189184
- lib32gcc1
190185
- libc6-i386
@@ -202,8 +197,8 @@ matrix:
202197
packages:
203198
- g++-multilib
204199
- gcc-multilib
205-
- gcc-6-multilib
206-
- g++-6-multilib
200+
- gcc-7-multilib
201+
- g++-7-multilib
207202
- lib32stdc++6-6-dbg
208203
- lib32gcc1
209204
- libc6-i386
@@ -218,8 +213,7 @@ matrix:
218213
apt:
219214
sources:
220215
- ubuntu-toolchain-r-test
221-
- llvm-toolchain-precise-3.9
222-
- llvm-toolchain-precise
216+
- llvm-toolchain-trusty-5.0
223217
packages:
224218
- bzip2
225219
- clang-5.0
@@ -232,8 +226,7 @@ matrix:
232226
apt:
233227
sources:
234228
- ubuntu-toolchain-r-test
235-
- llvm-toolchain-precise-3.9
236-
- llvm-toolchain-precise
229+
- llvm-toolchain-trusty-5.0
237230
packages:
238231
- bzip2
239232
- clang-5.0

Files.cmake

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,8 +182,11 @@ IF (MSGPACK_ENABLE_CXX)
182182
include/msgpack/adaptor/cpp11/unique_ptr.hpp
183183
include/msgpack/adaptor/cpp11/unordered_map.hpp
184184
include/msgpack/adaptor/cpp11/unordered_set.hpp
185+
include/msgpack/adaptor/cpp17/byte.hpp
186+
include/msgpack/adaptor/cpp17/carray_byte.hpp
185187
include/msgpack/adaptor/cpp17/optional.hpp
186188
include/msgpack/adaptor/cpp17/string_view.hpp
189+
include/msgpack/adaptor/cpp17/vector_byte.hpp
187190
include/msgpack/adaptor/define.hpp
188191
include/msgpack/adaptor/define_decl.hpp
189192
include/msgpack/adaptor/deque.hpp
@@ -539,8 +542,11 @@ IF (MSGPACK_ENABLE_CXX)
539542
include/msgpack/v1/adaptor/cpp11/unique_ptr.hpp
540543
include/msgpack/v1/adaptor/cpp11/unordered_map.hpp
541544
include/msgpack/v1/adaptor/cpp11/unordered_set.hpp
545+
include/msgpack/v1/adaptor/cpp17/byte.hpp
546+
include/msgpack/v1/adaptor/cpp17/carray_byte.hpp
542547
include/msgpack/v1/adaptor/cpp17/optional.hpp
543548
include/msgpack/v1/adaptor/cpp17/string_view.hpp
549+
include/msgpack/v1/adaptor/cpp17/vector_byte.hpp
544550
include/msgpack/v1/adaptor/define.hpp
545551
include/msgpack/v1/adaptor/define_decl.hpp
546552
include/msgpack/v1/adaptor/deque.hpp

ci/build_cmake.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ else
2323
export BIT32="OFF"
2424
fi
2525

26-
cmake -DMSGPACK_CXX11=${CXX11} -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} ..
26+
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} ..
2727

2828
ret=$?
2929
if [ $ret -ne 0 ]
@@ -39,7 +39,7 @@ then
3939
exit $ret
4040
fi
4141

42-
make test
42+
ctest -VV
4343

4444
ret=$?
4545
if [ $ret -ne 0 ]
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
//
2+
// MessagePack for C++ static resolution routine
3+
//
4+
// Copyright (C) 2018 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+
11+
#ifndef MSGPACK_TYPE_CPP17_BYTE_HPP
12+
#define MSGPACK_TYPE_CPP17_BYTE_HPP
13+
14+
#include "msgpack/v1/adaptor/cpp17/byte.hpp"
15+
16+
#endif // MSGPACK_TYPE_CPP17_BYTE_HPP
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
//
2+
// MessagePack for C++ static resolution routine
3+
//
4+
// Copyright (C) 2018 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+
11+
#ifndef MSGPACK_TYPE_CPP17_CARRAY_BYTE_HPP
12+
#define MSGPACK_TYPE_CPP17_CARRAY_BYTE_HPP
13+
14+
#include "msgpack/v1/adaptor/cpp17/carray_byte.hpp"
15+
16+
#endif // MSGPACK_TYPE_CPP17_CARRAY_BYTE_HPP
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
//
2+
// MessagePack for C++ static resolution routine
3+
//
4+
// Copyright (C) 2018 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+
11+
#ifndef MSGPACK_TYPE_CPP17_VECTOR_BYTE_HPP
12+
#define MSGPACK_TYPE_CPP17_VECTOR_BYTE_HPP
13+
14+
#include "msgpack/v1/adaptor/cpp17/vector_byte.hpp"
15+
16+
#endif // MSGPACK_TYPE_CPP17_VECTOR_BYTE_HPP

include/msgpack/type.hpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,10 @@
5151
#include "adaptor/cpp17/string_view.hpp"
5252
#endif // MSGPACK_HAS_INCLUDE(<string_view>)
5353

54+
#include "adaptor/cpp17/byte.hpp"
55+
#include "adaptor/cpp17/carray_byte.hpp"
56+
#include "adaptor/cpp17/vector_byte.hpp"
57+
5458
#endif // defined(MSGPACK_USE_CPP03)
5559

5660
#if defined(MSGPACK_USE_BOOST)
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
//
2+
// MessagePack for C++ static resolution routine
3+
//
4+
// Copyright (C) 2018 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_TYPE_BYTE_HPP
11+
#define MSGPACK_V1_TYPE_BYTE_HPP
12+
13+
#if __cplusplus >= 201703
14+
15+
#include "msgpack/versioning.hpp"
16+
#include "msgpack/adaptor/adaptor_base.hpp"
17+
#include "msgpack/adaptor/adaptor_base.hpp"
18+
#include "msgpack/adaptor/int_decl.hpp"
19+
#include "msgpack/object.hpp"
20+
21+
#include <cstddef>
22+
23+
namespace msgpack {
24+
25+
/// @cond
26+
MSGPACK_API_VERSION_NAMESPACE(v1) {
27+
/// @endcond
28+
29+
namespace adaptor {
30+
31+
template <>
32+
struct convert<std::byte> {
33+
msgpack::object const& operator()(msgpack::object const& o, std::byte& v) const {
34+
v = static_cast<std::byte>(type::detail::convert_integer<unsigned char>(o));
35+
return o;
36+
}
37+
};
38+
39+
template <>
40+
struct pack<std::byte> {
41+
template <typename Stream>
42+
msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, std::byte v) const {
43+
o.pack_unsigned_char(static_cast<unsigned char>(v));
44+
return o;
45+
}
46+
};
47+
48+
template <>
49+
struct object<std::byte> {
50+
void operator()(msgpack::object& o, std::byte v) const {
51+
o.type = msgpack::type::POSITIVE_INTEGER;
52+
o.via.u64 = static_cast<unsigned char>(v);
53+
}
54+
};
55+
56+
template <>
57+
struct object_with_zone<std::byte> {
58+
void operator()(msgpack::object::with_zone& o, const std::byte& v) const {
59+
static_cast<msgpack::object&>(o) << v;
60+
}
61+
};
62+
63+
64+
} // namespace adaptor
65+
66+
/// @cond
67+
} // MSGPACK_API_VERSION_NAMESPACE(v1)
68+
/// @endcond
69+
70+
} // namespace msgpack
71+
72+
#endif // __cplusplus >= 201703
73+
74+
#endif // MSGPACK_V1_TYPE_BYTE_HPP

0 commit comments

Comments
 (0)