mirror of
https://github.com/msgpack/msgpack-c.git
synced 2025-10-21 07:45:02 +02:00
Compare commits
43 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
7c67109396 | ||
![]() |
fd4e28f23d | ||
![]() |
2098062613 | ||
![]() |
22bc707035 | ||
![]() |
7ad743f2da | ||
![]() |
315bbd4b40 | ||
![]() |
288a6b2e31 | ||
![]() |
a0e4294b5a | ||
![]() |
64baa15f8e | ||
![]() |
354ee5b9a3 | ||
![]() |
2ddd79499c | ||
![]() |
7f0614e998 | ||
![]() |
150d74508e | ||
![]() |
8674c821c4 | ||
![]() |
10be66712d | ||
![]() |
2698cfc254 | ||
![]() |
333ee98ab2 | ||
![]() |
156e315394 | ||
![]() |
01fedf847b | ||
![]() |
56db4475f2 | ||
![]() |
f065c2a447 | ||
![]() |
ba4d8df63e | ||
![]() |
c00584281f | ||
![]() |
45a0124ede | ||
![]() |
ceb27348bd | ||
![]() |
1ad737ee08 | ||
![]() |
7024a1ec2c | ||
![]() |
ca4a425a52 | ||
![]() |
a502097fd0 | ||
![]() |
6b99a0c8b7 | ||
![]() |
1a3fcc3a22 | ||
![]() |
111739f8ce | ||
![]() |
f638e2186b | ||
![]() |
002376c678 | ||
![]() |
09a2f81b5f | ||
![]() |
ffcaaeb482 | ||
![]() |
bd511a4bd1 | ||
![]() |
684c5e0bb0 | ||
![]() |
8e74449181 | ||
![]() |
f2b788e51f | ||
![]() |
7214b4c73f | ||
![]() |
a7a78bde9b | ||
![]() |
b4786711df |
14
CHANGELOG.md
14
CHANGELOG.md
@@ -1,3 +1,17 @@
|
|||||||
|
# 2017-08-03 version 2.1.4
|
||||||
|
* Add boost asio examples (including zlib) (#610)
|
||||||
|
* Remove some warnings (#611)
|
||||||
|
* Fix unpack visitor to treat float32/64 correctly (#613)
|
||||||
|
* Improve documents (#616)
|
||||||
|
* Fix alignment problem on some platform (#617, #518)
|
||||||
|
* Fix conflict std::tuple, std::pair, and boost::fusion::sequence problem (#619)
|
||||||
|
|
||||||
|
# 2017-06-15 version 2.1.3
|
||||||
|
* Improve build system (#603)
|
||||||
|
* Add C++17 adaptors `std::optional` and `std::string_view`. (#607, #608)
|
||||||
|
* Improve cross platform configuration (#601)
|
||||||
|
* Remove some warnings (#599, #602, #605)
|
||||||
|
|
||||||
# 2017-06-07 version 2.1.2
|
# 2017-06-07 version 2.1.2
|
||||||
|
|
||||||
* Improve documents (#565)
|
* Improve documents (#565)
|
||||||
|
@@ -50,7 +50,15 @@ IF (MSGPACK_USE_X3_PARSE)
|
|||||||
ENDIF ()
|
ENDIF ()
|
||||||
ENDIF ()
|
ENDIF ()
|
||||||
ELSE ()
|
ELSE ()
|
||||||
IF (MSGPACK_CXX11)
|
IF (MSGPACK_CXX17)
|
||||||
|
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
||||||
|
SET (CMAKE_CXX_FLAGS "-std=c++17 ${CMAKE_CXX_FLAGS}")
|
||||||
|
ELSEIF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
|
||||||
|
SET (CMAKE_CXX_FLAGS "-std=c++17 ${CMAKE_CXX_FLAGS}")
|
||||||
|
ELSEIF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
|
||||||
|
MESSAGE ( FATAL_ERROR "MSVC doesn't support C++17.")
|
||||||
|
ENDIF ()
|
||||||
|
ELSEIF (MSGPACK_CXX11)
|
||||||
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
||||||
SET (CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}")
|
SET (CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}")
|
||||||
ELSEIF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
|
ELSEIF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
|
||||||
@@ -251,7 +259,12 @@ ENDIF ()
|
|||||||
|
|
||||||
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC90" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC10")
|
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC90" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC10")
|
||||||
SET_SOURCE_FILES_PROPERTIES(${msgpackc_SOURCES} PROPERTIES LANGUAGE CXX)
|
SET_SOURCE_FILES_PROPERTIES(${msgpackc_SOURCES} PROPERTIES LANGUAGE CXX)
|
||||||
ENDIF()
|
ENDIF ()
|
||||||
|
|
||||||
|
IF ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "sparc")
|
||||||
|
SET (CMAKE_C_FLAGS "-DMSGPACK_ZONE_ALIGN=8 ${CMAKE_C_FLAGS}")
|
||||||
|
SET (CMAKE_CXX_FLAGS "-DMSGPACK_ZONE_ALIGN=8 ${CMAKE_CXX_FLAGS}")
|
||||||
|
ENDIF ()
|
||||||
|
|
||||||
IF (NOT DEFINED CMAKE_INSTALL_BINDIR)
|
IF (NOT DEFINED CMAKE_INSTALL_BINDIR)
|
||||||
SET(CMAKE_INSTALL_BINDIR bin)
|
SET(CMAKE_INSTALL_BINDIR bin)
|
||||||
|
@@ -180,6 +180,8 @@ IF (MSGPACK_ENABLE_CXX)
|
|||||||
include/msgpack/adaptor/cpp11/unique_ptr.hpp
|
include/msgpack/adaptor/cpp11/unique_ptr.hpp
|
||||||
include/msgpack/adaptor/cpp11/unordered_map.hpp
|
include/msgpack/adaptor/cpp11/unordered_map.hpp
|
||||||
include/msgpack/adaptor/cpp11/unordered_set.hpp
|
include/msgpack/adaptor/cpp11/unordered_set.hpp
|
||||||
|
include/msgpack/adaptor/cpp17/optional.hpp
|
||||||
|
include/msgpack/adaptor/cpp17/string_view.hpp
|
||||||
include/msgpack/adaptor/define.hpp
|
include/msgpack/adaptor/define.hpp
|
||||||
include/msgpack/adaptor/define_decl.hpp
|
include/msgpack/adaptor/define_decl.hpp
|
||||||
include/msgpack/adaptor/deque.hpp
|
include/msgpack/adaptor/deque.hpp
|
||||||
@@ -528,6 +530,8 @@ IF (MSGPACK_ENABLE_CXX)
|
|||||||
include/msgpack/v1/adaptor/cpp11/unique_ptr.hpp
|
include/msgpack/v1/adaptor/cpp11/unique_ptr.hpp
|
||||||
include/msgpack/v1/adaptor/cpp11/unordered_map.hpp
|
include/msgpack/v1/adaptor/cpp11/unordered_map.hpp
|
||||||
include/msgpack/v1/adaptor/cpp11/unordered_set.hpp
|
include/msgpack/v1/adaptor/cpp11/unordered_set.hpp
|
||||||
|
include/msgpack/v1/adaptor/cpp17/optional.hpp
|
||||||
|
include/msgpack/v1/adaptor/cpp17/string_view.hpp
|
||||||
include/msgpack/v1/adaptor/define.hpp
|
include/msgpack/v1/adaptor/define.hpp
|
||||||
include/msgpack/v1/adaptor/define_decl.hpp
|
include/msgpack/v1/adaptor/define_decl.hpp
|
||||||
include/msgpack/v1/adaptor/deque.hpp
|
include/msgpack/v1/adaptor/deque.hpp
|
||||||
|
@@ -96,7 +96,7 @@ int main(void) {
|
|||||||
/* deserializes it. */
|
/* deserializes it. */
|
||||||
msgpack_unpacked msg;
|
msgpack_unpacked msg;
|
||||||
msgpack_unpacked_init(&msg);
|
msgpack_unpacked_init(&msg);
|
||||||
bool success = msgpack_unpack_next(&msg, buffer->data, buffer->size, NULL);
|
msgpack_unpack_return ret = msgpack_unpack_next(&msg, buffer->data, buffer->size, NULL);
|
||||||
|
|
||||||
/* prints the deserialized object. */
|
/* prints the deserialized object. */
|
||||||
msgpack_object obj = msg.data;
|
msgpack_object obj = msg.data;
|
||||||
@@ -137,7 +137,7 @@ int main(void) {
|
|||||||
/* deserializes it. */
|
/* deserializes it. */
|
||||||
msgpack_unpacked msg;
|
msgpack_unpacked msg;
|
||||||
msgpack_unpacked_init(&msg);
|
msgpack_unpacked_init(&msg);
|
||||||
bool success = msgpack_unpack_next(&msg, buffer->data, buffer->size, NULL);
|
msgpack_unpack_return ret = msgpack_unpack_next(&msg, buffer->data, buffer->size, NULL);
|
||||||
|
|
||||||
/* prints the deserialized object. */
|
/* prints the deserialized object. */
|
||||||
msgpack_object obj = msg.data;
|
msgpack_object obj = msg.data;
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
`msgpack` for C/C++
|
`msgpack` for C/C++
|
||||||
===================
|
===================
|
||||||
|
|
||||||
Version 2.1.2 [](https://travis-ci.org/msgpack/msgpack-c) [](https://ci.appveyor.com/project/redboltz/msgpack-c/branch/master)
|
Version 2.1.4 [](https://travis-ci.org/msgpack/msgpack-c) [](https://ci.appveyor.com/project/redboltz/msgpack-c/branch/master)
|
||||||
|
|
||||||
It's like JSON but small and fast.
|
It's like JSON but small and fast.
|
||||||
|
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
version: 2.1.2.{build}
|
version: 2.1.4.{build}
|
||||||
|
|
||||||
image:
|
image:
|
||||||
- Visual Studio 2015
|
- Visual Studio 2015
|
||||||
|
@@ -75,7 +75,7 @@ struct define_array<A0<%1.upto(i) {|j|%>, A<%=j%><%}%>> {
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::ARRAY;
|
o->type = msgpack::type::ARRAY;
|
||||||
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*<%=i+1%>));
|
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*<%=i+1%>, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o->via.array.size = <%=i+1%>;
|
o->via.array.size = <%=i+1%>;
|
||||||
<%0.upto(i) {|j|%>
|
<%0.upto(i) {|j|%>
|
||||||
o->via.array.ptr[<%=j%>] = msgpack::object(a<%=j%>, z);<%}%>
|
o->via.array.ptr[<%=j%>] = msgpack::object(a<%=j%>, z);<%}%>
|
||||||
|
@@ -82,7 +82,7 @@ struct define_map<A0<%1.upto(i) {|j|%>, A<%=j%><%}%>> {
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::MAP;
|
o->type = msgpack::type::MAP;
|
||||||
o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*<%=(i+1)/2%>));
|
o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*<%=(i+1)/2%>, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
|
||||||
o->via.map.size = <%=(i+1)/2%>;
|
o->via.map.size = <%=(i+1)/2%>;
|
||||||
<%0.step(i,2) {|j|%>
|
<%0.step(i,2) {|j|%>
|
||||||
o->via.map.ptr[<%=j/2%>].key = msgpack::object(a<%=j%>, z);
|
o->via.map.ptr[<%=j/2%>].key = msgpack::object(a<%=j%>, z);
|
||||||
|
@@ -207,7 +207,7 @@ struct object_with_zone<type::tuple<A0<%1.upto(i) {|j|%>, A<%=j%><%}%>> > {
|
|||||||
msgpack::object::with_zone& o,
|
msgpack::object::with_zone& o,
|
||||||
const type::tuple<A0<%1.upto(i) {|j|%>, A<%=j%><%}%>>& v) const {
|
const type::tuple<A0<%1.upto(i) {|j|%>, A<%=j%><%}%>>& v) const {
|
||||||
o.type = msgpack::type::ARRAY;
|
o.type = msgpack::type::ARRAY;
|
||||||
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*<%=i+1%>));
|
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*<%=i+1%>, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o.via.array.size = <%=i+1%>;
|
o.via.array.size = <%=i+1%>;
|
||||||
<%0.upto(i) {|j|%>
|
<%0.upto(i) {|j|%>
|
||||||
o.via.array.ptr[<%=j%>] = msgpack::object(v.template get<<%=j%>>(), o.zone);<%}%>
|
o.via.array.ptr[<%=j%>] = msgpack::object(v.template get<<%=j%>>(), o.zone);<%}%>
|
||||||
|
@@ -178,7 +178,9 @@ private:
|
|||||||
template <typename T>
|
template <typename T>
|
||||||
static void object_delete(void* obj);
|
static void object_delete(void* obj);
|
||||||
|
|
||||||
void* allocate_expand(size_t size);
|
static char* get_aligned(char* ptr, size_t align);
|
||||||
|
|
||||||
|
char* allocate_expand(size_t size);
|
||||||
private:
|
private:
|
||||||
zone(const zone&);
|
zone(const zone&);
|
||||||
zone& operator=(const zone&);
|
zone& operator=(const zone&);
|
||||||
@@ -188,37 +190,42 @@ inline zone::zone(size_t chunk_size) /* throw() */ :m_chunk_size(chunk_size), m_
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void* zone::allocate_align(size_t size, size_t align)
|
inline char* zone::get_aligned(char* ptr, size_t align)
|
||||||
{
|
{
|
||||||
char* aligned =
|
return
|
||||||
reinterpret_cast<char*>(
|
reinterpret_cast<char*>(
|
||||||
reinterpret_cast<size_t>(
|
reinterpret_cast<size_t>(
|
||||||
(m_chunk_list.m_ptr + (align - 1))) / align * align);
|
(ptr + (align - 1))) / align * align);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void* zone::allocate_align(size_t size, size_t align)
|
||||||
|
{
|
||||||
|
char* aligned = get_aligned(m_chunk_list.m_ptr, align);
|
||||||
size_t adjusted_size = size + (aligned - m_chunk_list.m_ptr);
|
size_t adjusted_size = size + (aligned - m_chunk_list.m_ptr);
|
||||||
if(m_chunk_list.m_free >= adjusted_size) {
|
if (m_chunk_list.m_free < adjusted_size) {
|
||||||
m_chunk_list.m_free -= adjusted_size;
|
size_t enough_size = size + align - 1;
|
||||||
m_chunk_list.m_ptr += adjusted_size;
|
char* ptr = allocate_expand(enough_size);
|
||||||
return aligned;
|
aligned = get_aligned(ptr, align);
|
||||||
|
adjusted_size = size + (aligned - m_chunk_list.m_ptr);
|
||||||
}
|
}
|
||||||
return reinterpret_cast<char*>(
|
m_chunk_list.m_free -= adjusted_size;
|
||||||
reinterpret_cast<size_t>(
|
m_chunk_list.m_ptr += adjusted_size;
|
||||||
allocate_expand(size + (align - 1))) / align * align);
|
return aligned;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void* zone::allocate_no_align(size_t size)
|
inline void* zone::allocate_no_align(size_t size)
|
||||||
{
|
{
|
||||||
if(m_chunk_list.m_free < size) {
|
|
||||||
return allocate_expand(size);
|
|
||||||
}
|
|
||||||
|
|
||||||
char* ptr = m_chunk_list.m_ptr;
|
char* ptr = m_chunk_list.m_ptr;
|
||||||
|
if(m_chunk_list.m_free < size) {
|
||||||
|
ptr = allocate_expand(size);
|
||||||
|
}
|
||||||
m_chunk_list.m_free -= size;
|
m_chunk_list.m_free -= size;
|
||||||
m_chunk_list.m_ptr += size;
|
m_chunk_list.m_ptr += size;
|
||||||
|
|
||||||
return ptr;
|
return ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void* zone::allocate_expand(size_t size)
|
inline char* zone::allocate_expand(size_t size)
|
||||||
{
|
{
|
||||||
chunk_list* const cl = &m_chunk_list;
|
chunk_list* const cl = &m_chunk_list;
|
||||||
|
|
||||||
@@ -240,8 +247,8 @@ inline void* zone::allocate_expand(size_t size)
|
|||||||
|
|
||||||
c->m_next = cl->m_head;
|
c->m_next = cl->m_head;
|
||||||
cl->m_head = c;
|
cl->m_head = c;
|
||||||
cl->m_free = sz - size;
|
cl->m_free = sz;
|
||||||
cl->m_ptr = ptr + size;
|
cl->m_ptr = ptr;
|
||||||
|
|
||||||
return ptr;
|
return ptr;
|
||||||
}
|
}
|
||||||
@@ -300,7 +307,7 @@ inline std::size_t aligned_size(
|
|||||||
template <typename T<%1.upto(i) {|j|%>, typename A<%=j%><%}%>>
|
template <typename T<%1.upto(i) {|j|%>, typename A<%=j%><%}%>>
|
||||||
T* zone::allocate(<%=(1..i).map{|j|"A#{j} a#{j}"}.join(', ')%>)
|
T* zone::allocate(<%=(1..i).map{|j|"A#{j} a#{j}"}.join(', ')%>)
|
||||||
{
|
{
|
||||||
void* x = allocate_align(sizeof(T));
|
void* x = allocate_align(sizeof(T), MSGPACK_ZONE_ALIGNOF(T));
|
||||||
try {
|
try {
|
||||||
m_finalizer_array.push(&zone::object_destruct<T>, x);
|
m_finalizer_array.push(&zone::object_destruct<T>, x);
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
|
@@ -24,6 +24,14 @@
|
|||||||
#define MSGPACK_ZONE_ALIGN sizeof(void*)
|
#define MSGPACK_ZONE_ALIGN sizeof(void*)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(_MSC_VER)
|
||||||
|
#define MSGPACK_ZONE_ALIGNOF(type) __alignof(type)
|
||||||
|
#else
|
||||||
|
#define MSGPACK_ZONE_ALIGNOF(type) __alignof__(type)
|
||||||
|
#endif
|
||||||
|
// For a compiler that doesn't support __alignof__:
|
||||||
|
// #define MSGPACK_ZONE_ALIGNOF(type) MSGPACK_ZONE_ALIGN
|
||||||
|
|
||||||
<% GENERATION_LIMIT = 15 %>
|
<% GENERATION_LIMIT = 15 %>
|
||||||
namespace msgpack {
|
namespace msgpack {
|
||||||
|
|
||||||
|
@@ -3,6 +3,20 @@ IF (MSGPACK_BOOST)
|
|||||||
msgpack_variant_capitalize.cpp
|
msgpack_variant_capitalize.cpp
|
||||||
msgpack_variant_mapbased.cpp
|
msgpack_variant_mapbased.cpp
|
||||||
)
|
)
|
||||||
|
IF (MSGPACK_CXX11 OR MSGPACK_CXX17)
|
||||||
|
FIND_PACKAGE (Threads REQUIRED)
|
||||||
|
LIST (APPEND exec_PROGRAMS
|
||||||
|
asio_send_recv.cpp
|
||||||
|
)
|
||||||
|
IF (ZLIB_FOUND)
|
||||||
|
INCLUDE_DIRECTORIES (
|
||||||
|
${ZLIB_INCLUDE_DIRS}
|
||||||
|
)
|
||||||
|
LIST (APPEND exec_PROGRAMS
|
||||||
|
asio_send_recv_zlib.cpp
|
||||||
|
)
|
||||||
|
ENDIF ()
|
||||||
|
ENDIF ()
|
||||||
ENDIF ()
|
ENDIF ()
|
||||||
|
|
||||||
FOREACH (source_file ${exec_PROGRAMS})
|
FOREACH (source_file ${exec_PROGRAMS})
|
||||||
@@ -15,6 +29,15 @@ FOREACH (source_file ${exec_PROGRAMS})
|
|||||||
PRIVATE
|
PRIVATE
|
||||||
$<TARGET_PROPERTY:msgpackc,INTERFACE_INCLUDE_DIRECTORIES>
|
$<TARGET_PROPERTY:msgpackc,INTERFACE_INCLUDE_DIRECTORIES>
|
||||||
)
|
)
|
||||||
|
TARGET_LINK_LIBRARIES (${source_file_we}
|
||||||
|
${Boost_SYSTEM_LIBRARY}
|
||||||
|
${CMAKE_THREAD_LIBS_INIT}
|
||||||
|
)
|
||||||
|
IF (ZLIB_FOUND)
|
||||||
|
TARGET_LINK_LIBRARIES (${source_file_we}
|
||||||
|
${ZLIB_LIBRARIES}
|
||||||
|
)
|
||||||
|
ENDIF()
|
||||||
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
||||||
SET_PROPERTY (TARGET ${source_file_we} APPEND_STRING PROPERTY COMPILE_FLAGS "-Wall -Wextra -Werror -g -O3")
|
SET_PROPERTY (TARGET ${source_file_we} APPEND_STRING PROPERTY COMPILE_FLAGS "-Wall -Wextra -Werror -g -O3")
|
||||||
ENDIF ()
|
ENDIF ()
|
||||||
|
95
example/boost/asio_send_recv.cpp
Normal file
95
example/boost/asio_send_recv.cpp
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
// MessagePack for C++ example
|
||||||
|
//
|
||||||
|
// Copyright (C) 2017 KONDO Takatoshi
|
||||||
|
//
|
||||||
|
// Distributed under the Boost Software License, Version 1.0.
|
||||||
|
// (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
//
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <sstream>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
#include <boost/asio.hpp>
|
||||||
|
#include <boost/lexical_cast.hpp>
|
||||||
|
|
||||||
|
#include <msgpack.hpp>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
boost::asio::io_service ios;
|
||||||
|
std::uint16_t const port = 12345;
|
||||||
|
|
||||||
|
// Server
|
||||||
|
std::size_t const window_size = 10;
|
||||||
|
boost::asio::ip::tcp::acceptor ac(ios, boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), port));
|
||||||
|
boost::asio::ip::tcp::socket ss(ios);
|
||||||
|
std::function<void()> do_accept;
|
||||||
|
std::function<void()> do_async_read_some;
|
||||||
|
|
||||||
|
msgpack::unpacker unp;
|
||||||
|
|
||||||
|
do_accept = [&] {
|
||||||
|
ac.async_accept(
|
||||||
|
ss,
|
||||||
|
[&]
|
||||||
|
(boost::system::error_code const& e) {
|
||||||
|
if (e) {
|
||||||
|
std::cout << __LINE__ << ":" << e.message() << std::endl;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
unp.reserve_buffer(window_size);
|
||||||
|
do_async_read_some = [&] {
|
||||||
|
ss.async_read_some(
|
||||||
|
boost::asio::buffer(unp.buffer(), window_size),
|
||||||
|
[&](boost::system::error_code const& e, std::size_t bytes_transferred) {
|
||||||
|
if (e) {
|
||||||
|
std::cout << __LINE__ << ":" << e.message() << std::endl;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
std::cout << bytes_transferred << " bytes read." << std::endl;
|
||||||
|
unp.buffer_consumed(bytes_transferred);
|
||||||
|
msgpack::object_handle oh;
|
||||||
|
while (unp.next(oh)) {
|
||||||
|
std::cout << oh.get() << std::endl;
|
||||||
|
// In order to finish the program,
|
||||||
|
// return if one complete msgpack is processed.
|
||||||
|
// In actual server, don't return here.
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
do_async_read_some();
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
do_async_read_some();
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
do_accept();
|
||||||
|
|
||||||
|
// Client
|
||||||
|
auto host = "localhost";
|
||||||
|
boost::asio::ip::tcp::resolver r(ios);
|
||||||
|
boost::asio::ip::tcp::resolver::query q(host, boost::lexical_cast<std::string>(port));
|
||||||
|
auto it = r.resolve(q);
|
||||||
|
boost::asio::ip::tcp::socket cs(ios);
|
||||||
|
boost::asio::async_connect(
|
||||||
|
cs,
|
||||||
|
|
||||||
|
it,
|
||||||
|
[&]
|
||||||
|
(boost::system::error_code const& e, boost::asio::ip::tcp::resolver::iterator) {
|
||||||
|
if (e) {
|
||||||
|
std::cout << __LINE__ << ":" << e.message() << std::endl;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
std::cout << __LINE__ << ":client connected" << std::endl;
|
||||||
|
msgpack::sbuffer sb;
|
||||||
|
msgpack::pack(sb, std::make_tuple(42, false, "hello world", 12.3456));
|
||||||
|
write(cs, boost::asio::buffer(sb.data(), sb.size()));
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
// Start
|
||||||
|
ios.run();
|
||||||
|
}
|
165
example/boost/asio_send_recv_zlib.cpp
Normal file
165
example/boost/asio_send_recv_zlib.cpp
Normal file
@@ -0,0 +1,165 @@
|
|||||||
|
// MessagePack for C++ example
|
||||||
|
//
|
||||||
|
// Copyright (C) 2017 KONDO Takatoshi
|
||||||
|
//
|
||||||
|
// Distributed under the Boost Software License, Version 1.0.
|
||||||
|
// (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
//
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <sstream>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
#include <boost/asio.hpp>
|
||||||
|
#include <boost/lexical_cast.hpp>
|
||||||
|
|
||||||
|
#include <msgpack.hpp>
|
||||||
|
#include <msgpack/zbuffer.hpp>
|
||||||
|
|
||||||
|
#include <zlib.h>
|
||||||
|
|
||||||
|
void print(std::string const& buf) {
|
||||||
|
for (std::string::const_iterator it = buf.begin(), end = buf.end();
|
||||||
|
it != end;
|
||||||
|
++it) {
|
||||||
|
std::cout
|
||||||
|
<< std::setw(2)
|
||||||
|
<< std::hex
|
||||||
|
<< std::setfill('0')
|
||||||
|
<< (static_cast<int>(*it) & 0xff)
|
||||||
|
<< ' ';
|
||||||
|
}
|
||||||
|
std::cout << std::dec << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
boost::asio::io_service ios;
|
||||||
|
std::uint16_t const port = 12345;
|
||||||
|
|
||||||
|
int num_of_zlib_data = 2;
|
||||||
|
int idx_zlib_data = 0;
|
||||||
|
|
||||||
|
// Server
|
||||||
|
std::size_t const window_size = 11;
|
||||||
|
boost::asio::ip::tcp::acceptor ac(ios, boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), port));
|
||||||
|
boost::asio::ip::tcp::socket ss(ios);
|
||||||
|
std::function<void()> do_accept;
|
||||||
|
std::function<void()> do_async_read_some;
|
||||||
|
|
||||||
|
// zlib for decompress
|
||||||
|
z_stream strm;
|
||||||
|
auto zlib_init = [&] {
|
||||||
|
strm.zalloc = Z_NULL;
|
||||||
|
strm.zfree = Z_NULL;
|
||||||
|
strm.opaque = Z_NULL;
|
||||||
|
strm.next_in = Z_NULL;
|
||||||
|
{
|
||||||
|
int zret = inflateInit(&strm);
|
||||||
|
if (zret != Z_OK) {
|
||||||
|
std::cout << "Zlib inflateInit() error = " << zret << std::endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
zlib_init();
|
||||||
|
std::vector<char> buf(4); // buf size
|
||||||
|
|
||||||
|
msgpack::unpacker unp;
|
||||||
|
|
||||||
|
do_accept = [&] {
|
||||||
|
ac.async_accept(
|
||||||
|
ss,
|
||||||
|
[&]
|
||||||
|
(boost::system::error_code const& e) {
|
||||||
|
if (e) {
|
||||||
|
std::cout << __LINE__ << ":" << e.message() << std::endl;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
do_async_read_some = [&] {
|
||||||
|
ss.async_read_some(
|
||||||
|
boost::asio::buffer(buf),
|
||||||
|
[&](boost::system::error_code const& e, std::size_t bytes_transferred) {
|
||||||
|
if (e) {
|
||||||
|
std::cout << __LINE__ << ":" << e.message() << std::endl;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
std::cout << bytes_transferred << " bytes read." << std::endl;
|
||||||
|
print(std::string(std::string(&buf[0], buf.size())));
|
||||||
|
strm.avail_in = bytes_transferred;
|
||||||
|
do {
|
||||||
|
strm.next_in = reinterpret_cast<unsigned char*>(&buf[0]) + (bytes_transferred - strm.avail_in);
|
||||||
|
int zret;
|
||||||
|
unp.reserve_buffer(window_size);
|
||||||
|
strm.avail_out = window_size;
|
||||||
|
strm.next_out = reinterpret_cast<unsigned char*>(unp.buffer());
|
||||||
|
do {
|
||||||
|
zret = inflate(&strm, Z_NO_FLUSH);
|
||||||
|
assert(zret != Z_STREAM_ERROR);
|
||||||
|
switch (zret) {
|
||||||
|
case Z_NEED_DICT:
|
||||||
|
zret = Z_DATA_ERROR;
|
||||||
|
// fall through
|
||||||
|
case Z_DATA_ERROR:
|
||||||
|
case Z_MEM_ERROR:
|
||||||
|
inflateEnd(&strm);
|
||||||
|
std::cout << "Zlib inflate() error = " << zret << std::endl;
|
||||||
|
std::exit(-1);
|
||||||
|
}
|
||||||
|
std::size_t decompressed_size = window_size - strm.avail_out;
|
||||||
|
std::cout << decompressed_size << " bytes decompressed." << std::endl;
|
||||||
|
unp.buffer_consumed(decompressed_size);
|
||||||
|
msgpack::object_handle oh;
|
||||||
|
while (unp.next(oh)) {
|
||||||
|
std::cout << oh.get() << std::endl;
|
||||||
|
}
|
||||||
|
} while (strm.avail_out == 0);
|
||||||
|
if (zret == Z_STREAM_END) {
|
||||||
|
inflateEnd(&strm);
|
||||||
|
std::cout << "Zlib decompress finished." << std::endl;
|
||||||
|
++idx_zlib_data;
|
||||||
|
if (idx_zlib_data == num_of_zlib_data) {
|
||||||
|
std::cout << "All zlib decompress finished." << std::endl;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
zlib_init();
|
||||||
|
}
|
||||||
|
} while (strm.avail_in != 0);
|
||||||
|
do_async_read_some();
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
do_async_read_some();
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
do_accept();
|
||||||
|
|
||||||
|
// Client
|
||||||
|
auto host = "localhost";
|
||||||
|
boost::asio::ip::tcp::resolver r(ios);
|
||||||
|
boost::asio::ip::tcp::resolver::query q(host, boost::lexical_cast<std::string>(port));
|
||||||
|
auto it = r.resolve(q);
|
||||||
|
boost::asio::ip::tcp::socket cs(ios);
|
||||||
|
boost::asio::async_connect(
|
||||||
|
cs,
|
||||||
|
it,
|
||||||
|
[&]
|
||||||
|
(boost::system::error_code const& e, boost::asio::ip::tcp::resolver::iterator) {
|
||||||
|
if (e) {
|
||||||
|
std::cout << __LINE__ << ":" << e.message() << std::endl;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
std::cout << __LINE__ << ":client connected" << std::endl;
|
||||||
|
for (int i = 0; i != num_of_zlib_data; ++i) {
|
||||||
|
msgpack::zbuffer zb;
|
||||||
|
msgpack::pack(zb, std::make_tuple(i, false, "hello world", 12.3456));
|
||||||
|
zb.flush(); // finalize zbuffer (don't forget it)
|
||||||
|
print(std::string(zb.data(), zb.size()));
|
||||||
|
write(cs, boost::asio::buffer(zb.data(), zb.size()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
// Start
|
||||||
|
ios.run();
|
||||||
|
}
|
@@ -22,7 +22,7 @@ void test()
|
|||||||
|
|
||||||
msgpack_unpacked_init(&msg);
|
msgpack_unpacked_init(&msg);
|
||||||
|
|
||||||
while (msgpack_unpack_next(&msg, buf.data, buf.size, &upk_pos)) {
|
while (msgpack_unpack_next(&msg, buf.data, buf.size, &upk_pos) == MSGPACK_UNPACK_SUCCESS) {
|
||||||
}
|
}
|
||||||
|
|
||||||
msgpack_sbuffer_destroy(&buf);
|
msgpack_sbuffer_destroy(&buf);
|
||||||
|
@@ -23,7 +23,7 @@ void test()
|
|||||||
|
|
||||||
msgpack_unpacked_init(&msg);
|
msgpack_unpacked_init(&msg);
|
||||||
|
|
||||||
while (msgpack_unpack_next(&msg, buf.data, buf.size, &upk_pos)) {
|
while (msgpack_unpack_next(&msg, buf.data, buf.size, &upk_pos) == MSGPACK_UNPACK_SUCCESS) {
|
||||||
}
|
}
|
||||||
|
|
||||||
msgpack_sbuffer_destroy(&buf);
|
msgpack_sbuffer_destroy(&buf);
|
||||||
|
@@ -69,7 +69,7 @@ struct object_with_zone<my_class> {
|
|||||||
o.type = type::ARRAY;
|
o.type = type::ARRAY;
|
||||||
o.via.array.size = 2;
|
o.via.array.size = 2;
|
||||||
o.via.array.ptr = static_cast<msgpack::object*>(
|
o.via.array.ptr = static_cast<msgpack::object*>(
|
||||||
o.zone.allocate_align(sizeof(msgpack::object) * o.via.array.size));
|
o.zone.allocate_align(sizeof(msgpack::object) * o.via.array.size, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o.via.array.ptr[0] = msgpack::object(v.get_name(), o.zone);
|
o.via.array.ptr[0] = msgpack::object(v.get_name(), o.zone);
|
||||||
o.via.array.ptr[1] = msgpack::object(v.get_age(), o.zone);
|
o.via.array.ptr[1] = msgpack::object(v.get_age(), o.zone);
|
||||||
}
|
}
|
||||||
|
@@ -40,7 +40,13 @@ struct json_like_visitor : msgpack::v2::null_visitor {
|
|||||||
m_s += ss.str();
|
m_s += ss.str();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
bool visit_float(double v) {
|
bool visit_float32(float v) {
|
||||||
|
std::stringstream ss;
|
||||||
|
ss << v;
|
||||||
|
m_s += ss.str();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
bool visit_float64(double v) {
|
||||||
std::stringstream ss;
|
std::stringstream ss;
|
||||||
ss << v;
|
ss << v;
|
||||||
m_s += ss.str();
|
m_s += ss.str();
|
||||||
|
16
include/msgpack/adaptor/cpp17/optional.hpp
Normal file
16
include/msgpack/adaptor/cpp17/optional.hpp
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
//
|
||||||
|
// MessagePack for C++ static resolution routine
|
||||||
|
//
|
||||||
|
// Copyright (C) 2017 KONDO Takatoshi
|
||||||
|
//
|
||||||
|
// Distributed under the Boost Software License, Version 1.0.
|
||||||
|
// (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef MSGPACK_TYPE_CPP17_OPTIONAL_HPP
|
||||||
|
#define MSGPACK_TYPE_CPP17_OPTIONAL_HPP
|
||||||
|
|
||||||
|
#include "msgpack/v1/adaptor/cpp17/optional.hpp"
|
||||||
|
|
||||||
|
#endif // MSGPACK_TYPE_CPP17_OPTIONAL_HPP
|
16
include/msgpack/adaptor/cpp17/string_view.hpp
Normal file
16
include/msgpack/adaptor/cpp17/string_view.hpp
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
//
|
||||||
|
// MessagePack for C++ static resolution routine
|
||||||
|
//
|
||||||
|
// Copyright (C) 2017 KONDO Takatoshi
|
||||||
|
//
|
||||||
|
// Distributed under the Boost Software License, Version 1.0.
|
||||||
|
// (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef MSGPACK_TYPE_CPP17_STRING_VIEW_HPP
|
||||||
|
#define MSGPACK_TYPE_CPP17_STRING_VIEW_HPP
|
||||||
|
|
||||||
|
#include "msgpack/v1/adaptor/cpp17/string_view.hpp"
|
||||||
|
|
||||||
|
#endif // MSGPACK_TYPE_CPP17_STRING_VIEW_HPP
|
@@ -84,7 +84,7 @@ struct object_with_zone<MSGPACK_STD_TR1::unordered_map<K, V, Hash, Pred, Alloc>
|
|||||||
o.via.map.size = 0;
|
o.via.map.size = 0;
|
||||||
} else {
|
} else {
|
||||||
uint32_t size = checked_get_container_size(v.size());
|
uint32_t size = checked_get_container_size(v.size());
|
||||||
msgpack::object_kv* p = static_cast<msgpack::object_kv*>(o.zone.allocate_align(sizeof(msgpack::object_kv)*size));
|
msgpack::object_kv* p = static_cast<msgpack::object_kv*>(o.zone.allocate_align(sizeof(msgpack::object_kv)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
|
||||||
msgpack::object_kv* const pend = p + size;
|
msgpack::object_kv* const pend = p + size;
|
||||||
o.via.map.ptr = p;
|
o.via.map.ptr = p;
|
||||||
o.via.map.size = size;
|
o.via.map.size = size;
|
||||||
@@ -141,7 +141,7 @@ struct object_with_zone<MSGPACK_STD_TR1::unordered_multimap<K, V, Hash, Pred, Al
|
|||||||
o.via.map.size = 0;
|
o.via.map.size = 0;
|
||||||
} else {
|
} else {
|
||||||
uint32_t size = checked_get_container_size(v.size());
|
uint32_t size = checked_get_container_size(v.size());
|
||||||
msgpack::object_kv* p = static_cast<msgpack::object_kv*>(o.zone.allocate_align(sizeof(msgpack::object_kv)*size));
|
msgpack::object_kv* p = static_cast<msgpack::object_kv*>(o.zone.allocate_align(sizeof(msgpack::object_kv)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
|
||||||
msgpack::object_kv* const pend = p + size;
|
msgpack::object_kv* const pend = p + size;
|
||||||
o.via.map.ptr = p;
|
o.via.map.ptr = p;
|
||||||
o.via.map.size = size;
|
o.via.map.size = size;
|
||||||
|
@@ -82,7 +82,7 @@ struct object_with_zone<MSGPACK_STD_TR1::unordered_set<T, Hash, Compare, Alloc>
|
|||||||
o.via.array.size = 0;
|
o.via.array.size = 0;
|
||||||
} else {
|
} else {
|
||||||
uint32_t size = checked_get_container_size(v.size());
|
uint32_t size = checked_get_container_size(v.size());
|
||||||
msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size));
|
msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
msgpack::object* const pend = p + size;
|
msgpack::object* const pend = p + size;
|
||||||
o.via.array.ptr = p;
|
o.via.array.ptr = p;
|
||||||
o.via.array.size = size;
|
o.via.array.size = size;
|
||||||
@@ -136,7 +136,7 @@ struct object_with_zone<MSGPACK_STD_TR1::unordered_multiset<T, Hash, Compare, Al
|
|||||||
o.via.array.size = 0;
|
o.via.array.size = 0;
|
||||||
} else {
|
} else {
|
||||||
uint32_t size = checked_get_container_size(v.size());
|
uint32_t size = checked_get_container_size(v.size());
|
||||||
msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size));
|
msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
msgpack::object* const pend = p + size;
|
msgpack::object* const pend = p + size;
|
||||||
o.via.array.ptr = p;
|
o.via.array.ptr = p;
|
||||||
o.via.array.size = size;
|
o.via.array.size = size;
|
||||||
|
@@ -77,7 +77,7 @@
|
|||||||
# endif
|
# endif
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
#elif defined(unix) || defined(__unix) || defined(__APPLE__)
|
#elif defined(unix) || defined(__unix) || defined(__APPLE__) || defined(__OpenBSD__)
|
||||||
|
|
||||||
#include <arpa/inet.h> /* __BYTE_ORDER */
|
#include <arpa/inet.h> /* __BYTE_ORDER */
|
||||||
# if defined(linux)
|
# if defined(linux)
|
||||||
@@ -88,7 +88,7 @@
|
|||||||
|
|
||||||
#if MSGPACK_ENDIAN_LITTLE_BYTE
|
#if MSGPACK_ENDIAN_LITTLE_BYTE
|
||||||
|
|
||||||
# if defined(unix) || defined(__unix) || defined(__APPLE__)
|
# if defined(unix) || defined(__unix) || defined(__APPLE__) || defined(__OpenBSD__)
|
||||||
# define _msgpack_be16(x) ntohs(x)
|
# define _msgpack_be16(x) ntohs(x)
|
||||||
# else
|
# else
|
||||||
# if defined(ntohs)
|
# if defined(ntohs)
|
||||||
@@ -102,7 +102,7 @@
|
|||||||
# endif
|
# endif
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
# if defined(unix) || defined(__unix) || defined(__APPLE__)
|
# if defined(unix) || defined(__unix) || defined(__APPLE__) || defined(__OpenBSD__)
|
||||||
# define _msgpack_be32(x) ntohl(x)
|
# define _msgpack_be32(x) ntohl(x)
|
||||||
# else
|
# else
|
||||||
# if defined(ntohl)
|
# if defined(ntohl)
|
||||||
|
@@ -42,6 +42,13 @@
|
|||||||
#include "adaptor/cpp11/unordered_map.hpp"
|
#include "adaptor/cpp11/unordered_map.hpp"
|
||||||
#include "adaptor/cpp11/unordered_set.hpp"
|
#include "adaptor/cpp11/unordered_set.hpp"
|
||||||
|
|
||||||
|
#if __cplusplus >= 201703
|
||||||
|
|
||||||
|
#include "adaptor/cpp17/optional.hpp"
|
||||||
|
#include "adaptor/cpp17/string_view.hpp"
|
||||||
|
|
||||||
|
#endif // __cplusplus >= 201703
|
||||||
|
|
||||||
#endif // defined(MSGPACK_USE_CPP03)
|
#endif // defined(MSGPACK_USE_CPP03)
|
||||||
|
|
||||||
#if defined(MSGPACK_USE_BOOST)
|
#if defined(MSGPACK_USE_BOOST)
|
||||||
|
@@ -253,7 +253,7 @@ struct object_with_zone<msgpack::type::array_ref<T> > {
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
uint32_t size = checked_get_container_size(v.size());
|
uint32_t size = checked_get_container_size(v.size());
|
||||||
msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size));
|
msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
msgpack::object* const pend = p + size;
|
msgpack::object* const pend = p + size;
|
||||||
o.via.array.ptr = p;
|
o.via.array.ptr = p;
|
||||||
o.via.array.size = size;
|
o.via.array.size = size;
|
||||||
@@ -280,7 +280,7 @@ struct object_with_zone<msgpack::type::array_ref<T[N]> > {
|
|||||||
if (!v.data) { throw msgpack::type_error(); }
|
if (!v.data) { throw msgpack::type_error(); }
|
||||||
o.type = msgpack::type::ARRAY;
|
o.type = msgpack::type::ARRAY;
|
||||||
uint32_t size = checked_get_container_size(v.size());
|
uint32_t size = checked_get_container_size(v.size());
|
||||||
msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size));
|
msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
msgpack::object* const pend = p + size;
|
msgpack::object* const pend = p + size;
|
||||||
o.via.array.ptr = p;
|
o.via.array.ptr = p;
|
||||||
o.via.array.size = size;
|
o.via.array.size = size;
|
||||||
|
@@ -15,6 +15,8 @@
|
|||||||
#include "msgpack/adaptor/check_container_size.hpp"
|
#include "msgpack/adaptor/check_container_size.hpp"
|
||||||
#include "msgpack/meta.hpp"
|
#include "msgpack/meta.hpp"
|
||||||
|
|
||||||
|
#include "msgpack/adaptor/pair.hpp"
|
||||||
|
|
||||||
#if !defined (MSGPACK_USE_CPP03)
|
#if !defined (MSGPACK_USE_CPP03)
|
||||||
#include "msgpack/adaptor/cpp11/tuple.hpp"
|
#include "msgpack/adaptor/cpp11/tuple.hpp"
|
||||||
#endif // #if !defined (MSGPACK_USE_CPP03)
|
#endif // #if !defined (MSGPACK_USE_CPP03)
|
||||||
@@ -34,13 +36,54 @@ MSGPACK_API_VERSION_NAMESPACE(v1) {
|
|||||||
|
|
||||||
namespace adaptor {
|
namespace adaptor {
|
||||||
|
|
||||||
|
namespace detail {
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
struct is_std_pair {
|
||||||
|
static bool const value = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename T, typename U>
|
||||||
|
struct is_std_pair<std::pair<T, U> > {
|
||||||
|
static bool const value = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
#if !defined(MSGPACK_USE_CPP03)
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
struct is_std_tuple {
|
||||||
|
static bool const value = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename... Args>
|
||||||
|
struct is_std_tuple<std::tuple<Args...>> {
|
||||||
|
static bool const value = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // !defined(MSGPACK_USE_CPP03)
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
struct is_seq_no_pair_no_tuple {
|
||||||
|
static bool const value =
|
||||||
|
boost::fusion::traits::is_sequence<T>::value
|
||||||
|
&&
|
||||||
|
!is_std_pair<T>::value
|
||||||
|
#if !defined (MSGPACK_USE_CPP03)
|
||||||
|
&&
|
||||||
|
!is_std_tuple<T>::value
|
||||||
|
#endif // !defined (MSGPACK_USE_CPP03)
|
||||||
|
;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace detail
|
||||||
|
|
||||||
#if !defined (MSGPACK_USE_CPP03)
|
#if !defined (MSGPACK_USE_CPP03)
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
struct as<
|
struct as<
|
||||||
T,
|
T,
|
||||||
typename msgpack::enable_if<
|
typename msgpack::enable_if<
|
||||||
boost::fusion::traits::is_sequence<T>::value &&
|
detail::is_seq_no_pair_no_tuple<T>::value &&
|
||||||
boost::mpl::fold<
|
boost::mpl::fold<
|
||||||
T,
|
T,
|
||||||
boost::mpl::bool_<true>,
|
boost::mpl::bool_<true>,
|
||||||
@@ -82,7 +125,7 @@ struct as<
|
|||||||
#endif // !defined (MSGPACK_USE_CPP03)
|
#endif // !defined (MSGPACK_USE_CPP03)
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
struct convert<T, typename msgpack::enable_if<boost::fusion::traits::is_sequence<T>::value>::type > {
|
struct convert<T, typename msgpack::enable_if<detail::is_seq_no_pair_no_tuple<T>::value>::type > {
|
||||||
msgpack::object const& operator()(msgpack::object const& o, T& v) const {
|
msgpack::object const& operator()(msgpack::object const& o, T& v) const {
|
||||||
if (o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
|
if (o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
|
||||||
if (o.via.array.size != checked_get_container_size(boost::fusion::size(v))) {
|
if (o.via.array.size != checked_get_container_size(boost::fusion::size(v))) {
|
||||||
@@ -106,7 +149,7 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
struct pack<T, typename msgpack::enable_if<boost::fusion::traits::is_sequence<T>::value>::type > {
|
struct pack<T, typename msgpack::enable_if<detail::is_seq_no_pair_no_tuple<T>::value>::type > {
|
||||||
template <typename Stream>
|
template <typename Stream>
|
||||||
msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const T& v) const {
|
msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const T& v) const {
|
||||||
uint32_t size = checked_get_container_size(boost::fusion::size(v));
|
uint32_t size = checked_get_container_size(boost::fusion::size(v));
|
||||||
@@ -128,11 +171,11 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
struct object_with_zone<T, typename msgpack::enable_if<boost::fusion::traits::is_sequence<T>::value>::type > {
|
struct object_with_zone<T, typename msgpack::enable_if<detail::is_seq_no_pair_no_tuple<T>::value>::type > {
|
||||||
void operator()(msgpack::object::with_zone& o, const T& v) const {
|
void operator()(msgpack::object::with_zone& o, const T& v) const {
|
||||||
uint32_t size = checked_get_container_size(boost::fusion::size(v));
|
uint32_t size = checked_get_container_size(boost::fusion::size(v));
|
||||||
o.type = msgpack::type::ARRAY;
|
o.type = msgpack::type::ARRAY;
|
||||||
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size));
|
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o.via.array.size = size;
|
o.via.array.size = size;
|
||||||
uint32_t count = 0;
|
uint32_t count = 0;
|
||||||
boost::fusion::for_each(v, with_zone_imp(o, count));
|
boost::fusion::for_each(v, with_zone_imp(o, count));
|
||||||
|
@@ -151,7 +151,7 @@ struct object_with_zone<T[N]> {
|
|||||||
void operator()(msgpack::object::with_zone& o, const T(&v)[N]) const {
|
void operator()(msgpack::object::with_zone& o, const T(&v)[N]) const {
|
||||||
uint32_t size = checked_get_container_size(N);
|
uint32_t size = checked_get_container_size(N);
|
||||||
o.type = msgpack::type::ARRAY;
|
o.type = msgpack::type::ARRAY;
|
||||||
msgpack::object* ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object) * size));
|
msgpack::object* ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object) * size, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o.via.array.ptr = ptr;
|
o.via.array.ptr = ptr;
|
||||||
o.via.array.size = size;
|
o.via.array.size = size;
|
||||||
const T* pv = v;
|
const T* pv = v;
|
||||||
@@ -169,7 +169,7 @@ struct object_with_zone<char[N]> {
|
|||||||
char const* p2 = static_cast<char const*>(std::memchr(p, '\0', size));
|
char const* p2 = static_cast<char const*>(std::memchr(p, '\0', size));
|
||||||
uint32_t adjusted_size = p2 ? static_cast<uint32_t>(p2 - p) : size;
|
uint32_t adjusted_size = p2 ? static_cast<uint32_t>(p2 - p) : size;
|
||||||
o.type = msgpack::type::STR;
|
o.type = msgpack::type::STR;
|
||||||
char* ptr = static_cast<char*>(o.zone.allocate_align(adjusted_size));
|
char* ptr = static_cast<char*>(o.zone.allocate_align(adjusted_size, MSGPACK_ZONE_ALIGNOF(char)));
|
||||||
o.via.str.ptr = ptr;
|
o.via.str.ptr = ptr;
|
||||||
o.via.str.size = adjusted_size;
|
o.via.str.size = adjusted_size;
|
||||||
std::memcpy(ptr, p, adjusted_size);
|
std::memcpy(ptr, p, adjusted_size);
|
||||||
@@ -184,7 +184,7 @@ struct object_with_zone<const char[N]> {
|
|||||||
char const* p2 = static_cast<char const*>(std::memchr(p, '\0', size));
|
char const* p2 = static_cast<char const*>(std::memchr(p, '\0', size));
|
||||||
uint32_t adjusted_size = p2 ? static_cast<uint32_t>(p2 - p) : size;
|
uint32_t adjusted_size = p2 ? static_cast<uint32_t>(p2 - p) : size;
|
||||||
o.type = msgpack::type::STR;
|
o.type = msgpack::type::STR;
|
||||||
char* ptr = static_cast<char*>(o.zone.allocate_align(adjusted_size));
|
char* ptr = static_cast<char*>(o.zone.allocate_align(adjusted_size, MSGPACK_ZONE_ALIGNOF(char)));
|
||||||
o.via.str.ptr = ptr;
|
o.via.str.ptr = ptr;
|
||||||
o.via.str.size = adjusted_size;
|
o.via.str.size = adjusted_size;
|
||||||
std::memcpy(ptr, p, adjusted_size);
|
std::memcpy(ptr, p, adjusted_size);
|
||||||
@@ -196,7 +196,7 @@ struct object_with_zone<unsigned char[N]> {
|
|||||||
void operator()(msgpack::object::with_zone& o, const unsigned char(&v)[N]) const {
|
void operator()(msgpack::object::with_zone& o, const unsigned char(&v)[N]) const {
|
||||||
uint32_t size = checked_get_container_size(N);
|
uint32_t size = checked_get_container_size(N);
|
||||||
o.type = msgpack::type::BIN;
|
o.type = msgpack::type::BIN;
|
||||||
char* ptr = static_cast<char*>(o.zone.allocate_align(size));
|
char* ptr = static_cast<char*>(o.zone.allocate_align(size, MSGPACK_ZONE_ALIGNOF(char)));
|
||||||
o.via.bin.ptr = ptr;
|
o.via.bin.ptr = ptr;
|
||||||
o.via.bin.size = size;
|
o.via.bin.size = size;
|
||||||
std::memcpy(ptr, v, size);
|
std::memcpy(ptr, v, size);
|
||||||
@@ -208,7 +208,7 @@ struct object_with_zone<const unsigned char[N]> {
|
|||||||
void operator()(msgpack::object::with_zone& o, const unsigned char(&v)[N]) const {
|
void operator()(msgpack::object::with_zone& o, const unsigned char(&v)[N]) const {
|
||||||
uint32_t size = checked_get_container_size(N);
|
uint32_t size = checked_get_container_size(N);
|
||||||
o.type = msgpack::type::BIN;
|
o.type = msgpack::type::BIN;
|
||||||
char* ptr = static_cast<char*>(o.zone.allocate_align(size));
|
char* ptr = static_cast<char*>(o.zone.allocate_align(size, MSGPACK_ZONE_ALIGNOF(char)));
|
||||||
o.via.bin.ptr = ptr;
|
o.via.bin.ptr = ptr;
|
||||||
o.via.bin.size = size;
|
o.via.bin.size = size;
|
||||||
std::memcpy(ptr, v, size);
|
std::memcpy(ptr, v, size);
|
||||||
|
@@ -41,7 +41,7 @@ struct object_with_zone<const char*> {
|
|||||||
void operator()(msgpack::object::with_zone& o, const char* v) const {
|
void operator()(msgpack::object::with_zone& o, const char* v) const {
|
||||||
uint32_t size = checked_get_container_size(std::strlen(v));
|
uint32_t size = checked_get_container_size(std::strlen(v));
|
||||||
o.type = msgpack::type::STR;
|
o.type = msgpack::type::STR;
|
||||||
char* ptr = static_cast<char*>(o.zone.allocate_align(size));
|
char* ptr = static_cast<char*>(o.zone.allocate_align(size, MSGPACK_ZONE_ALIGNOF(char)));
|
||||||
o.via.str.ptr = ptr;
|
o.via.str.ptr = ptr;
|
||||||
o.via.str.size = size;
|
o.via.str.size = size;
|
||||||
std::memcpy(ptr, v, size);
|
std::memcpy(ptr, v, size);
|
||||||
|
@@ -119,7 +119,7 @@ struct object_with_zone<std::array<T, N>> {
|
|||||||
o.via.array.size = 0;
|
o.via.array.size = 0;
|
||||||
} else {
|
} else {
|
||||||
uint32_t size = checked_get_container_size(v.size());
|
uint32_t size = checked_get_container_size(v.size());
|
||||||
msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size));
|
msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o.via.array.size = size;
|
o.via.array.size = size;
|
||||||
o.via.array.ptr = p;
|
o.via.array.ptr = p;
|
||||||
for (auto const& e : v) *p++ = msgpack::object(e, o.zone);
|
for (auto const& e : v) *p++ = msgpack::object(e, o.zone);
|
||||||
|
@@ -45,6 +45,13 @@ struct convert<std::array<char, N>> {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template <>
|
||||||
|
struct convert<std::array<char, 0>> {
|
||||||
|
msgpack::object const& operator()(msgpack::object const& o, std::array<char, 0>&) const {
|
||||||
|
return o;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
template <std::size_t N>
|
template <std::size_t N>
|
||||||
struct pack<std::array<char, N>> {
|
struct pack<std::array<char, N>> {
|
||||||
template <typename Stream>
|
template <typename Stream>
|
||||||
@@ -72,7 +79,7 @@ struct object_with_zone<std::array<char, N>> {
|
|||||||
void operator()(msgpack::object::with_zone& o, const std::array<char, N>& v) const {
|
void operator()(msgpack::object::with_zone& o, const std::array<char, N>& v) const {
|
||||||
uint32_t size = checked_get_container_size(v.size());
|
uint32_t size = checked_get_container_size(v.size());
|
||||||
o.type = msgpack::type::BIN;
|
o.type = msgpack::type::BIN;
|
||||||
char* ptr = static_cast<char*>(o.zone.allocate_align(size));
|
char* ptr = static_cast<char*>(o.zone.allocate_align(size, MSGPACK_ZONE_ALIGNOF(char)));
|
||||||
o.via.bin.ptr = ptr;
|
o.via.bin.ptr = ptr;
|
||||||
o.via.bin.size = size;
|
o.via.bin.size = size;
|
||||||
std::memcpy(ptr, v.data(), size);
|
std::memcpy(ptr, v.data(), size);
|
||||||
|
@@ -45,6 +45,13 @@ struct convert<std::array<unsigned char, N>> {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template <>
|
||||||
|
struct convert<std::array<unsigned char, 0>> {
|
||||||
|
msgpack::object const& operator()(msgpack::object const& o, std::array<unsigned char, 0>&) const {
|
||||||
|
return o;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
template <std::size_t N>
|
template <std::size_t N>
|
||||||
struct pack<std::array<unsigned char, N>> {
|
struct pack<std::array<unsigned char, N>> {
|
||||||
template <typename Stream>
|
template <typename Stream>
|
||||||
@@ -72,7 +79,7 @@ struct object_with_zone<std::array<unsigned char, N>> {
|
|||||||
void operator()(msgpack::object::with_zone& o, const std::array<unsigned char, N>& v) const {
|
void operator()(msgpack::object::with_zone& o, const std::array<unsigned char, N>& v) const {
|
||||||
uint32_t size = checked_get_container_size(v.size());
|
uint32_t size = checked_get_container_size(v.size());
|
||||||
o.type = msgpack::type::BIN;
|
o.type = msgpack::type::BIN;
|
||||||
char* ptr = static_cast<char*>(o.zone.allocate_align(size));
|
char* ptr = static_cast<char*>(o.zone.allocate_align(size, MSGPACK_ZONE_ALIGNOF(char)));
|
||||||
o.via.bin.ptr = ptr;
|
o.via.bin.ptr = ptr;
|
||||||
o.via.bin.size = size;
|
o.via.bin.size = size;
|
||||||
std::memcpy(ptr, v.data(), size);
|
std::memcpy(ptr, v.data(), size);
|
||||||
|
@@ -76,7 +76,7 @@ struct object_with_zone<std::forward_list<T, Alloc>> {
|
|||||||
uint32_t size = checked_get_container_size(std::distance(v.begin(), v.end()));
|
uint32_t size = checked_get_container_size(std::distance(v.begin(), v.end()));
|
||||||
o.via.array.size = size;
|
o.via.array.size = size;
|
||||||
msgpack::object* p = static_cast<msgpack::object*>(
|
msgpack::object* p = static_cast<msgpack::object*>(
|
||||||
o.zone.allocate_align(sizeof(msgpack::object)*size));
|
o.zone.allocate_align(sizeof(msgpack::object)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o.via.array.ptr = p;
|
o.via.array.ptr = p;
|
||||||
for(auto const& e : v) *p++ = msgpack::object(e, o.zone);
|
for(auto const& e : v) *p++ = msgpack::object(e, o.zone);
|
||||||
}
|
}
|
||||||
|
@@ -158,7 +158,7 @@ struct object_with_zone<std::tuple<Args...>> {
|
|||||||
std::tuple<Args...> const& v) const {
|
std::tuple<Args...> const& v) const {
|
||||||
uint32_t size = checked_get_container_size(sizeof...(Args));
|
uint32_t size = checked_get_container_size(sizeof...(Args));
|
||||||
o.type = msgpack::type::ARRAY;
|
o.type = msgpack::type::ARRAY;
|
||||||
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size));
|
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o.via.array.size = size;
|
o.via.array.size = size;
|
||||||
StdTupleToObjectWithZone<decltype(v), sizeof...(Args)>::convert(o, v);
|
StdTupleToObjectWithZone<decltype(v), sizeof...(Args)>::convert(o, v);
|
||||||
}
|
}
|
||||||
|
@@ -81,7 +81,7 @@ struct object_with_zone<std::unordered_map<K, V, Hash, Compare, Alloc>> {
|
|||||||
o.via.map.size = 0;
|
o.via.map.size = 0;
|
||||||
} else {
|
} else {
|
||||||
uint32_t size = checked_get_container_size(v.size());
|
uint32_t size = checked_get_container_size(v.size());
|
||||||
msgpack::object_kv* p = static_cast<msgpack::object_kv*>(o.zone.allocate_align(sizeof(msgpack::object_kv)*size));
|
msgpack::object_kv* p = static_cast<msgpack::object_kv*>(o.zone.allocate_align(sizeof(msgpack::object_kv)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
|
||||||
msgpack::object_kv* const pend = p + size;
|
msgpack::object_kv* const pend = p + size;
|
||||||
o.via.map.ptr = p;
|
o.via.map.ptr = p;
|
||||||
o.via.map.size = size;
|
o.via.map.size = size;
|
||||||
@@ -155,7 +155,7 @@ struct object_with_zone<std::unordered_multimap<K, V, Hash, Compare, Alloc>> {
|
|||||||
o.via.map.size = 0;
|
o.via.map.size = 0;
|
||||||
} else {
|
} else {
|
||||||
uint32_t size = checked_get_container_size(v.size());
|
uint32_t size = checked_get_container_size(v.size());
|
||||||
msgpack::object_kv* p = static_cast<msgpack::object_kv*>(o.zone.allocate_align(sizeof(msgpack::object_kv)*size));
|
msgpack::object_kv* p = static_cast<msgpack::object_kv*>(o.zone.allocate_align(sizeof(msgpack::object_kv)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
|
||||||
msgpack::object_kv* const pend = p + size;
|
msgpack::object_kv* const pend = p + size;
|
||||||
o.via.map.ptr = p;
|
o.via.map.ptr = p;
|
||||||
o.via.map.size = size;
|
o.via.map.size = size;
|
||||||
|
@@ -78,7 +78,7 @@ struct object_with_zone<std::unordered_set<Key, Hash, Compare, Alloc>> {
|
|||||||
o.via.array.size = 0;
|
o.via.array.size = 0;
|
||||||
} else {
|
} else {
|
||||||
uint32_t size = checked_get_container_size(v.size());
|
uint32_t size = checked_get_container_size(v.size());
|
||||||
msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size));
|
msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
msgpack::object* const pend = p + size;
|
msgpack::object* const pend = p + size;
|
||||||
o.via.array.ptr = p;
|
o.via.array.ptr = p;
|
||||||
o.via.array.size = size;
|
o.via.array.size = size;
|
||||||
@@ -147,7 +147,7 @@ struct object_with_zone<std::unordered_multiset<Key, Hash, Compare, Alloc>> {
|
|||||||
o.via.array.size = 0;
|
o.via.array.size = 0;
|
||||||
} else {
|
} else {
|
||||||
uint32_t size = checked_get_container_size(v.size());
|
uint32_t size = checked_get_container_size(v.size());
|
||||||
msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size));
|
msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
msgpack::object* const pend = p + size;
|
msgpack::object* const pend = p + size;
|
||||||
o.via.array.ptr = p;
|
o.via.array.ptr = p;
|
||||||
o.via.array.size = size;
|
o.via.array.size = size;
|
||||||
|
90
include/msgpack/v1/adaptor/cpp17/optional.hpp
Normal file
90
include/msgpack/v1/adaptor/cpp17/optional.hpp
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
//
|
||||||
|
// MessagePack for C++ static resolution routine
|
||||||
|
//
|
||||||
|
// Copyright (C) 2017 KONDO Takatoshi
|
||||||
|
//
|
||||||
|
// Distributed under the Boost Software License, Version 1.0.
|
||||||
|
// (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
//
|
||||||
|
#ifndef MSGPACK_V1_TYPE_OPTIONAL_HPP
|
||||||
|
#define MSGPACK_V1_TYPE_OPTIONAL_HPP
|
||||||
|
|
||||||
|
#if __cplusplus >= 201703
|
||||||
|
|
||||||
|
#include "msgpack/versioning.hpp"
|
||||||
|
#include "msgpack/adaptor/adaptor_base.hpp"
|
||||||
|
#include "msgpack/adaptor/check_container_size.hpp"
|
||||||
|
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
|
namespace msgpack {
|
||||||
|
|
||||||
|
/// @cond
|
||||||
|
MSGPACK_API_VERSION_NAMESPACE(v1) {
|
||||||
|
/// @endcond
|
||||||
|
|
||||||
|
namespace adaptor {
|
||||||
|
|
||||||
|
#if !defined (MSGPACK_USE_CPP03)
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
struct as<std::optional<T>, typename std::enable_if<msgpack::has_as<T>::value>::type> {
|
||||||
|
std::optional<T> operator()(msgpack::object const& o) const {
|
||||||
|
if(o.is_nil()) return std::nullopt;
|
||||||
|
return o.as<T>();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // !defined (MSGPACK_USE_CPP03)
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
struct convert<std::optional<T> > {
|
||||||
|
msgpack::object const& operator()(msgpack::object const& o, std::optional<T>& v) const {
|
||||||
|
if(o.is_nil()) v = std::nullopt;
|
||||||
|
else {
|
||||||
|
T t;
|
||||||
|
msgpack::adaptor::convert<T>()(o, t);
|
||||||
|
v = t;
|
||||||
|
}
|
||||||
|
return o;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
struct pack<std::optional<T> > {
|
||||||
|
template <typename Stream>
|
||||||
|
msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const std::optional<T>& v) const {
|
||||||
|
if (v) o.pack(*v);
|
||||||
|
else o.pack_nil();
|
||||||
|
return o;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
struct object<std::optional<T> > {
|
||||||
|
void operator()(msgpack::object& o, const std::optional<T>& v) const {
|
||||||
|
if (v) msgpack::adaptor::object<T>()(o, *v);
|
||||||
|
else o.type = msgpack::type::NIL;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
struct object_with_zone<std::optional<T> > {
|
||||||
|
void operator()(msgpack::object::with_zone& o, const std::optional<T>& v) const {
|
||||||
|
if (v) msgpack::adaptor::object_with_zone<T>()(o, *v);
|
||||||
|
else o.type = msgpack::type::NIL;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace adaptor
|
||||||
|
|
||||||
|
/// @cond
|
||||||
|
} // MSGPACK_API_VERSION_NAMESPACE(v1)
|
||||||
|
/// @endcond
|
||||||
|
|
||||||
|
} // namespace msgpack
|
||||||
|
|
||||||
|
#endif // __cplusplus >= 201703
|
||||||
|
|
||||||
|
#endif // MSGPACK_V1_TYPE_OPTIONAL_HPP
|
86
include/msgpack/v1/adaptor/cpp17/string_view.hpp
Normal file
86
include/msgpack/v1/adaptor/cpp17/string_view.hpp
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
//
|
||||||
|
// MessagePack for C++ static resolution routine
|
||||||
|
//
|
||||||
|
// Copyright (C) 2017 KONDO Takatoshi
|
||||||
|
//
|
||||||
|
// Distributed under the Boost Software License, Version 1.0.
|
||||||
|
// (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
//
|
||||||
|
#ifndef MSGPACK_V1_TYPE_STRING_VIEW_HPP
|
||||||
|
#define MSGPACK_V1_TYPE_STRING_VIEW_HPP
|
||||||
|
|
||||||
|
#if __cplusplus >= 201703
|
||||||
|
|
||||||
|
#include "msgpack/versioning.hpp"
|
||||||
|
#include "msgpack/adaptor/adaptor_base.hpp"
|
||||||
|
#include "msgpack/adaptor/check_container_size.hpp"
|
||||||
|
|
||||||
|
#include <string_view>
|
||||||
|
|
||||||
|
namespace msgpack {
|
||||||
|
|
||||||
|
/// @cond
|
||||||
|
MSGPACK_API_VERSION_NAMESPACE(v1) {
|
||||||
|
/// @endcond
|
||||||
|
|
||||||
|
namespace adaptor {
|
||||||
|
|
||||||
|
template <>
|
||||||
|
struct convert<std::string_view> {
|
||||||
|
msgpack::object const& operator()(msgpack::object const& o, std::string_view& v) const {
|
||||||
|
switch (o.type) {
|
||||||
|
case msgpack::type::BIN:
|
||||||
|
v = std::string_view(o.via.bin.ptr, o.via.bin.size);
|
||||||
|
break;
|
||||||
|
case msgpack::type::STR:
|
||||||
|
v = std::string_view(o.via.str.ptr, o.via.str.size);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw msgpack::type_error();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return o;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
template <>
|
||||||
|
struct pack<std::string_view> {
|
||||||
|
template <typename Stream>
|
||||||
|
msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const std::string_view& v) const {
|
||||||
|
uint32_t size = checked_get_container_size(v.size());
|
||||||
|
o.pack_str(size);
|
||||||
|
o.pack_str_body(v.data(), size);
|
||||||
|
return o;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
template <>
|
||||||
|
struct object<std::string_view> {
|
||||||
|
void operator()(msgpack::object& o, const std::string_view& v) const {
|
||||||
|
uint32_t size = checked_get_container_size(v.size());
|
||||||
|
o.type = msgpack::type::STR;
|
||||||
|
o.via.str.ptr = v.data();
|
||||||
|
o.via.str.size = size;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
template <>
|
||||||
|
struct object_with_zone<std::string_view> {
|
||||||
|
void operator()(msgpack::object::with_zone& o, const std::string_view& v) const {
|
||||||
|
static_cast<msgpack::object&>(o) << v;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
} // namespace adaptor
|
||||||
|
|
||||||
|
/// @cond
|
||||||
|
} // MSGPACK_API_VERSION_NAMESPACE(v1)
|
||||||
|
/// @endcond
|
||||||
|
|
||||||
|
} // namespace msgpack
|
||||||
|
|
||||||
|
#endif // __cplusplus >= 201703
|
||||||
|
|
||||||
|
#endif // MSGPACK_V1_TYPE_STRING_VIEW_HPP
|
@@ -83,7 +83,7 @@ struct object_with_zone<std::deque<T, Alloc> > {
|
|||||||
o.via.array.size = 0;
|
o.via.array.size = 0;
|
||||||
} else {
|
} else {
|
||||||
uint32_t size = checked_get_container_size(v.size());
|
uint32_t size = checked_get_container_size(v.size());
|
||||||
msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size));
|
msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
msgpack::object* const pend = p + size;
|
msgpack::object* const pend = p + size;
|
||||||
o.via.array.ptr = p;
|
o.via.array.ptr = p;
|
||||||
o.via.array.size = size;
|
o.via.array.size = size;
|
||||||
|
@@ -75,7 +75,7 @@ struct define_array<A0> {
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::ARRAY;
|
o->type = msgpack::type::ARRAY;
|
||||||
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*1));
|
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*1, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o->via.array.size = 1;
|
o->via.array.size = 1;
|
||||||
|
|
||||||
o->via.array.ptr[0] = msgpack::object(a0, z);
|
o->via.array.ptr[0] = msgpack::object(a0, z);
|
||||||
@@ -118,7 +118,7 @@ struct define_array<A0, A1> {
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::ARRAY;
|
o->type = msgpack::type::ARRAY;
|
||||||
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*2));
|
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*2, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o->via.array.size = 2;
|
o->via.array.size = 2;
|
||||||
|
|
||||||
o->via.array.ptr[0] = msgpack::object(a0, z);
|
o->via.array.ptr[0] = msgpack::object(a0, z);
|
||||||
@@ -167,7 +167,7 @@ struct define_array<A0, A1, A2> {
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::ARRAY;
|
o->type = msgpack::type::ARRAY;
|
||||||
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*3));
|
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*3, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o->via.array.size = 3;
|
o->via.array.size = 3;
|
||||||
|
|
||||||
o->via.array.ptr[0] = msgpack::object(a0, z);
|
o->via.array.ptr[0] = msgpack::object(a0, z);
|
||||||
@@ -222,7 +222,7 @@ struct define_array<A0, A1, A2, A3> {
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::ARRAY;
|
o->type = msgpack::type::ARRAY;
|
||||||
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*4));
|
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*4, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o->via.array.size = 4;
|
o->via.array.size = 4;
|
||||||
|
|
||||||
o->via.array.ptr[0] = msgpack::object(a0, z);
|
o->via.array.ptr[0] = msgpack::object(a0, z);
|
||||||
@@ -283,7 +283,7 @@ struct define_array<A0, A1, A2, A3, A4> {
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::ARRAY;
|
o->type = msgpack::type::ARRAY;
|
||||||
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*5));
|
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*5, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o->via.array.size = 5;
|
o->via.array.size = 5;
|
||||||
|
|
||||||
o->via.array.ptr[0] = msgpack::object(a0, z);
|
o->via.array.ptr[0] = msgpack::object(a0, z);
|
||||||
@@ -350,7 +350,7 @@ struct define_array<A0, A1, A2, A3, A4, A5> {
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::ARRAY;
|
o->type = msgpack::type::ARRAY;
|
||||||
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*6));
|
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*6, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o->via.array.size = 6;
|
o->via.array.size = 6;
|
||||||
|
|
||||||
o->via.array.ptr[0] = msgpack::object(a0, z);
|
o->via.array.ptr[0] = msgpack::object(a0, z);
|
||||||
@@ -423,7 +423,7 @@ struct define_array<A0, A1, A2, A3, A4, A5, A6> {
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::ARRAY;
|
o->type = msgpack::type::ARRAY;
|
||||||
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*7));
|
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*7, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o->via.array.size = 7;
|
o->via.array.size = 7;
|
||||||
|
|
||||||
o->via.array.ptr[0] = msgpack::object(a0, z);
|
o->via.array.ptr[0] = msgpack::object(a0, z);
|
||||||
@@ -502,7 +502,7 @@ struct define_array<A0, A1, A2, A3, A4, A5, A6, A7> {
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::ARRAY;
|
o->type = msgpack::type::ARRAY;
|
||||||
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*8));
|
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*8, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o->via.array.size = 8;
|
o->via.array.size = 8;
|
||||||
|
|
||||||
o->via.array.ptr[0] = msgpack::object(a0, z);
|
o->via.array.ptr[0] = msgpack::object(a0, z);
|
||||||
@@ -587,7 +587,7 @@ struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8> {
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::ARRAY;
|
o->type = msgpack::type::ARRAY;
|
||||||
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*9));
|
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*9, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o->via.array.size = 9;
|
o->via.array.size = 9;
|
||||||
|
|
||||||
o->via.array.ptr[0] = msgpack::object(a0, z);
|
o->via.array.ptr[0] = msgpack::object(a0, z);
|
||||||
@@ -678,7 +678,7 @@ struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9> {
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::ARRAY;
|
o->type = msgpack::type::ARRAY;
|
||||||
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*10));
|
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*10, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o->via.array.size = 10;
|
o->via.array.size = 10;
|
||||||
|
|
||||||
o->via.array.ptr[0] = msgpack::object(a0, z);
|
o->via.array.ptr[0] = msgpack::object(a0, z);
|
||||||
@@ -775,7 +775,7 @@ struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10> {
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::ARRAY;
|
o->type = msgpack::type::ARRAY;
|
||||||
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*11));
|
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*11, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o->via.array.size = 11;
|
o->via.array.size = 11;
|
||||||
|
|
||||||
o->via.array.ptr[0] = msgpack::object(a0, z);
|
o->via.array.ptr[0] = msgpack::object(a0, z);
|
||||||
@@ -878,7 +878,7 @@ struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11> {
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::ARRAY;
|
o->type = msgpack::type::ARRAY;
|
||||||
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*12));
|
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*12, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o->via.array.size = 12;
|
o->via.array.size = 12;
|
||||||
|
|
||||||
o->via.array.ptr[0] = msgpack::object(a0, z);
|
o->via.array.ptr[0] = msgpack::object(a0, z);
|
||||||
@@ -987,7 +987,7 @@ struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12> {
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::ARRAY;
|
o->type = msgpack::type::ARRAY;
|
||||||
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*13));
|
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*13, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o->via.array.size = 13;
|
o->via.array.size = 13;
|
||||||
|
|
||||||
o->via.array.ptr[0] = msgpack::object(a0, z);
|
o->via.array.ptr[0] = msgpack::object(a0, z);
|
||||||
@@ -1102,7 +1102,7 @@ struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::ARRAY;
|
o->type = msgpack::type::ARRAY;
|
||||||
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*14));
|
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*14, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o->via.array.size = 14;
|
o->via.array.size = 14;
|
||||||
|
|
||||||
o->via.array.ptr[0] = msgpack::object(a0, z);
|
o->via.array.ptr[0] = msgpack::object(a0, z);
|
||||||
@@ -1223,7 +1223,7 @@ struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13,
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::ARRAY;
|
o->type = msgpack::type::ARRAY;
|
||||||
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*15));
|
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*15, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o->via.array.size = 15;
|
o->via.array.size = 15;
|
||||||
|
|
||||||
o->via.array.ptr[0] = msgpack::object(a0, z);
|
o->via.array.ptr[0] = msgpack::object(a0, z);
|
||||||
@@ -1350,7 +1350,7 @@ struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13,
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::ARRAY;
|
o->type = msgpack::type::ARRAY;
|
||||||
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*16));
|
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*16, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o->via.array.size = 16;
|
o->via.array.size = 16;
|
||||||
|
|
||||||
o->via.array.ptr[0] = msgpack::object(a0, z);
|
o->via.array.ptr[0] = msgpack::object(a0, z);
|
||||||
@@ -1483,7 +1483,7 @@ struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13,
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::ARRAY;
|
o->type = msgpack::type::ARRAY;
|
||||||
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*17));
|
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*17, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o->via.array.size = 17;
|
o->via.array.size = 17;
|
||||||
|
|
||||||
o->via.array.ptr[0] = msgpack::object(a0, z);
|
o->via.array.ptr[0] = msgpack::object(a0, z);
|
||||||
@@ -1622,7 +1622,7 @@ struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13,
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::ARRAY;
|
o->type = msgpack::type::ARRAY;
|
||||||
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*18));
|
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*18, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o->via.array.size = 18;
|
o->via.array.size = 18;
|
||||||
|
|
||||||
o->via.array.ptr[0] = msgpack::object(a0, z);
|
o->via.array.ptr[0] = msgpack::object(a0, z);
|
||||||
@@ -1767,7 +1767,7 @@ struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13,
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::ARRAY;
|
o->type = msgpack::type::ARRAY;
|
||||||
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*19));
|
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*19, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o->via.array.size = 19;
|
o->via.array.size = 19;
|
||||||
|
|
||||||
o->via.array.ptr[0] = msgpack::object(a0, z);
|
o->via.array.ptr[0] = msgpack::object(a0, z);
|
||||||
@@ -1918,7 +1918,7 @@ struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13,
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::ARRAY;
|
o->type = msgpack::type::ARRAY;
|
||||||
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*20));
|
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*20, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o->via.array.size = 20;
|
o->via.array.size = 20;
|
||||||
|
|
||||||
o->via.array.ptr[0] = msgpack::object(a0, z);
|
o->via.array.ptr[0] = msgpack::object(a0, z);
|
||||||
@@ -2075,7 +2075,7 @@ struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13,
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::ARRAY;
|
o->type = msgpack::type::ARRAY;
|
||||||
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*21));
|
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*21, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o->via.array.size = 21;
|
o->via.array.size = 21;
|
||||||
|
|
||||||
o->via.array.ptr[0] = msgpack::object(a0, z);
|
o->via.array.ptr[0] = msgpack::object(a0, z);
|
||||||
@@ -2238,7 +2238,7 @@ struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13,
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::ARRAY;
|
o->type = msgpack::type::ARRAY;
|
||||||
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*22));
|
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*22, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o->via.array.size = 22;
|
o->via.array.size = 22;
|
||||||
|
|
||||||
o->via.array.ptr[0] = msgpack::object(a0, z);
|
o->via.array.ptr[0] = msgpack::object(a0, z);
|
||||||
@@ -2407,7 +2407,7 @@ struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13,
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::ARRAY;
|
o->type = msgpack::type::ARRAY;
|
||||||
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*23));
|
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*23, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o->via.array.size = 23;
|
o->via.array.size = 23;
|
||||||
|
|
||||||
o->via.array.ptr[0] = msgpack::object(a0, z);
|
o->via.array.ptr[0] = msgpack::object(a0, z);
|
||||||
@@ -2582,7 +2582,7 @@ struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13,
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::ARRAY;
|
o->type = msgpack::type::ARRAY;
|
||||||
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*24));
|
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*24, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o->via.array.size = 24;
|
o->via.array.size = 24;
|
||||||
|
|
||||||
o->via.array.ptr[0] = msgpack::object(a0, z);
|
o->via.array.ptr[0] = msgpack::object(a0, z);
|
||||||
@@ -2763,7 +2763,7 @@ struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13,
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::ARRAY;
|
o->type = msgpack::type::ARRAY;
|
||||||
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*25));
|
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*25, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o->via.array.size = 25;
|
o->via.array.size = 25;
|
||||||
|
|
||||||
o->via.array.ptr[0] = msgpack::object(a0, z);
|
o->via.array.ptr[0] = msgpack::object(a0, z);
|
||||||
@@ -2950,7 +2950,7 @@ struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13,
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::ARRAY;
|
o->type = msgpack::type::ARRAY;
|
||||||
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*26));
|
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*26, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o->via.array.size = 26;
|
o->via.array.size = 26;
|
||||||
|
|
||||||
o->via.array.ptr[0] = msgpack::object(a0, z);
|
o->via.array.ptr[0] = msgpack::object(a0, z);
|
||||||
@@ -3143,7 +3143,7 @@ struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13,
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::ARRAY;
|
o->type = msgpack::type::ARRAY;
|
||||||
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*27));
|
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*27, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o->via.array.size = 27;
|
o->via.array.size = 27;
|
||||||
|
|
||||||
o->via.array.ptr[0] = msgpack::object(a0, z);
|
o->via.array.ptr[0] = msgpack::object(a0, z);
|
||||||
@@ -3342,7 +3342,7 @@ struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13,
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::ARRAY;
|
o->type = msgpack::type::ARRAY;
|
||||||
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*28));
|
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*28, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o->via.array.size = 28;
|
o->via.array.size = 28;
|
||||||
|
|
||||||
o->via.array.ptr[0] = msgpack::object(a0, z);
|
o->via.array.ptr[0] = msgpack::object(a0, z);
|
||||||
@@ -3547,7 +3547,7 @@ struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13,
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::ARRAY;
|
o->type = msgpack::type::ARRAY;
|
||||||
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*29));
|
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*29, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o->via.array.size = 29;
|
o->via.array.size = 29;
|
||||||
|
|
||||||
o->via.array.ptr[0] = msgpack::object(a0, z);
|
o->via.array.ptr[0] = msgpack::object(a0, z);
|
||||||
@@ -3758,7 +3758,7 @@ struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13,
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::ARRAY;
|
o->type = msgpack::type::ARRAY;
|
||||||
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*30));
|
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*30, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o->via.array.size = 30;
|
o->via.array.size = 30;
|
||||||
|
|
||||||
o->via.array.ptr[0] = msgpack::object(a0, z);
|
o->via.array.ptr[0] = msgpack::object(a0, z);
|
||||||
@@ -3975,7 +3975,7 @@ struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13,
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::ARRAY;
|
o->type = msgpack::type::ARRAY;
|
||||||
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*31));
|
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*31, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o->via.array.size = 31;
|
o->via.array.size = 31;
|
||||||
|
|
||||||
o->via.array.ptr[0] = msgpack::object(a0, z);
|
o->via.array.ptr[0] = msgpack::object(a0, z);
|
||||||
@@ -4198,7 +4198,7 @@ struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13,
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::ARRAY;
|
o->type = msgpack::type::ARRAY;
|
||||||
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*32));
|
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*32, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o->via.array.size = 32;
|
o->via.array.size = 32;
|
||||||
|
|
||||||
o->via.array.ptr[0] = msgpack::object(a0, z);
|
o->via.array.ptr[0] = msgpack::object(a0, z);
|
||||||
|
@@ -83,7 +83,7 @@ struct define_map<A0, A1> {
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::MAP;
|
o->type = msgpack::type::MAP;
|
||||||
o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*1));
|
o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*1, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
|
||||||
o->via.map.size = 1;
|
o->via.map.size = 1;
|
||||||
|
|
||||||
o->via.map.ptr[0].key = msgpack::object(a0, z);
|
o->via.map.ptr[0].key = msgpack::object(a0, z);
|
||||||
@@ -142,7 +142,7 @@ struct define_map<A0, A1, A2, A3> {
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::MAP;
|
o->type = msgpack::type::MAP;
|
||||||
o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*2));
|
o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*2, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
|
||||||
o->via.map.size = 2;
|
o->via.map.size = 2;
|
||||||
|
|
||||||
o->via.map.ptr[0].key = msgpack::object(a0, z);
|
o->via.map.ptr[0].key = msgpack::object(a0, z);
|
||||||
@@ -215,7 +215,7 @@ struct define_map<A0, A1, A2, A3, A4, A5> {
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::MAP;
|
o->type = msgpack::type::MAP;
|
||||||
o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*3));
|
o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*3, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
|
||||||
o->via.map.size = 3;
|
o->via.map.size = 3;
|
||||||
|
|
||||||
o->via.map.ptr[0].key = msgpack::object(a0, z);
|
o->via.map.ptr[0].key = msgpack::object(a0, z);
|
||||||
@@ -302,7 +302,7 @@ struct define_map<A0, A1, A2, A3, A4, A5, A6, A7> {
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::MAP;
|
o->type = msgpack::type::MAP;
|
||||||
o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*4));
|
o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*4, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
|
||||||
o->via.map.size = 4;
|
o->via.map.size = 4;
|
||||||
|
|
||||||
o->via.map.ptr[0].key = msgpack::object(a0, z);
|
o->via.map.ptr[0].key = msgpack::object(a0, z);
|
||||||
@@ -403,7 +403,7 @@ struct define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9> {
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::MAP;
|
o->type = msgpack::type::MAP;
|
||||||
o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*5));
|
o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*5, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
|
||||||
o->via.map.size = 5;
|
o->via.map.size = 5;
|
||||||
|
|
||||||
o->via.map.ptr[0].key = msgpack::object(a0, z);
|
o->via.map.ptr[0].key = msgpack::object(a0, z);
|
||||||
@@ -518,7 +518,7 @@ struct define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11> {
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::MAP;
|
o->type = msgpack::type::MAP;
|
||||||
o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*6));
|
o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*6, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
|
||||||
o->via.map.size = 6;
|
o->via.map.size = 6;
|
||||||
|
|
||||||
o->via.map.ptr[0].key = msgpack::object(a0, z);
|
o->via.map.ptr[0].key = msgpack::object(a0, z);
|
||||||
@@ -647,7 +647,7 @@ struct define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13> {
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::MAP;
|
o->type = msgpack::type::MAP;
|
||||||
o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*7));
|
o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*7, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
|
||||||
o->via.map.size = 7;
|
o->via.map.size = 7;
|
||||||
|
|
||||||
o->via.map.ptr[0].key = msgpack::object(a0, z);
|
o->via.map.ptr[0].key = msgpack::object(a0, z);
|
||||||
@@ -790,7 +790,7 @@ struct define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A1
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::MAP;
|
o->type = msgpack::type::MAP;
|
||||||
o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*8));
|
o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*8, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
|
||||||
o->via.map.size = 8;
|
o->via.map.size = 8;
|
||||||
|
|
||||||
o->via.map.ptr[0].key = msgpack::object(a0, z);
|
o->via.map.ptr[0].key = msgpack::object(a0, z);
|
||||||
@@ -947,7 +947,7 @@ struct define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A1
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::MAP;
|
o->type = msgpack::type::MAP;
|
||||||
o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*9));
|
o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*9, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
|
||||||
o->via.map.size = 9;
|
o->via.map.size = 9;
|
||||||
|
|
||||||
o->via.map.ptr[0].key = msgpack::object(a0, z);
|
o->via.map.ptr[0].key = msgpack::object(a0, z);
|
||||||
@@ -1118,7 +1118,7 @@ struct define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A1
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::MAP;
|
o->type = msgpack::type::MAP;
|
||||||
o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*10));
|
o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*10, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
|
||||||
o->via.map.size = 10;
|
o->via.map.size = 10;
|
||||||
|
|
||||||
o->via.map.ptr[0].key = msgpack::object(a0, z);
|
o->via.map.ptr[0].key = msgpack::object(a0, z);
|
||||||
@@ -1303,7 +1303,7 @@ struct define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A1
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::MAP;
|
o->type = msgpack::type::MAP;
|
||||||
o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*11));
|
o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*11, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
|
||||||
o->via.map.size = 11;
|
o->via.map.size = 11;
|
||||||
|
|
||||||
o->via.map.ptr[0].key = msgpack::object(a0, z);
|
o->via.map.ptr[0].key = msgpack::object(a0, z);
|
||||||
@@ -1502,7 +1502,7 @@ struct define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A1
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::MAP;
|
o->type = msgpack::type::MAP;
|
||||||
o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*12));
|
o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*12, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
|
||||||
o->via.map.size = 12;
|
o->via.map.size = 12;
|
||||||
|
|
||||||
o->via.map.ptr[0].key = msgpack::object(a0, z);
|
o->via.map.ptr[0].key = msgpack::object(a0, z);
|
||||||
@@ -1715,7 +1715,7 @@ struct define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A1
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::MAP;
|
o->type = msgpack::type::MAP;
|
||||||
o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*13));
|
o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*13, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
|
||||||
o->via.map.size = 13;
|
o->via.map.size = 13;
|
||||||
|
|
||||||
o->via.map.ptr[0].key = msgpack::object(a0, z);
|
o->via.map.ptr[0].key = msgpack::object(a0, z);
|
||||||
@@ -1942,7 +1942,7 @@ struct define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A1
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::MAP;
|
o->type = msgpack::type::MAP;
|
||||||
o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*14));
|
o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*14, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
|
||||||
o->via.map.size = 14;
|
o->via.map.size = 14;
|
||||||
|
|
||||||
o->via.map.ptr[0].key = msgpack::object(a0, z);
|
o->via.map.ptr[0].key = msgpack::object(a0, z);
|
||||||
@@ -2183,7 +2183,7 @@ struct define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A1
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::MAP;
|
o->type = msgpack::type::MAP;
|
||||||
o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*15));
|
o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*15, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
|
||||||
o->via.map.size = 15;
|
o->via.map.size = 15;
|
||||||
|
|
||||||
o->via.map.ptr[0].key = msgpack::object(a0, z);
|
o->via.map.ptr[0].key = msgpack::object(a0, z);
|
||||||
@@ -2438,7 +2438,7 @@ struct define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A1
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::MAP;
|
o->type = msgpack::type::MAP;
|
||||||
o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*16));
|
o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*16, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
|
||||||
o->via.map.size = 16;
|
o->via.map.size = 16;
|
||||||
|
|
||||||
o->via.map.ptr[0].key = msgpack::object(a0, z);
|
o->via.map.ptr[0].key = msgpack::object(a0, z);
|
||||||
|
@@ -13506,7 +13506,7 @@ struct object_with_zone<type::tuple<A0> > {
|
|||||||
msgpack::object::with_zone& o,
|
msgpack::object::with_zone& o,
|
||||||
const type::tuple<A0>& v) const {
|
const type::tuple<A0>& v) const {
|
||||||
o.type = msgpack::type::ARRAY;
|
o.type = msgpack::type::ARRAY;
|
||||||
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*1));
|
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*1, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o.via.array.size = 1;
|
o.via.array.size = 1;
|
||||||
|
|
||||||
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
||||||
@@ -13519,7 +13519,7 @@ struct object_with_zone<type::tuple<A0, A1> > {
|
|||||||
msgpack::object::with_zone& o,
|
msgpack::object::with_zone& o,
|
||||||
const type::tuple<A0, A1>& v) const {
|
const type::tuple<A0, A1>& v) const {
|
||||||
o.type = msgpack::type::ARRAY;
|
o.type = msgpack::type::ARRAY;
|
||||||
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*2));
|
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*2, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o.via.array.size = 2;
|
o.via.array.size = 2;
|
||||||
|
|
||||||
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
||||||
@@ -13533,7 +13533,7 @@ struct object_with_zone<type::tuple<A0, A1, A2> > {
|
|||||||
msgpack::object::with_zone& o,
|
msgpack::object::with_zone& o,
|
||||||
const type::tuple<A0, A1, A2>& v) const {
|
const type::tuple<A0, A1, A2>& v) const {
|
||||||
o.type = msgpack::type::ARRAY;
|
o.type = msgpack::type::ARRAY;
|
||||||
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*3));
|
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*3, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o.via.array.size = 3;
|
o.via.array.size = 3;
|
||||||
|
|
||||||
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
||||||
@@ -13548,7 +13548,7 @@ struct object_with_zone<type::tuple<A0, A1, A2, A3> > {
|
|||||||
msgpack::object::with_zone& o,
|
msgpack::object::with_zone& o,
|
||||||
const type::tuple<A0, A1, A2, A3>& v) const {
|
const type::tuple<A0, A1, A2, A3>& v) const {
|
||||||
o.type = msgpack::type::ARRAY;
|
o.type = msgpack::type::ARRAY;
|
||||||
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*4));
|
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*4, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o.via.array.size = 4;
|
o.via.array.size = 4;
|
||||||
|
|
||||||
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
||||||
@@ -13564,7 +13564,7 @@ struct object_with_zone<type::tuple<A0, A1, A2, A3, A4> > {
|
|||||||
msgpack::object::with_zone& o,
|
msgpack::object::with_zone& o,
|
||||||
const type::tuple<A0, A1, A2, A3, A4>& v) const {
|
const type::tuple<A0, A1, A2, A3, A4>& v) const {
|
||||||
o.type = msgpack::type::ARRAY;
|
o.type = msgpack::type::ARRAY;
|
||||||
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*5));
|
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*5, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o.via.array.size = 5;
|
o.via.array.size = 5;
|
||||||
|
|
||||||
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
||||||
@@ -13581,7 +13581,7 @@ struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5> > {
|
|||||||
msgpack::object::with_zone& o,
|
msgpack::object::with_zone& o,
|
||||||
const type::tuple<A0, A1, A2, A3, A4, A5>& v) const {
|
const type::tuple<A0, A1, A2, A3, A4, A5>& v) const {
|
||||||
o.type = msgpack::type::ARRAY;
|
o.type = msgpack::type::ARRAY;
|
||||||
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*6));
|
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*6, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o.via.array.size = 6;
|
o.via.array.size = 6;
|
||||||
|
|
||||||
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
||||||
@@ -13599,7 +13599,7 @@ struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6> > {
|
|||||||
msgpack::object::with_zone& o,
|
msgpack::object::with_zone& o,
|
||||||
const type::tuple<A0, A1, A2, A3, A4, A5, A6>& v) const {
|
const type::tuple<A0, A1, A2, A3, A4, A5, A6>& v) const {
|
||||||
o.type = msgpack::type::ARRAY;
|
o.type = msgpack::type::ARRAY;
|
||||||
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*7));
|
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*7, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o.via.array.size = 7;
|
o.via.array.size = 7;
|
||||||
|
|
||||||
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
||||||
@@ -13618,7 +13618,7 @@ struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7> > {
|
|||||||
msgpack::object::with_zone& o,
|
msgpack::object::with_zone& o,
|
||||||
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7>& v) const {
|
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7>& v) const {
|
||||||
o.type = msgpack::type::ARRAY;
|
o.type = msgpack::type::ARRAY;
|
||||||
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*8));
|
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*8, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o.via.array.size = 8;
|
o.via.array.size = 8;
|
||||||
|
|
||||||
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
||||||
@@ -13638,7 +13638,7 @@ struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8> > {
|
|||||||
msgpack::object::with_zone& o,
|
msgpack::object::with_zone& o,
|
||||||
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>& v) const {
|
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>& v) const {
|
||||||
o.type = msgpack::type::ARRAY;
|
o.type = msgpack::type::ARRAY;
|
||||||
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*9));
|
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*9, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o.via.array.size = 9;
|
o.via.array.size = 9;
|
||||||
|
|
||||||
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
||||||
@@ -13659,7 +13659,7 @@ struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9> > {
|
|||||||
msgpack::object::with_zone& o,
|
msgpack::object::with_zone& o,
|
||||||
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>& v) const {
|
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>& v) const {
|
||||||
o.type = msgpack::type::ARRAY;
|
o.type = msgpack::type::ARRAY;
|
||||||
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*10));
|
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*10, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o.via.array.size = 10;
|
o.via.array.size = 10;
|
||||||
|
|
||||||
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
||||||
@@ -13681,7 +13681,7 @@ struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>
|
|||||||
msgpack::object::with_zone& o,
|
msgpack::object::with_zone& o,
|
||||||
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>& v) const {
|
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>& v) const {
|
||||||
o.type = msgpack::type::ARRAY;
|
o.type = msgpack::type::ARRAY;
|
||||||
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*11));
|
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*11, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o.via.array.size = 11;
|
o.via.array.size = 11;
|
||||||
|
|
||||||
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
||||||
@@ -13704,7 +13704,7 @@ struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10,
|
|||||||
msgpack::object::with_zone& o,
|
msgpack::object::with_zone& o,
|
||||||
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>& v) const {
|
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>& v) const {
|
||||||
o.type = msgpack::type::ARRAY;
|
o.type = msgpack::type::ARRAY;
|
||||||
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*12));
|
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*12, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o.via.array.size = 12;
|
o.via.array.size = 12;
|
||||||
|
|
||||||
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
||||||
@@ -13728,7 +13728,7 @@ struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10,
|
|||||||
msgpack::object::with_zone& o,
|
msgpack::object::with_zone& o,
|
||||||
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>& v) const {
|
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>& v) const {
|
||||||
o.type = msgpack::type::ARRAY;
|
o.type = msgpack::type::ARRAY;
|
||||||
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*13));
|
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*13, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o.via.array.size = 13;
|
o.via.array.size = 13;
|
||||||
|
|
||||||
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
||||||
@@ -13753,7 +13753,7 @@ struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10,
|
|||||||
msgpack::object::with_zone& o,
|
msgpack::object::with_zone& o,
|
||||||
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>& v) const {
|
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>& v) const {
|
||||||
o.type = msgpack::type::ARRAY;
|
o.type = msgpack::type::ARRAY;
|
||||||
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*14));
|
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*14, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o.via.array.size = 14;
|
o.via.array.size = 14;
|
||||||
|
|
||||||
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
||||||
@@ -13779,7 +13779,7 @@ struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10,
|
|||||||
msgpack::object::with_zone& o,
|
msgpack::object::with_zone& o,
|
||||||
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>& v) const {
|
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>& v) const {
|
||||||
o.type = msgpack::type::ARRAY;
|
o.type = msgpack::type::ARRAY;
|
||||||
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*15));
|
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*15, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o.via.array.size = 15;
|
o.via.array.size = 15;
|
||||||
|
|
||||||
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
||||||
@@ -13806,7 +13806,7 @@ struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10,
|
|||||||
msgpack::object::with_zone& o,
|
msgpack::object::with_zone& o,
|
||||||
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>& v) const {
|
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>& v) const {
|
||||||
o.type = msgpack::type::ARRAY;
|
o.type = msgpack::type::ARRAY;
|
||||||
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*16));
|
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*16, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o.via.array.size = 16;
|
o.via.array.size = 16;
|
||||||
|
|
||||||
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
||||||
@@ -13834,7 +13834,7 @@ struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10,
|
|||||||
msgpack::object::with_zone& o,
|
msgpack::object::with_zone& o,
|
||||||
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>& v) const {
|
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>& v) const {
|
||||||
o.type = msgpack::type::ARRAY;
|
o.type = msgpack::type::ARRAY;
|
||||||
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*17));
|
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*17, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o.via.array.size = 17;
|
o.via.array.size = 17;
|
||||||
|
|
||||||
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
||||||
@@ -13863,7 +13863,7 @@ struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10,
|
|||||||
msgpack::object::with_zone& o,
|
msgpack::object::with_zone& o,
|
||||||
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>& v) const {
|
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>& v) const {
|
||||||
o.type = msgpack::type::ARRAY;
|
o.type = msgpack::type::ARRAY;
|
||||||
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*18));
|
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*18, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o.via.array.size = 18;
|
o.via.array.size = 18;
|
||||||
|
|
||||||
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
||||||
@@ -13893,7 +13893,7 @@ struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10,
|
|||||||
msgpack::object::with_zone& o,
|
msgpack::object::with_zone& o,
|
||||||
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>& v) const {
|
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>& v) const {
|
||||||
o.type = msgpack::type::ARRAY;
|
o.type = msgpack::type::ARRAY;
|
||||||
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*19));
|
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*19, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o.via.array.size = 19;
|
o.via.array.size = 19;
|
||||||
|
|
||||||
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
||||||
@@ -13924,7 +13924,7 @@ struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10,
|
|||||||
msgpack::object::with_zone& o,
|
msgpack::object::with_zone& o,
|
||||||
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& v) const {
|
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& v) const {
|
||||||
o.type = msgpack::type::ARRAY;
|
o.type = msgpack::type::ARRAY;
|
||||||
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*20));
|
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*20, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o.via.array.size = 20;
|
o.via.array.size = 20;
|
||||||
|
|
||||||
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
||||||
@@ -13956,7 +13956,7 @@ struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10,
|
|||||||
msgpack::object::with_zone& o,
|
msgpack::object::with_zone& o,
|
||||||
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& v) const {
|
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& v) const {
|
||||||
o.type = msgpack::type::ARRAY;
|
o.type = msgpack::type::ARRAY;
|
||||||
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*21));
|
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*21, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o.via.array.size = 21;
|
o.via.array.size = 21;
|
||||||
|
|
||||||
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
||||||
@@ -13989,7 +13989,7 @@ struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10,
|
|||||||
msgpack::object::with_zone& o,
|
msgpack::object::with_zone& o,
|
||||||
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& v) const {
|
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& v) const {
|
||||||
o.type = msgpack::type::ARRAY;
|
o.type = msgpack::type::ARRAY;
|
||||||
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*22));
|
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*22, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o.via.array.size = 22;
|
o.via.array.size = 22;
|
||||||
|
|
||||||
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
||||||
@@ -14023,7 +14023,7 @@ struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10,
|
|||||||
msgpack::object::with_zone& o,
|
msgpack::object::with_zone& o,
|
||||||
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& v) const {
|
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& v) const {
|
||||||
o.type = msgpack::type::ARRAY;
|
o.type = msgpack::type::ARRAY;
|
||||||
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*23));
|
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*23, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o.via.array.size = 23;
|
o.via.array.size = 23;
|
||||||
|
|
||||||
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
||||||
@@ -14058,7 +14058,7 @@ struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10,
|
|||||||
msgpack::object::with_zone& o,
|
msgpack::object::with_zone& o,
|
||||||
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& v) const {
|
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& v) const {
|
||||||
o.type = msgpack::type::ARRAY;
|
o.type = msgpack::type::ARRAY;
|
||||||
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*24));
|
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*24, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o.via.array.size = 24;
|
o.via.array.size = 24;
|
||||||
|
|
||||||
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
||||||
@@ -14094,7 +14094,7 @@ struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10,
|
|||||||
msgpack::object::with_zone& o,
|
msgpack::object::with_zone& o,
|
||||||
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& v) const {
|
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& v) const {
|
||||||
o.type = msgpack::type::ARRAY;
|
o.type = msgpack::type::ARRAY;
|
||||||
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*25));
|
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*25, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o.via.array.size = 25;
|
o.via.array.size = 25;
|
||||||
|
|
||||||
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
||||||
@@ -14131,7 +14131,7 @@ struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10,
|
|||||||
msgpack::object::with_zone& o,
|
msgpack::object::with_zone& o,
|
||||||
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& v) const {
|
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& v) const {
|
||||||
o.type = msgpack::type::ARRAY;
|
o.type = msgpack::type::ARRAY;
|
||||||
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*26));
|
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*26, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o.via.array.size = 26;
|
o.via.array.size = 26;
|
||||||
|
|
||||||
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
||||||
@@ -14169,7 +14169,7 @@ struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10,
|
|||||||
msgpack::object::with_zone& o,
|
msgpack::object::with_zone& o,
|
||||||
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& v) const {
|
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& v) const {
|
||||||
o.type = msgpack::type::ARRAY;
|
o.type = msgpack::type::ARRAY;
|
||||||
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*27));
|
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*27, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o.via.array.size = 27;
|
o.via.array.size = 27;
|
||||||
|
|
||||||
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
||||||
@@ -14208,7 +14208,7 @@ struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10,
|
|||||||
msgpack::object::with_zone& o,
|
msgpack::object::with_zone& o,
|
||||||
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& v) const {
|
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& v) const {
|
||||||
o.type = msgpack::type::ARRAY;
|
o.type = msgpack::type::ARRAY;
|
||||||
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*28));
|
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*28, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o.via.array.size = 28;
|
o.via.array.size = 28;
|
||||||
|
|
||||||
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
||||||
@@ -14248,7 +14248,7 @@ struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10,
|
|||||||
msgpack::object::with_zone& o,
|
msgpack::object::with_zone& o,
|
||||||
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& v) const {
|
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& v) const {
|
||||||
o.type = msgpack::type::ARRAY;
|
o.type = msgpack::type::ARRAY;
|
||||||
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*29));
|
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*29, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o.via.array.size = 29;
|
o.via.array.size = 29;
|
||||||
|
|
||||||
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
||||||
@@ -14289,7 +14289,7 @@ struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10,
|
|||||||
msgpack::object::with_zone& o,
|
msgpack::object::with_zone& o,
|
||||||
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& v) const {
|
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& v) const {
|
||||||
o.type = msgpack::type::ARRAY;
|
o.type = msgpack::type::ARRAY;
|
||||||
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*30));
|
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*30, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o.via.array.size = 30;
|
o.via.array.size = 30;
|
||||||
|
|
||||||
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
||||||
@@ -14331,7 +14331,7 @@ struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10,
|
|||||||
msgpack::object::with_zone& o,
|
msgpack::object::with_zone& o,
|
||||||
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& v) const {
|
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& v) const {
|
||||||
o.type = msgpack::type::ARRAY;
|
o.type = msgpack::type::ARRAY;
|
||||||
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*31));
|
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*31, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o.via.array.size = 31;
|
o.via.array.size = 31;
|
||||||
|
|
||||||
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
||||||
@@ -14374,7 +14374,7 @@ struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10,
|
|||||||
msgpack::object::with_zone& o,
|
msgpack::object::with_zone& o,
|
||||||
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>& v) const {
|
const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>& v) const {
|
||||||
o.type = msgpack::type::ARRAY;
|
o.type = msgpack::type::ARRAY;
|
||||||
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*32));
|
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*32, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o.via.array.size = 32;
|
o.via.array.size = 32;
|
||||||
|
|
||||||
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
|
||||||
|
@@ -77,7 +77,7 @@ struct define_array {
|
|||||||
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
void msgpack_object(msgpack::object* o, msgpack::zone& z) const
|
||||||
{
|
{
|
||||||
o->type = msgpack::type::ARRAY;
|
o->type = msgpack::type::ARRAY;
|
||||||
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*sizeof...(Args)));
|
o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*sizeof...(Args), MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o->via.array.size = sizeof...(Args);
|
o->via.array.size = sizeof...(Args);
|
||||||
|
|
||||||
define_array_imp<std::tuple<Args&...>, sizeof...(Args)>::object(o, z, a);
|
define_array_imp<std::tuple<Args&...>, sizeof...(Args)>::object(o, z, a);
|
||||||
|
@@ -83,7 +83,7 @@ struct define_map {
|
|||||||
{
|
{
|
||||||
static_assert(sizeof...(Args) % 2 == 0, "");
|
static_assert(sizeof...(Args) % 2 == 0, "");
|
||||||
o->type = msgpack::type::MAP;
|
o->type = msgpack::type::MAP;
|
||||||
o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*sizeof...(Args)/2));
|
o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*sizeof...(Args)/2, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
|
||||||
o->via.map.size = sizeof...(Args) / 2;
|
o->via.map.size = sizeof...(Args) / 2;
|
||||||
|
|
||||||
define_map_imp<std::tuple<Args&...>, sizeof...(Args)>::object(o, z, a);
|
define_map_imp<std::tuple<Args&...>, sizeof...(Args)>::object(o, z, a);
|
||||||
|
@@ -203,7 +203,7 @@ template <typename... Args>
|
|||||||
msgpack::object::with_zone& o,
|
msgpack::object::with_zone& o,
|
||||||
msgpack::type::tuple<Args...> const& v) const {
|
msgpack::type::tuple<Args...> const& v) const {
|
||||||
o.type = msgpack::type::ARRAY;
|
o.type = msgpack::type::ARRAY;
|
||||||
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*sizeof...(Args)));
|
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*sizeof...(Args), MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o.via.array.size = sizeof...(Args);
|
o.via.array.size = sizeof...(Args);
|
||||||
MsgpackTupleToObjectWithZone<decltype(v), sizeof...(Args)>::convert(o, v);
|
MsgpackTupleToObjectWithZone<decltype(v), sizeof...(Args)>::convert(o, v);
|
||||||
}
|
}
|
||||||
|
@@ -104,7 +104,7 @@ struct object_with_zone<msgpack::type::ext> {
|
|||||||
// size limit has already been checked at ext's constructor
|
// size limit has already been checked at ext's constructor
|
||||||
uint32_t size = v.size();
|
uint32_t size = v.size();
|
||||||
o.type = msgpack::type::EXT;
|
o.type = msgpack::type::EXT;
|
||||||
char* ptr = static_cast<char*>(o.zone.allocate_align(size + 1));
|
char* ptr = static_cast<char*>(o.zone.allocate_align(size + 1, MSGPACK_ZONE_ALIGNOF(char)));
|
||||||
o.via.ext.ptr = ptr;
|
o.via.ext.ptr = ptr;
|
||||||
o.via.ext.size = size;
|
o.via.ext.size = size;
|
||||||
ptr[0] = static_cast<char>(v.type());
|
ptr[0] = static_cast<char>(v.type());
|
||||||
|
@@ -81,7 +81,7 @@ struct object_with_zone<std::list<T, Alloc> > {
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
uint32_t size = checked_get_container_size(v.size());
|
uint32_t size = checked_get_container_size(v.size());
|
||||||
msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size));
|
msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
msgpack::object* const pend = p + size;
|
msgpack::object* const pend = p + size;
|
||||||
o.via.array.ptr = p;
|
o.via.array.ptr = p;
|
||||||
o.via.array.size = size;
|
o.via.array.size = size;
|
||||||
|
@@ -109,7 +109,7 @@ struct object_with_zone<type::assoc_vector<K, V, Compare, Alloc> > {
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
uint32_t size = checked_get_container_size(v.size());
|
uint32_t size = checked_get_container_size(v.size());
|
||||||
msgpack::object_kv* p = static_cast<msgpack::object_kv*>(o.zone.allocate_align(sizeof(msgpack::object_kv)*size));
|
msgpack::object_kv* p = static_cast<msgpack::object_kv*>(o.zone.allocate_align(sizeof(msgpack::object_kv)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
|
||||||
msgpack::object_kv* const pend = p + size;
|
msgpack::object_kv* const pend = p + size;
|
||||||
o.via.map.ptr = p;
|
o.via.map.ptr = p;
|
||||||
o.via.map.size = size;
|
o.via.map.size = size;
|
||||||
@@ -195,7 +195,7 @@ struct object_with_zone<std::map<K, V, Compare, Alloc> > {
|
|||||||
else {
|
else {
|
||||||
uint32_t size = checked_get_container_size(v.size());
|
uint32_t size = checked_get_container_size(v.size());
|
||||||
|
|
||||||
msgpack::object_kv* p = static_cast<msgpack::object_kv*>(o.zone.allocate_align(sizeof(msgpack::object_kv)*size));
|
msgpack::object_kv* p = static_cast<msgpack::object_kv*>(o.zone.allocate_align(sizeof(msgpack::object_kv)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
|
||||||
msgpack::object_kv* const pend = p + size;
|
msgpack::object_kv* const pend = p + size;
|
||||||
o.via.map.ptr = p;
|
o.via.map.ptr = p;
|
||||||
o.via.map.size = size;
|
o.via.map.size = size;
|
||||||
@@ -288,7 +288,7 @@ struct object_with_zone<std::multimap<K, V, Compare, Alloc> > {
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
uint32_t size = checked_get_container_size(v.size());
|
uint32_t size = checked_get_container_size(v.size());
|
||||||
msgpack::object_kv* p = static_cast<msgpack::object_kv*>(o.zone.allocate_align(sizeof(msgpack::object_kv)*size));
|
msgpack::object_kv* p = static_cast<msgpack::object_kv*>(o.zone.allocate_align(sizeof(msgpack::object_kv)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
|
||||||
msgpack::object_kv* const pend = p + size;
|
msgpack::object_kv* const pend = p + size;
|
||||||
o.via.map.ptr = p;
|
o.via.map.ptr = p;
|
||||||
o.via.map.size = size;
|
o.via.map.size = size;
|
||||||
|
@@ -64,7 +64,7 @@ template <typename T1, typename T2>
|
|||||||
struct object_with_zone<std::pair<T1, T2> > {
|
struct object_with_zone<std::pair<T1, T2> > {
|
||||||
void operator()(msgpack::object::with_zone& o, const std::pair<T1, T2>& v) const {
|
void operator()(msgpack::object::with_zone& o, const std::pair<T1, T2>& v) const {
|
||||||
o.type = msgpack::type::ARRAY;
|
o.type = msgpack::type::ARRAY;
|
||||||
msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*2));
|
msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*2, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o.via.array.ptr = p;
|
o.via.array.ptr = p;
|
||||||
o.via.array.size = 2;
|
o.via.array.size = 2;
|
||||||
p[0] = msgpack::object(v.first, o.zone);
|
p[0] = msgpack::object(v.first, o.zone);
|
||||||
|
@@ -87,7 +87,7 @@ struct object_with_zone<std::set<T, Compare, Alloc> > {
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
uint32_t size = checked_get_container_size(v.size());
|
uint32_t size = checked_get_container_size(v.size());
|
||||||
msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size));
|
msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
msgpack::object* const pend = p + size;
|
msgpack::object* const pend = p + size;
|
||||||
o.via.array.ptr = p;
|
o.via.array.ptr = p;
|
||||||
o.via.array.size = size;
|
o.via.array.size = size;
|
||||||
@@ -163,7 +163,7 @@ struct object_with_zone<std::multiset<T, Compare, Alloc> > {
|
|||||||
o.via.array.size = 0;
|
o.via.array.size = 0;
|
||||||
} else {
|
} else {
|
||||||
uint32_t size = checked_get_container_size(v.size());
|
uint32_t size = checked_get_container_size(v.size());
|
||||||
msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size));
|
msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
msgpack::object* const pend = p + size;
|
msgpack::object* const pend = p + size;
|
||||||
o.via.array.ptr = p;
|
o.via.array.ptr = p;
|
||||||
o.via.array.size = size;
|
o.via.array.size = size;
|
||||||
|
@@ -69,7 +69,7 @@ struct object_with_zone<std::string> {
|
|||||||
void operator()(msgpack::object::with_zone& o, const std::string& v) const {
|
void operator()(msgpack::object::with_zone& o, const std::string& v) const {
|
||||||
uint32_t size = checked_get_container_size(v.size());
|
uint32_t size = checked_get_container_size(v.size());
|
||||||
o.type = msgpack::type::STR;
|
o.type = msgpack::type::STR;
|
||||||
char* ptr = static_cast<char*>(o.zone.allocate_align(size));
|
char* ptr = static_cast<char*>(o.zone.allocate_align(size, MSGPACK_ZONE_ALIGNOF(char)));
|
||||||
o.via.str.ptr = ptr;
|
o.via.str.ptr = ptr;
|
||||||
o.via.str.size = size;
|
o.via.str.size = size;
|
||||||
std::memcpy(ptr, v.data(), v.size());
|
std::memcpy(ptr, v.data(), v.size());
|
||||||
|
@@ -84,7 +84,7 @@ struct object_with_zone<MSGPACK_STD_TR1::unordered_map<K, V, Hash, Pred, Alloc>
|
|||||||
o.via.map.size = 0;
|
o.via.map.size = 0;
|
||||||
} else {
|
} else {
|
||||||
uint32_t size = checked_get_container_size(v.size());
|
uint32_t size = checked_get_container_size(v.size());
|
||||||
msgpack::object_kv* p = static_cast<msgpack::object_kv*>(o.zone.allocate_align(sizeof(msgpack::object_kv)*size));
|
msgpack::object_kv* p = static_cast<msgpack::object_kv*>(o.zone.allocate_align(sizeof(msgpack::object_kv)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
|
||||||
msgpack::object_kv* const pend = p + size;
|
msgpack::object_kv* const pend = p + size;
|
||||||
o.via.map.ptr = p;
|
o.via.map.ptr = p;
|
||||||
o.via.map.size = size;
|
o.via.map.size = size;
|
||||||
@@ -141,7 +141,7 @@ struct object_with_zone<MSGPACK_STD_TR1::unordered_multimap<K, V, Hash, Pred, Al
|
|||||||
o.via.map.size = 0;
|
o.via.map.size = 0;
|
||||||
} else {
|
} else {
|
||||||
uint32_t size = checked_get_container_size(v.size());
|
uint32_t size = checked_get_container_size(v.size());
|
||||||
msgpack::object_kv* p = static_cast<msgpack::object_kv*>(o.zone.allocate_align(sizeof(msgpack::object_kv)*size));
|
msgpack::object_kv* p = static_cast<msgpack::object_kv*>(o.zone.allocate_align(sizeof(msgpack::object_kv)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
|
||||||
msgpack::object_kv* const pend = p + size;
|
msgpack::object_kv* const pend = p + size;
|
||||||
o.via.map.ptr = p;
|
o.via.map.ptr = p;
|
||||||
o.via.map.size = size;
|
o.via.map.size = size;
|
||||||
|
@@ -82,7 +82,7 @@ struct object_with_zone<MSGPACK_STD_TR1::unordered_set<T, Hash, Compare, Alloc>
|
|||||||
o.via.array.size = 0;
|
o.via.array.size = 0;
|
||||||
} else {
|
} else {
|
||||||
uint32_t size = checked_get_container_size(v.size());
|
uint32_t size = checked_get_container_size(v.size());
|
||||||
msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size));
|
msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
msgpack::object* const pend = p + size;
|
msgpack::object* const pend = p + size;
|
||||||
o.via.array.ptr = p;
|
o.via.array.ptr = p;
|
||||||
o.via.array.size = size;
|
o.via.array.size = size;
|
||||||
@@ -136,7 +136,7 @@ struct object_with_zone<MSGPACK_STD_TR1::unordered_multiset<T, Hash, Compare, Al
|
|||||||
o.via.array.size = 0;
|
o.via.array.size = 0;
|
||||||
} else {
|
} else {
|
||||||
uint32_t size = checked_get_container_size(v.size());
|
uint32_t size = checked_get_container_size(v.size());
|
||||||
msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size));
|
msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
msgpack::object* const pend = p + size;
|
msgpack::object* const pend = p + size;
|
||||||
o.via.array.ptr = p;
|
o.via.array.ptr = p;
|
||||||
o.via.array.size = size;
|
o.via.array.size = size;
|
||||||
|
@@ -89,7 +89,7 @@ struct object_with_zone<std::vector<T, Alloc> > {
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
uint32_t size = checked_get_container_size(v.size());
|
uint32_t size = checked_get_container_size(v.size());
|
||||||
msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size));
|
msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
msgpack::object* const pend = p + size;
|
msgpack::object* const pend = p + size;
|
||||||
o.via.array.ptr = p;
|
o.via.array.ptr = p;
|
||||||
o.via.array.size = size;
|
o.via.array.size = size;
|
||||||
|
@@ -65,7 +65,7 @@ struct object_with_zone<std::vector<bool, Alloc> > {
|
|||||||
o.via.array.size = 0;
|
o.via.array.size = 0;
|
||||||
} else {
|
} else {
|
||||||
uint32_t size = checked_get_container_size(v.size());
|
uint32_t size = checked_get_container_size(v.size());
|
||||||
msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size));
|
msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
msgpack::object* const pend = p + size;
|
msgpack::object* const pend = p + size;
|
||||||
o.via.array.ptr = p;
|
o.via.array.ptr = p;
|
||||||
o.via.array.size = size;
|
o.via.array.size = size;
|
||||||
|
@@ -96,7 +96,7 @@ struct object_with_zone<std::vector<char, Alloc> > {
|
|||||||
o.type = msgpack::type::BIN;
|
o.type = msgpack::type::BIN;
|
||||||
o.via.bin.size = size;
|
o.via.bin.size = size;
|
||||||
if (size != 0) {
|
if (size != 0) {
|
||||||
char* ptr = static_cast<char*>(o.zone.allocate_align(size));
|
char* ptr = static_cast<char*>(o.zone.allocate_align(size, MSGPACK_ZONE_ALIGNOF(char)));
|
||||||
o.via.bin.ptr = ptr;
|
o.via.bin.ptr = ptr;
|
||||||
std::memcpy(ptr, &v.front(), size);
|
std::memcpy(ptr, &v.front(), size);
|
||||||
}
|
}
|
||||||
|
@@ -96,7 +96,7 @@ struct object_with_zone<std::vector<unsigned char, Alloc> > {
|
|||||||
o.type = msgpack::type::BIN;
|
o.type = msgpack::type::BIN;
|
||||||
o.via.bin.size = size;
|
o.via.bin.size = size;
|
||||||
if (size != 0) {
|
if (size != 0) {
|
||||||
char* ptr = static_cast<char*>(o.zone.allocate_align(size));
|
char* ptr = static_cast<char*>(o.zone.allocate_align(size, MSGPACK_ZONE_ALIGNOF(char)));
|
||||||
o.via.bin.ptr = ptr;
|
o.via.bin.ptr = ptr;
|
||||||
std::memcpy(ptr, &v.front(), size);
|
std::memcpy(ptr, &v.front(), size);
|
||||||
}
|
}
|
||||||
|
@@ -223,7 +223,9 @@ private:
|
|||||||
template <typename T>
|
template <typename T>
|
||||||
static void object_delete(void* obj);
|
static void object_delete(void* obj);
|
||||||
|
|
||||||
void* allocate_expand(size_t size);
|
static char* get_aligned(char* ptr, size_t align);
|
||||||
|
|
||||||
|
char* allocate_expand(size_t size);
|
||||||
private:
|
private:
|
||||||
zone(const zone&);
|
zone(const zone&);
|
||||||
zone& operator=(const zone&);
|
zone& operator=(const zone&);
|
||||||
@@ -233,37 +235,42 @@ inline zone::zone(size_t chunk_size) /* throw() */ :m_chunk_size(chunk_size), m_
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void* zone::allocate_align(size_t size, size_t align)
|
inline char* zone::get_aligned(char* ptr, size_t align)
|
||||||
{
|
{
|
||||||
char* aligned =
|
return
|
||||||
reinterpret_cast<char*>(
|
reinterpret_cast<char*>(
|
||||||
reinterpret_cast<size_t>(
|
reinterpret_cast<size_t>(
|
||||||
(m_chunk_list.m_ptr + (align - 1))) / align * align);
|
(ptr + (align - 1))) / align * align);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void* zone::allocate_align(size_t size, size_t align)
|
||||||
|
{
|
||||||
|
char* aligned = get_aligned(m_chunk_list.m_ptr, align);
|
||||||
size_t adjusted_size = size + (aligned - m_chunk_list.m_ptr);
|
size_t adjusted_size = size + (aligned - m_chunk_list.m_ptr);
|
||||||
if(m_chunk_list.m_free >= adjusted_size) {
|
if (m_chunk_list.m_free < adjusted_size) {
|
||||||
m_chunk_list.m_free -= adjusted_size;
|
size_t enough_size = size + align - 1;
|
||||||
m_chunk_list.m_ptr += adjusted_size;
|
char* ptr = allocate_expand(enough_size);
|
||||||
return aligned;
|
aligned = get_aligned(ptr, align);
|
||||||
|
adjusted_size = size + (aligned - m_chunk_list.m_ptr);
|
||||||
}
|
}
|
||||||
return reinterpret_cast<char*>(
|
m_chunk_list.m_free -= adjusted_size;
|
||||||
reinterpret_cast<size_t>(
|
m_chunk_list.m_ptr += adjusted_size;
|
||||||
allocate_expand(size + (align - 1))) / align * align);
|
return aligned;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void* zone::allocate_no_align(size_t size)
|
inline void* zone::allocate_no_align(size_t size)
|
||||||
{
|
{
|
||||||
if(m_chunk_list.m_free < size) {
|
|
||||||
return allocate_expand(size);
|
|
||||||
}
|
|
||||||
|
|
||||||
char* ptr = m_chunk_list.m_ptr;
|
char* ptr = m_chunk_list.m_ptr;
|
||||||
|
if(m_chunk_list.m_free < size) {
|
||||||
|
ptr = allocate_expand(size);
|
||||||
|
}
|
||||||
m_chunk_list.m_free -= size;
|
m_chunk_list.m_free -= size;
|
||||||
m_chunk_list.m_ptr += size;
|
m_chunk_list.m_ptr += size;
|
||||||
|
|
||||||
return ptr;
|
return ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void* zone::allocate_expand(size_t size)
|
inline char* zone::allocate_expand(size_t size)
|
||||||
{
|
{
|
||||||
chunk_list* const cl = &m_chunk_list;
|
chunk_list* const cl = &m_chunk_list;
|
||||||
|
|
||||||
@@ -285,8 +292,8 @@ inline void* zone::allocate_expand(size_t size)
|
|||||||
|
|
||||||
c->m_next = cl->m_head;
|
c->m_next = cl->m_head;
|
||||||
cl->m_head = c;
|
cl->m_head = c;
|
||||||
cl->m_free = sz - size;
|
cl->m_free = sz;
|
||||||
cl->m_ptr = ptr + size;
|
cl->m_ptr = ptr;
|
||||||
|
|
||||||
return ptr;
|
return ptr;
|
||||||
}
|
}
|
||||||
@@ -345,7 +352,7 @@ inline std::size_t aligned_size(
|
|||||||
template <typename T>
|
template <typename T>
|
||||||
T* zone::allocate()
|
T* zone::allocate()
|
||||||
{
|
{
|
||||||
void* x = allocate_align(sizeof(T));
|
void* x = allocate_align(sizeof(T), MSGPACK_ZONE_ALIGNOF(T));
|
||||||
try {
|
try {
|
||||||
m_finalizer_array.push(&zone::object_destruct<T>, x);
|
m_finalizer_array.push(&zone::object_destruct<T>, x);
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
@@ -364,7 +371,7 @@ T* zone::allocate()
|
|||||||
template <typename T, typename A1>
|
template <typename T, typename A1>
|
||||||
T* zone::allocate(A1 a1)
|
T* zone::allocate(A1 a1)
|
||||||
{
|
{
|
||||||
void* x = allocate_align(sizeof(T));
|
void* x = allocate_align(sizeof(T), MSGPACK_ZONE_ALIGNOF(T));
|
||||||
try {
|
try {
|
||||||
m_finalizer_array.push(&zone::object_destruct<T>, x);
|
m_finalizer_array.push(&zone::object_destruct<T>, x);
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
@@ -383,7 +390,7 @@ T* zone::allocate(A1 a1)
|
|||||||
template <typename T, typename A1, typename A2>
|
template <typename T, typename A1, typename A2>
|
||||||
T* zone::allocate(A1 a1, A2 a2)
|
T* zone::allocate(A1 a1, A2 a2)
|
||||||
{
|
{
|
||||||
void* x = allocate_align(sizeof(T));
|
void* x = allocate_align(sizeof(T), MSGPACK_ZONE_ALIGNOF(T));
|
||||||
try {
|
try {
|
||||||
m_finalizer_array.push(&zone::object_destruct<T>, x);
|
m_finalizer_array.push(&zone::object_destruct<T>, x);
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
@@ -402,7 +409,7 @@ T* zone::allocate(A1 a1, A2 a2)
|
|||||||
template <typename T, typename A1, typename A2, typename A3>
|
template <typename T, typename A1, typename A2, typename A3>
|
||||||
T* zone::allocate(A1 a1, A2 a2, A3 a3)
|
T* zone::allocate(A1 a1, A2 a2, A3 a3)
|
||||||
{
|
{
|
||||||
void* x = allocate_align(sizeof(T));
|
void* x = allocate_align(sizeof(T), MSGPACK_ZONE_ALIGNOF(T));
|
||||||
try {
|
try {
|
||||||
m_finalizer_array.push(&zone::object_destruct<T>, x);
|
m_finalizer_array.push(&zone::object_destruct<T>, x);
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
@@ -421,7 +428,7 @@ T* zone::allocate(A1 a1, A2 a2, A3 a3)
|
|||||||
template <typename T, typename A1, typename A2, typename A3, typename A4>
|
template <typename T, typename A1, typename A2, typename A3, typename A4>
|
||||||
T* zone::allocate(A1 a1, A2 a2, A3 a3, A4 a4)
|
T* zone::allocate(A1 a1, A2 a2, A3 a3, A4 a4)
|
||||||
{
|
{
|
||||||
void* x = allocate_align(sizeof(T));
|
void* x = allocate_align(sizeof(T), MSGPACK_ZONE_ALIGNOF(T));
|
||||||
try {
|
try {
|
||||||
m_finalizer_array.push(&zone::object_destruct<T>, x);
|
m_finalizer_array.push(&zone::object_destruct<T>, x);
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
@@ -440,7 +447,7 @@ T* zone::allocate(A1 a1, A2 a2, A3 a3, A4 a4)
|
|||||||
template <typename T, typename A1, typename A2, typename A3, typename A4, typename A5>
|
template <typename T, typename A1, typename A2, typename A3, typename A4, typename A5>
|
||||||
T* zone::allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
|
T* zone::allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
|
||||||
{
|
{
|
||||||
void* x = allocate_align(sizeof(T));
|
void* x = allocate_align(sizeof(T), MSGPACK_ZONE_ALIGNOF(T));
|
||||||
try {
|
try {
|
||||||
m_finalizer_array.push(&zone::object_destruct<T>, x);
|
m_finalizer_array.push(&zone::object_destruct<T>, x);
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
@@ -459,7 +466,7 @@ T* zone::allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
|
|||||||
template <typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
|
template <typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
|
||||||
T* zone::allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
|
T* zone::allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
|
||||||
{
|
{
|
||||||
void* x = allocate_align(sizeof(T));
|
void* x = allocate_align(sizeof(T), MSGPACK_ZONE_ALIGNOF(T));
|
||||||
try {
|
try {
|
||||||
m_finalizer_array.push(&zone::object_destruct<T>, x);
|
m_finalizer_array.push(&zone::object_destruct<T>, x);
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
@@ -478,7 +485,7 @@ T* zone::allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
|
|||||||
template <typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
|
template <typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
|
||||||
T* zone::allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
|
T* zone::allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
|
||||||
{
|
{
|
||||||
void* x = allocate_align(sizeof(T));
|
void* x = allocate_align(sizeof(T), MSGPACK_ZONE_ALIGNOF(T));
|
||||||
try {
|
try {
|
||||||
m_finalizer_array.push(&zone::object_destruct<T>, x);
|
m_finalizer_array.push(&zone::object_destruct<T>, x);
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
@@ -497,7 +504,7 @@ T* zone::allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
|
|||||||
template <typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
|
template <typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
|
||||||
T* zone::allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
|
T* zone::allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
|
||||||
{
|
{
|
||||||
void* x = allocate_align(sizeof(T));
|
void* x = allocate_align(sizeof(T), MSGPACK_ZONE_ALIGNOF(T));
|
||||||
try {
|
try {
|
||||||
m_finalizer_array.push(&zone::object_destruct<T>, x);
|
m_finalizer_array.push(&zone::object_destruct<T>, x);
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
@@ -516,7 +523,7 @@ T* zone::allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
|
|||||||
template <typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
|
template <typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
|
||||||
T* zone::allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
|
T* zone::allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
|
||||||
{
|
{
|
||||||
void* x = allocate_align(sizeof(T));
|
void* x = allocate_align(sizeof(T), MSGPACK_ZONE_ALIGNOF(T));
|
||||||
try {
|
try {
|
||||||
m_finalizer_array.push(&zone::object_destruct<T>, x);
|
m_finalizer_array.push(&zone::object_destruct<T>, x);
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
@@ -535,7 +542,7 @@ T* zone::allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
|
|||||||
template <typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
|
template <typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
|
||||||
T* zone::allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10)
|
T* zone::allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10)
|
||||||
{
|
{
|
||||||
void* x = allocate_align(sizeof(T));
|
void* x = allocate_align(sizeof(T), MSGPACK_ZONE_ALIGNOF(T));
|
||||||
try {
|
try {
|
||||||
m_finalizer_array.push(&zone::object_destruct<T>, x);
|
m_finalizer_array.push(&zone::object_destruct<T>, x);
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
@@ -554,7 +561,7 @@ T* zone::allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9,
|
|||||||
template <typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
|
template <typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
|
||||||
T* zone::allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11)
|
T* zone::allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11)
|
||||||
{
|
{
|
||||||
void* x = allocate_align(sizeof(T));
|
void* x = allocate_align(sizeof(T), MSGPACK_ZONE_ALIGNOF(T));
|
||||||
try {
|
try {
|
||||||
m_finalizer_array.push(&zone::object_destruct<T>, x);
|
m_finalizer_array.push(&zone::object_destruct<T>, x);
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
@@ -573,7 +580,7 @@ T* zone::allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9,
|
|||||||
template <typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
|
template <typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
|
||||||
T* zone::allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12)
|
T* zone::allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12)
|
||||||
{
|
{
|
||||||
void* x = allocate_align(sizeof(T));
|
void* x = allocate_align(sizeof(T), MSGPACK_ZONE_ALIGNOF(T));
|
||||||
try {
|
try {
|
||||||
m_finalizer_array.push(&zone::object_destruct<T>, x);
|
m_finalizer_array.push(&zone::object_destruct<T>, x);
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
@@ -592,7 +599,7 @@ T* zone::allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9,
|
|||||||
template <typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
|
template <typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
|
||||||
T* zone::allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13)
|
T* zone::allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13)
|
||||||
{
|
{
|
||||||
void* x = allocate_align(sizeof(T));
|
void* x = allocate_align(sizeof(T), MSGPACK_ZONE_ALIGNOF(T));
|
||||||
try {
|
try {
|
||||||
m_finalizer_array.push(&zone::object_destruct<T>, x);
|
m_finalizer_array.push(&zone::object_destruct<T>, x);
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
@@ -611,7 +618,7 @@ T* zone::allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9,
|
|||||||
template <typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
|
template <typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
|
||||||
T* zone::allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14)
|
T* zone::allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14)
|
||||||
{
|
{
|
||||||
void* x = allocate_align(sizeof(T));
|
void* x = allocate_align(sizeof(T), MSGPACK_ZONE_ALIGNOF(T));
|
||||||
try {
|
try {
|
||||||
m_finalizer_array.push(&zone::object_destruct<T>, x);
|
m_finalizer_array.push(&zone::object_destruct<T>, x);
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
@@ -630,7 +637,7 @@ T* zone::allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9,
|
|||||||
template <typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
|
template <typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
|
||||||
T* zone::allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, A15 a15)
|
T* zone::allocate(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, A15 a15)
|
||||||
{
|
{
|
||||||
void* x = allocate_align(sizeof(T));
|
void* x = allocate_align(sizeof(T), MSGPACK_ZONE_ALIGNOF(T));
|
||||||
try {
|
try {
|
||||||
m_finalizer_array.push(&zone::object_destruct<T>, x);
|
m_finalizer_array.push(&zone::object_destruct<T>, x);
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
|
@@ -24,6 +24,14 @@
|
|||||||
#define MSGPACK_ZONE_ALIGN sizeof(void*)
|
#define MSGPACK_ZONE_ALIGN sizeof(void*)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(_MSC_VER)
|
||||||
|
#define MSGPACK_ZONE_ALIGNOF(type) __alignof(type)
|
||||||
|
#else
|
||||||
|
#define MSGPACK_ZONE_ALIGNOF(type) __alignof__(type)
|
||||||
|
#endif
|
||||||
|
// For a compiler that doesn't support __alignof__:
|
||||||
|
// #define MSGPACK_ZONE_ALIGNOF(type) MSGPACK_ZONE_ALIGN
|
||||||
|
|
||||||
|
|
||||||
namespace msgpack {
|
namespace msgpack {
|
||||||
|
|
||||||
|
@@ -184,7 +184,6 @@ public:
|
|||||||
|
|
||||||
void swap(zone& o);
|
void swap(zone& o);
|
||||||
|
|
||||||
|
|
||||||
static void* operator new(std::size_t size)
|
static void* operator new(std::size_t size)
|
||||||
{
|
{
|
||||||
void* p = ::malloc(size);
|
void* p = ::malloc(size);
|
||||||
@@ -220,44 +219,51 @@ private:
|
|||||||
template <typename T>
|
template <typename T>
|
||||||
static void object_delete(void* obj);
|
static void object_delete(void* obj);
|
||||||
|
|
||||||
void* allocate_expand(size_t size);
|
static char* get_aligned(char* ptr, size_t align);
|
||||||
|
|
||||||
|
char* allocate_expand(size_t size);
|
||||||
};
|
};
|
||||||
|
|
||||||
inline zone::zone(size_t chunk_size) noexcept:m_chunk_size(chunk_size), m_chunk_list(m_chunk_size)
|
inline zone::zone(size_t chunk_size) noexcept:m_chunk_size(chunk_size), m_chunk_list(m_chunk_size)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void* zone::allocate_align(size_t size, size_t align)
|
inline char* zone::get_aligned(char* ptr, size_t align)
|
||||||
{
|
{
|
||||||
char* aligned =
|
return
|
||||||
reinterpret_cast<char*>(
|
reinterpret_cast<char*>(
|
||||||
reinterpret_cast<size_t>(
|
reinterpret_cast<size_t>(
|
||||||
(m_chunk_list.m_ptr + (align - 1))) / align * align);
|
(ptr + (align - 1))) / align * align);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void* zone::allocate_align(size_t size, size_t align)
|
||||||
|
{
|
||||||
|
char* aligned = get_aligned(m_chunk_list.m_ptr, align);
|
||||||
size_t adjusted_size = size + (aligned - m_chunk_list.m_ptr);
|
size_t adjusted_size = size + (aligned - m_chunk_list.m_ptr);
|
||||||
if(m_chunk_list.m_free >= adjusted_size) {
|
if (m_chunk_list.m_free < adjusted_size) {
|
||||||
m_chunk_list.m_free -= adjusted_size;
|
size_t enough_size = size + align - 1;
|
||||||
m_chunk_list.m_ptr += adjusted_size;
|
char* ptr = allocate_expand(enough_size);
|
||||||
return aligned;
|
aligned = get_aligned(ptr, align);
|
||||||
|
adjusted_size = size + (aligned - m_chunk_list.m_ptr);
|
||||||
}
|
}
|
||||||
return reinterpret_cast<char*>(
|
m_chunk_list.m_free -= adjusted_size;
|
||||||
reinterpret_cast<size_t>(
|
m_chunk_list.m_ptr += adjusted_size;
|
||||||
allocate_expand(size + (align - 1))) / align * align);
|
return aligned;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void* zone::allocate_no_align(size_t size)
|
inline void* zone::allocate_no_align(size_t size)
|
||||||
{
|
{
|
||||||
if(m_chunk_list.m_free < size) {
|
|
||||||
return allocate_expand(size);
|
|
||||||
}
|
|
||||||
|
|
||||||
char* ptr = m_chunk_list.m_ptr;
|
char* ptr = m_chunk_list.m_ptr;
|
||||||
|
if(m_chunk_list.m_free < size) {
|
||||||
|
ptr = allocate_expand(size);
|
||||||
|
}
|
||||||
m_chunk_list.m_free -= size;
|
m_chunk_list.m_free -= size;
|
||||||
m_chunk_list.m_ptr += size;
|
m_chunk_list.m_ptr += size;
|
||||||
|
|
||||||
return ptr;
|
return ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void* zone::allocate_expand(size_t size)
|
inline char* zone::allocate_expand(size_t size)
|
||||||
{
|
{
|
||||||
chunk_list* const cl = &m_chunk_list;
|
chunk_list* const cl = &m_chunk_list;
|
||||||
|
|
||||||
@@ -279,8 +285,8 @@ inline void* zone::allocate_expand(size_t size)
|
|||||||
|
|
||||||
c->m_next = cl->m_head;
|
c->m_next = cl->m_head;
|
||||||
cl->m_head = c;
|
cl->m_head = c;
|
||||||
cl->m_free = sz - size;
|
cl->m_free = sz;
|
||||||
cl->m_ptr = ptr + size;
|
cl->m_ptr = ptr;
|
||||||
|
|
||||||
return ptr;
|
return ptr;
|
||||||
}
|
}
|
||||||
@@ -329,7 +335,7 @@ inline void zone::undo_allocate(size_t size)
|
|||||||
template <typename T, typename... Args>
|
template <typename T, typename... Args>
|
||||||
T* zone::allocate(Args... args)
|
T* zone::allocate(Args... args)
|
||||||
{
|
{
|
||||||
void* x = allocate_align(sizeof(T));
|
void* x = allocate_align(sizeof(T), MSGPACK_ZONE_ALIGNOF(T));
|
||||||
try {
|
try {
|
||||||
m_finalizer_array.push(&zone::object_destruct<T>, x);
|
m_finalizer_array.push(&zone::object_destruct<T>, x);
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
|
@@ -26,6 +26,14 @@
|
|||||||
#define MSGPACK_ZONE_ALIGN sizeof(void*)
|
#define MSGPACK_ZONE_ALIGN sizeof(void*)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(_MSC_VER)
|
||||||
|
#define MSGPACK_ZONE_ALIGNOF(type) __alignof(type)
|
||||||
|
#else
|
||||||
|
#define MSGPACK_ZONE_ALIGNOF(type) __alignof__(type)
|
||||||
|
#endif
|
||||||
|
// For a compiler that doesn't support __alignof__:
|
||||||
|
// #define MSGPACK_ZONE_ALIGNOF(type) MSGPACK_ZONE_ALIGN
|
||||||
|
|
||||||
namespace msgpack {
|
namespace msgpack {
|
||||||
|
|
||||||
/// @cond
|
/// @cond
|
||||||
|
@@ -140,13 +140,17 @@ inline std::size_t aligned_zone_size(msgpack::object const& obj) {
|
|||||||
std::size_t s = 0;
|
std::size_t s = 0;
|
||||||
switch (obj.type) {
|
switch (obj.type) {
|
||||||
case msgpack::type::ARRAY:
|
case msgpack::type::ARRAY:
|
||||||
s += sizeof(msgpack::object) * obj.via.array.size;
|
s += msgpack::aligned_size(
|
||||||
|
sizeof(msgpack::object) * obj.via.array.size,
|
||||||
|
MSGPACK_ZONE_ALIGNOF(msgpack::object));
|
||||||
for (uint32_t i = 0; i < obj.via.array.size; ++i) {
|
for (uint32_t i = 0; i < obj.via.array.size; ++i) {
|
||||||
s += msgpack::aligned_zone_size(obj.via.array.ptr[i]);
|
s += msgpack::aligned_zone_size(obj.via.array.ptr[i]);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case msgpack::type::MAP:
|
case msgpack::type::MAP:
|
||||||
s += sizeof(msgpack::object_kv) * obj.via.map.size;
|
s += msgpack::aligned_size(
|
||||||
|
sizeof(msgpack::object_kv) * obj.via.map.size,
|
||||||
|
MSGPACK_ZONE_ALIGNOF(msgpack::object_kv));
|
||||||
for (uint32_t i = 0; i < obj.via.map.size; ++i) {
|
for (uint32_t i = 0; i < obj.via.map.size; ++i) {
|
||||||
s += msgpack::aligned_zone_size(obj.via.map.ptr[i].key);
|
s += msgpack::aligned_zone_size(obj.via.map.ptr[i].key);
|
||||||
s += msgpack::aligned_zone_size(obj.via.map.ptr[i].val);
|
s += msgpack::aligned_zone_size(obj.via.map.ptr[i].val);
|
||||||
@@ -154,13 +158,14 @@ inline std::size_t aligned_zone_size(msgpack::object const& obj) {
|
|||||||
break;
|
break;
|
||||||
case msgpack::type::EXT:
|
case msgpack::type::EXT:
|
||||||
s += msgpack::aligned_size(
|
s += msgpack::aligned_size(
|
||||||
detail::add_ext_type_size<sizeof(std::size_t)>(obj.via.ext.size));
|
detail::add_ext_type_size<sizeof(std::size_t)>(obj.via.ext.size),
|
||||||
|
MSGPACK_ZONE_ALIGNOF(char));
|
||||||
break;
|
break;
|
||||||
case msgpack::type::STR:
|
case msgpack::type::STR:
|
||||||
s += msgpack::aligned_size(obj.via.str.size);
|
s += msgpack::aligned_size(obj.via.str.size, MSGPACK_ZONE_ALIGNOF(char));
|
||||||
break;
|
break;
|
||||||
case msgpack::type::BIN:
|
case msgpack::type::BIN:
|
||||||
s += msgpack::aligned_size(obj.via.bin.size);
|
s += msgpack::aligned_size(obj.via.bin.size, MSGPACK_ZONE_ALIGNOF(char));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@@ -320,7 +325,7 @@ struct object_with_zone<msgpack::object> {
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
case msgpack::type::STR: {
|
case msgpack::type::STR: {
|
||||||
char* ptr = static_cast<char*>(o.zone.allocate_align(v.via.str.size));
|
char* ptr = static_cast<char*>(o.zone.allocate_align(v.via.str.size, MSGPACK_ZONE_ALIGNOF(char)));
|
||||||
o.via.str.ptr = ptr;
|
o.via.str.ptr = ptr;
|
||||||
o.via.str.size = v.via.str.size;
|
o.via.str.size = v.via.str.size;
|
||||||
std::memcpy(ptr, v.via.str.ptr, v.via.str.size);
|
std::memcpy(ptr, v.via.str.ptr, v.via.str.size);
|
||||||
@@ -328,7 +333,7 @@ struct object_with_zone<msgpack::object> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
case msgpack::type::BIN: {
|
case msgpack::type::BIN: {
|
||||||
char* ptr = static_cast<char*>(o.zone.allocate_align(v.via.bin.size));
|
char* ptr = static_cast<char*>(o.zone.allocate_align(v.via.bin.size, MSGPACK_ZONE_ALIGNOF(char)));
|
||||||
o.via.bin.ptr = ptr;
|
o.via.bin.ptr = ptr;
|
||||||
o.via.bin.size = v.via.bin.size;
|
o.via.bin.size = v.via.bin.size;
|
||||||
std::memcpy(ptr, v.via.bin.ptr, v.via.bin.size);
|
std::memcpy(ptr, v.via.bin.ptr, v.via.bin.size);
|
||||||
@@ -336,7 +341,7 @@ struct object_with_zone<msgpack::object> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
case msgpack::type::EXT: {
|
case msgpack::type::EXT: {
|
||||||
char* ptr = static_cast<char*>(o.zone.allocate_align(v.via.ext.size + 1));
|
char* ptr = static_cast<char*>(o.zone.allocate_align(v.via.ext.size + 1, MSGPACK_ZONE_ALIGNOF(char)));
|
||||||
o.via.ext.ptr = ptr;
|
o.via.ext.ptr = ptr;
|
||||||
o.via.ext.size = v.via.ext.size;
|
o.via.ext.size = v.via.ext.size;
|
||||||
std::memcpy(ptr, v.via.ext.ptr, v.via.ext.size + 1);
|
std::memcpy(ptr, v.via.ext.ptr, v.via.ext.size + 1);
|
||||||
@@ -344,7 +349,7 @@ struct object_with_zone<msgpack::object> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
case msgpack::type::ARRAY:
|
case msgpack::type::ARRAY:
|
||||||
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object) * v.via.array.size));
|
o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object) * v.via.array.size, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
o.via.array.size = v.via.array.size;
|
o.via.array.size = v.via.array.size;
|
||||||
for (msgpack::object
|
for (msgpack::object
|
||||||
* po(o.via.array.ptr),
|
* po(o.via.array.ptr),
|
||||||
@@ -357,7 +362,7 @@ struct object_with_zone<msgpack::object> {
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
case msgpack::type::MAP:
|
case msgpack::type::MAP:
|
||||||
o.via.map.ptr = (msgpack::object_kv*)o.zone.allocate_align(sizeof(msgpack::object_kv) * v.via.map.size);
|
o.via.map.ptr = (msgpack::object_kv*)o.zone.allocate_align(sizeof(msgpack::object_kv) * v.via.map.size, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv));
|
||||||
o.via.map.size = v.via.map.size;
|
o.via.map.size = v.via.map.size;
|
||||||
for(msgpack::object_kv
|
for(msgpack::object_kv
|
||||||
* po(o.via.map.ptr),
|
* po(o.via.map.ptr),
|
||||||
|
@@ -117,7 +117,7 @@ struct unpack_array {
|
|||||||
if (size / sizeof(msgpack::object) != n) {
|
if (size / sizeof(msgpack::object) != n) {
|
||||||
throw msgpack::array_size_overflow("array size overflow");
|
throw msgpack::array_size_overflow("array size overflow");
|
||||||
}
|
}
|
||||||
o.via.array.ptr = static_cast<msgpack::object*>(u.zone().allocate_align(size));
|
o.via.array.ptr = static_cast<msgpack::object*>(u.zone().allocate_align(size, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -139,7 +139,7 @@ struct unpack_map {
|
|||||||
if (size / sizeof(msgpack::object_kv) != n) {
|
if (size / sizeof(msgpack::object_kv) != n) {
|
||||||
throw msgpack::map_size_overflow("map size overflow");
|
throw msgpack::map_size_overflow("map size overflow");
|
||||||
}
|
}
|
||||||
o.via.map.ptr = static_cast<msgpack::object_kv*>(u.zone().allocate_align(size));
|
o.via.map.ptr = static_cast<msgpack::object_kv*>(u.zone().allocate_align(size, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -164,7 +164,7 @@ inline void unpack_str(unpack_user& u, const char* p, uint32_t l, msgpack::objec
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (l > u.limit().str()) throw msgpack::str_size_overflow("str size overflow");
|
if (l > u.limit().str()) throw msgpack::str_size_overflow("str size overflow");
|
||||||
char* tmp = static_cast<char*>(u.zone().allocate_align(l));
|
char* tmp = static_cast<char*>(u.zone().allocate_align(l, MSGPACK_ZONE_ALIGNOF(char)));
|
||||||
std::memcpy(tmp, p, l);
|
std::memcpy(tmp, p, l);
|
||||||
o.via.str.ptr = tmp;
|
o.via.str.ptr = tmp;
|
||||||
}
|
}
|
||||||
@@ -180,7 +180,7 @@ inline void unpack_bin(unpack_user& u, const char* p, uint32_t l, msgpack::objec
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (l > u.limit().bin()) throw msgpack::bin_size_overflow("bin size overflow");
|
if (l > u.limit().bin()) throw msgpack::bin_size_overflow("bin size overflow");
|
||||||
char* tmp = static_cast<char*>(u.zone().allocate_align(l));
|
char* tmp = static_cast<char*>(u.zone().allocate_align(l, MSGPACK_ZONE_ALIGNOF(char)));
|
||||||
std::memcpy(tmp, p, l);
|
std::memcpy(tmp, p, l);
|
||||||
o.via.bin.ptr = tmp;
|
o.via.bin.ptr = tmp;
|
||||||
}
|
}
|
||||||
@@ -196,7 +196,7 @@ inline void unpack_ext(unpack_user& u, const char* p, std::size_t l, msgpack::ob
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (l > u.limit().ext()) throw msgpack::ext_size_overflow("ext size overflow");
|
if (l > u.limit().ext()) throw msgpack::ext_size_overflow("ext size overflow");
|
||||||
char* tmp = static_cast<char*>(u.zone().allocate_align(l));
|
char* tmp = static_cast<char*>(u.zone().allocate_align(l, MSGPACK_ZONE_ALIGNOF(char)));
|
||||||
std::memcpy(tmp, p, l);
|
std::memcpy(tmp, p, l);
|
||||||
o.via.ext.ptr = tmp;
|
o.via.ext.ptr = tmp;
|
||||||
}
|
}
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
//
|
//
|
||||||
// MessagePack for C++ zero-copy buffer implementation
|
// MessagePack for C++ zero-copy buffer implementation
|
||||||
//
|
//
|
||||||
// Copyright (C) 2008-2013 FURUHASHI Sadayuki and KONDO Takatoshi
|
// Copyright (C) 2008-2017 FURUHASHI Sadayuki and KONDO Takatoshi
|
||||||
//
|
//
|
||||||
// Distributed under the Boost Software License, Version 1.0.
|
// Distributed under the Boost Software License, Version 1.0.
|
||||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
// (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@@ -22,7 +22,7 @@
|
|||||||
#endif
|
#endif
|
||||||
#endif // defined(_MSC_VER)
|
#endif // defined(_MSC_VER)
|
||||||
|
|
||||||
#ifndef _WIN32
|
#if defined(unix) || defined(__unix) || defined(__APPLE__) || defined(__OpenBSD__)
|
||||||
#include <sys/uio.h>
|
#include <sys/uio.h>
|
||||||
#else
|
#else
|
||||||
struct iovec {
|
struct iovec {
|
||||||
|
@@ -92,9 +92,15 @@ public:
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
bool visit_float(double v) {
|
bool visit_float32(float v) {
|
||||||
msgpack::object* obj = m_stack.back();
|
msgpack::object* obj = m_stack.back();
|
||||||
obj->type = msgpack::type::FLOAT;
|
obj->type = msgpack::type::FLOAT32;
|
||||||
|
obj->via.f64 = v;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
bool visit_float64(double v) {
|
||||||
|
msgpack::object* obj = m_stack.back();
|
||||||
|
obj->type = msgpack::type::FLOAT64;
|
||||||
obj->via.f64 = v;
|
obj->via.f64 = v;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -107,7 +113,7 @@ public:
|
|||||||
set_referenced(true);
|
set_referenced(true);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
char* tmp = static_cast<char*>(zone().allocate_align(size));
|
char* tmp = static_cast<char*>(zone().allocate_align(size, MSGPACK_ZONE_ALIGNOF(char)));
|
||||||
std::memcpy(tmp, v, size);
|
std::memcpy(tmp, v, size);
|
||||||
obj->via.str.ptr = tmp;
|
obj->via.str.ptr = tmp;
|
||||||
}
|
}
|
||||||
@@ -123,7 +129,7 @@ public:
|
|||||||
set_referenced(true);
|
set_referenced(true);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
char* tmp = static_cast<char*>(zone().allocate_align(size));
|
char* tmp = static_cast<char*>(zone().allocate_align(size, MSGPACK_ZONE_ALIGNOF(char)));
|
||||||
std::memcpy(tmp, v, size);
|
std::memcpy(tmp, v, size);
|
||||||
obj->via.bin.ptr = tmp;
|
obj->via.bin.ptr = tmp;
|
||||||
}
|
}
|
||||||
@@ -139,7 +145,7 @@ public:
|
|||||||
set_referenced(true);
|
set_referenced(true);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
char* tmp = static_cast<char*>(zone().allocate_align(size));
|
char* tmp = static_cast<char*>(zone().allocate_align(size, MSGPACK_ZONE_ALIGNOF(char)));
|
||||||
std::memcpy(tmp, v, size);
|
std::memcpy(tmp, v, size);
|
||||||
obj->via.ext.ptr = tmp;
|
obj->via.ext.ptr = tmp;
|
||||||
}
|
}
|
||||||
@@ -161,7 +167,7 @@ public:
|
|||||||
throw msgpack::array_size_overflow("array size overflow");
|
throw msgpack::array_size_overflow("array size overflow");
|
||||||
}
|
}
|
||||||
obj->via.array.ptr =
|
obj->via.array.ptr =
|
||||||
static_cast<msgpack::object*>(m_zone->allocate_align(size));
|
static_cast<msgpack::object*>(m_zone->allocate_align(size, MSGPACK_ZONE_ALIGNOF(msgpack::object)));
|
||||||
}
|
}
|
||||||
m_stack.push_back(obj->via.array.ptr);
|
m_stack.push_back(obj->via.array.ptr);
|
||||||
return true;
|
return true;
|
||||||
@@ -192,7 +198,7 @@ public:
|
|||||||
throw msgpack::map_size_overflow("map size overflow");
|
throw msgpack::map_size_overflow("map size overflow");
|
||||||
}
|
}
|
||||||
obj->via.map.ptr =
|
obj->via.map.ptr =
|
||||||
static_cast<msgpack::object_kv*>(m_zone->allocate_align(size));
|
static_cast<msgpack::object_kv*>(m_zone->allocate_align(size, MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)));
|
||||||
}
|
}
|
||||||
m_stack.push_back(reinterpret_cast<msgpack::object*>(obj->via.map.ptr));
|
m_stack.push_back(reinterpret_cast<msgpack::object*>(obj->via.map.ptr));
|
||||||
return true;
|
return true;
|
||||||
|
@@ -32,7 +32,10 @@ struct null_visitor {
|
|||||||
bool visit_negative_integer(int64_t /*v*/) {
|
bool visit_negative_integer(int64_t /*v*/) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
bool visit_float(double /*v*/) {
|
bool visit_float32(float /*v*/) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
bool visit_float64(double /*v*/) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
bool visit_str(const char* /*v*/, uint32_t /*size*/) {
|
bool visit_str(const char* /*v*/, uint32_t /*size*/) {
|
||||||
|
@@ -339,7 +339,7 @@ inline parse_return context<VisitorHolder>::execute(const char* data, std::size_
|
|||||||
case MSGPACK_CS_FLOAT: {
|
case MSGPACK_CS_FLOAT: {
|
||||||
union { uint32_t i; float f; } mem;
|
union { uint32_t i; float f; } mem;
|
||||||
load<uint32_t>(mem.i, n);
|
load<uint32_t>(mem.i, n);
|
||||||
bool visret = holder().visitor().visit_float(mem.f);
|
bool visret = holder().visitor().visit_float32(mem.f);
|
||||||
parse_return upr = after_visit_proc(visret, off);
|
parse_return upr = after_visit_proc(visret, off);
|
||||||
if (upr != PARSE_CONTINUE) return upr;
|
if (upr != PARSE_CONTINUE) return upr;
|
||||||
} break;
|
} break;
|
||||||
@@ -352,7 +352,7 @@ inline parse_return context<VisitorHolder>::execute(const char* data, std::size_
|
|||||||
// https://github.com/msgpack/msgpack-perl/pull/1
|
// https://github.com/msgpack/msgpack-perl/pull/1
|
||||||
mem.i = (mem.i & 0xFFFFFFFFUL) << 32UL | (mem.i >> 32UL);
|
mem.i = (mem.i & 0xFFFFFFFFUL) << 32UL | (mem.i >> 32UL);
|
||||||
#endif
|
#endif
|
||||||
bool visret = holder().visitor().visit_float(mem.f);
|
bool visret = holder().visitor().visit_float64(mem.f);
|
||||||
parse_return upr = after_visit_proc(visret, off);
|
parse_return upr = after_visit_proc(visret, off);
|
||||||
if (upr != PARSE_CONTINUE) return upr;
|
if (upr != PARSE_CONTINUE) return upr;
|
||||||
} break;
|
} break;
|
||||||
|
@@ -20,6 +20,7 @@ namespace msgpack {
|
|||||||
MSGPACK_API_VERSION_NAMESPACE(v2) {
|
MSGPACK_API_VERSION_NAMESPACE(v2) {
|
||||||
/// @endcond
|
/// @endcond
|
||||||
|
|
||||||
|
|
||||||
struct zone_push_finalizer {
|
struct zone_push_finalizer {
|
||||||
zone_push_finalizer(msgpack::zone& z):m_z(&z) {}
|
zone_push_finalizer(msgpack::zone& z):m_z(&z) {}
|
||||||
void set_zone(msgpack::zone& z) { m_z = &z; }
|
void set_zone(msgpack::zone& z) { m_z = &z; }
|
||||||
|
@@ -298,7 +298,7 @@ const auto mp_object_def =
|
|||||||
auto& app_specific = x3::get<tag_app_specific>(ctx).get();
|
auto& app_specific = x3::get<tag_app_specific>(ctx).get();
|
||||||
union { uint32_t i; float f; } mem;
|
union { uint32_t i; float f; } mem;
|
||||||
mem.i = _attr(ctx);
|
mem.i = _attr(ctx);
|
||||||
app_specific.vis.visit_float(mem.f);
|
app_specific.vis.visit_float32(mem.f);
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
@@ -316,7 +316,7 @@ const auto mp_object_def =
|
|||||||
// https://github.com/msgpack/msgpack-perl/pull/1
|
// https://github.com/msgpack/msgpack-perl/pull/1
|
||||||
mem.i = (mem.i & 0xFFFFFFFFUL) << 32UL | (mem.i >> 32UL);
|
mem.i = (mem.i & 0xFFFFFFFFUL) << 32UL | (mem.i >> 32UL);
|
||||||
#endif
|
#endif
|
||||||
app_specific.vis.visit_float(mem.f);
|
app_specific.vis.visit_float64(mem.f);
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
|
@@ -1,3 +1,3 @@
|
|||||||
#define MSGPACK_VERSION_MAJOR 2
|
#define MSGPACK_VERSION_MAJOR 2
|
||||||
#define MSGPACK_VERSION_MINOR 1
|
#define MSGPACK_VERSION_MINOR 1
|
||||||
#define MSGPACK_VERSION_REVISION 2
|
#define MSGPACK_VERSION_REVISION 4
|
||||||
|
@@ -13,7 +13,7 @@
|
|||||||
#include "zone.h"
|
#include "zone.h"
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
#if defined(unix) || defined(__unix) || defined(__APPLE__)
|
#if defined(unix) || defined(__unix) || defined(__APPLE__) || defined(__OpenBSD__)
|
||||||
#include <sys/uio.h>
|
#include <sys/uio.h>
|
||||||
#else
|
#else
|
||||||
struct iovec {
|
struct iovec {
|
||||||
|
@@ -34,6 +34,7 @@ tar --append --file=$filename $prefix/COPYING
|
|||||||
tar --append --file=$filename $prefix/README
|
tar --append --file=$filename $prefix/README
|
||||||
tar --append --file=$filename $prefix/msgpack_vc8.sln
|
tar --append --file=$filename $prefix/msgpack_vc8.sln
|
||||||
tar --append --file=$filename $prefix/msgpack_vc8.vcproj
|
tar --append --file=$filename $prefix/msgpack_vc8.vcproj
|
||||||
|
tar --append --file=$filename $prefix/msgpack-config.cmake.in
|
||||||
|
|
||||||
rm -f $prefix
|
rm -f $prefix
|
||||||
|
|
||||||
|
@@ -66,6 +66,12 @@ IF (MSGPACK_CXX11)
|
|||||||
)
|
)
|
||||||
ENDIF ()
|
ENDIF ()
|
||||||
|
|
||||||
|
IF (MSGPACK_CXX17)
|
||||||
|
LIST (APPEND check_PROGRAMS
|
||||||
|
msgpack_cpp17.cpp
|
||||||
|
)
|
||||||
|
ENDIF ()
|
||||||
|
|
||||||
FOREACH (source_file ${check_PROGRAMS})
|
FOREACH (source_file ${check_PROGRAMS})
|
||||||
GET_FILENAME_COMPONENT (source_file_we ${source_file} NAME_WE)
|
GET_FILENAME_COMPONENT (source_file_we ${source_file} NAME_WE)
|
||||||
ADD_EXECUTABLE (
|
ADD_EXECUTABLE (
|
||||||
|
@@ -212,4 +212,35 @@ TEST(MSGPACK_BOOST, pack_convert_no_def_con_def_con)
|
|||||||
|
|
||||||
#endif // !defined(MSGPACK_USE_CPP03
|
#endif // !defined(MSGPACK_USE_CPP03
|
||||||
|
|
||||||
|
#include <boost/fusion/include/std_pair.hpp>
|
||||||
|
|
||||||
|
TEST(MSGPACK_BOOST, fusion_pack_unpack_convert_pair)
|
||||||
|
{
|
||||||
|
std::stringstream ss;
|
||||||
|
std::pair<bool, int> val1(false, 42);
|
||||||
|
msgpack::pack(ss, val1);
|
||||||
|
msgpack::object_handle oh =
|
||||||
|
msgpack::unpack(ss.str().data(), ss.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);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if !defined(MSGPACK_USE_CPP03)
|
||||||
|
|
||||||
|
#include <boost/fusion/include/std_tuple.hpp>
|
||||||
|
|
||||||
|
TEST(MSGPACK_BOOST, fusion_pack_unpack_convert_tuple)
|
||||||
|
{
|
||||||
|
std::stringstream ss;
|
||||||
|
std::tuple<bool, int> val1(false, 42);
|
||||||
|
msgpack::pack(ss, val1);
|
||||||
|
msgpack::object_handle oh =
|
||||||
|
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||||
|
std::tuple<bool, int> val2 = oh.get().as<std::tuple<bool, int> >();
|
||||||
|
EXPECT_TRUE(val1 == val2);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // !defined(MSGPACK_USE_CPP03)
|
||||||
|
|
||||||
#endif // defined(MSGPACK_USE_BOOST)
|
#endif // defined(MSGPACK_USE_BOOST)
|
||||||
|
@@ -20,6 +20,10 @@ static void feed_file(msgpack::unpacker& pac, const char* path)
|
|||||||
|
|
||||||
TEST(cases, format)
|
TEST(cases, format)
|
||||||
{
|
{
|
||||||
|
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
|
#pragma GCC diagnostic push
|
||||||
|
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
|
||||||
|
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
msgpack::unpacker pac;
|
msgpack::unpacker pac;
|
||||||
msgpack::unpacker pac_compact;
|
msgpack::unpacker pac_compact;
|
||||||
|
|
||||||
@@ -34,4 +38,7 @@ TEST(cases, format)
|
|||||||
}
|
}
|
||||||
|
|
||||||
EXPECT_FALSE( pac_compact.next(oh) );
|
EXPECT_FALSE( pac_compact.next(oh) );
|
||||||
|
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
|
#pragma GCC diagnostic pop
|
||||||
|
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
}
|
}
|
||||||
|
@@ -523,7 +523,7 @@ TEST(MSGPACKC, simple_buffer_fixext_1byte_255)
|
|||||||
{
|
{
|
||||||
const size_t size = 255;
|
const size_t size = 255;
|
||||||
char buf[size];
|
char buf[size];
|
||||||
for (size_t i = 0; i != size; ++i) buf[i] = i;
|
for (size_t i = 0; i != size; ++i) buf[i] = (char)i;
|
||||||
|
|
||||||
msgpack_sbuffer sbuf;
|
msgpack_sbuffer sbuf;
|
||||||
msgpack_sbuffer_init(&sbuf);
|
msgpack_sbuffer_init(&sbuf);
|
||||||
@@ -550,7 +550,7 @@ TEST(MSGPACKC, simple_buffer_fixext_2byte_256)
|
|||||||
{
|
{
|
||||||
const size_t size = 256;
|
const size_t size = 256;
|
||||||
char buf[size];
|
char buf[size];
|
||||||
for (size_t i = 0; i != size; ++i) buf[i] = i;
|
for (size_t i = 0; i != size; ++i) buf[i] = (char)i;
|
||||||
|
|
||||||
msgpack_sbuffer sbuf;
|
msgpack_sbuffer sbuf;
|
||||||
msgpack_sbuffer_init(&sbuf);
|
msgpack_sbuffer_init(&sbuf);
|
||||||
@@ -577,7 +577,7 @@ TEST(MSGPACKC, simple_buffer_fixext_2byte_65535)
|
|||||||
{
|
{
|
||||||
const size_t size = 65535;
|
const size_t size = 65535;
|
||||||
char buf[size];
|
char buf[size];
|
||||||
for (size_t i = 0; i != size; ++i) buf[i] = i;
|
for (size_t i = 0; i != size; ++i) buf[i] = (char)i;
|
||||||
|
|
||||||
msgpack_sbuffer sbuf;
|
msgpack_sbuffer sbuf;
|
||||||
msgpack_sbuffer_init(&sbuf);
|
msgpack_sbuffer_init(&sbuf);
|
||||||
@@ -604,7 +604,7 @@ TEST(MSGPACKC, simple_buffer_fixext_4byte_65536)
|
|||||||
{
|
{
|
||||||
const size_t size = 65536;
|
const size_t size = 65536;
|
||||||
char buf[size];
|
char buf[size];
|
||||||
for (size_t i = 0; i != size; ++i) buf[i] = i;
|
for (size_t i = 0; i != size; ++i) buf[i] = (char)i;
|
||||||
|
|
||||||
msgpack_sbuffer sbuf;
|
msgpack_sbuffer sbuf;
|
||||||
msgpack_sbuffer_init(&sbuf);
|
msgpack_sbuffer_init(&sbuf);
|
||||||
@@ -776,7 +776,6 @@ TEST(MSGPACKC, simple_buffer_str_fix_l)
|
|||||||
EXPECT_EQ(MSGPACK_UNPACK_SUCCESS, ret);
|
EXPECT_EQ(MSGPACK_UNPACK_SUCCESS, ret);
|
||||||
EXPECT_EQ(MSGPACK_OBJECT_STR, obj.type);
|
EXPECT_EQ(MSGPACK_OBJECT_STR, obj.type);
|
||||||
EXPECT_EQ(str_size, obj.via.str.size);
|
EXPECT_EQ(str_size, obj.via.str.size);
|
||||||
EXPECT_EQ(0, memcmp(str, obj.via.str.ptr, str_size));
|
|
||||||
|
|
||||||
msgpack_zone_destroy(&z);
|
msgpack_zone_destroy(&z);
|
||||||
msgpack_sbuffer_destroy(&sbuf);
|
msgpack_sbuffer_destroy(&sbuf);
|
||||||
@@ -975,7 +974,6 @@ TEST(MSGPACKC, simple_buffer_v4raw_fix_l)
|
|||||||
EXPECT_EQ(MSGPACK_UNPACK_SUCCESS, ret);
|
EXPECT_EQ(MSGPACK_UNPACK_SUCCESS, ret);
|
||||||
EXPECT_EQ(MSGPACK_OBJECT_STR, obj.type);
|
EXPECT_EQ(MSGPACK_OBJECT_STR, obj.type);
|
||||||
EXPECT_EQ(str_size, obj.via.str.size);
|
EXPECT_EQ(str_size, obj.via.str.size);
|
||||||
EXPECT_EQ(0, memcmp(str, obj.via.str.ptr, str_size));
|
|
||||||
|
|
||||||
msgpack_zone_destroy(&z);
|
msgpack_zone_destroy(&z);
|
||||||
msgpack_sbuffer_destroy(&sbuf);
|
msgpack_sbuffer_destroy(&sbuf);
|
||||||
|
207
test/msgpack_cpp17.cpp
Normal file
207
test/msgpack_cpp17.cpp
Normal file
@@ -0,0 +1,207 @@
|
|||||||
|
#include <msgpack.hpp>
|
||||||
|
|
||||||
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
#include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(MSGPACK_USE_CPP03) && __cplusplus >= 201703
|
||||||
|
|
||||||
|
// C++17
|
||||||
|
|
||||||
|
TEST(MSGPACK_CPP17, optional_pack_convert_nil)
|
||||||
|
{
|
||||||
|
std::stringstream ss;
|
||||||
|
std::optional<int> val1;
|
||||||
|
msgpack::pack(ss, val1);
|
||||||
|
msgpack::object_handle oh =
|
||||||
|
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||||
|
std::optional<int> val2 = oh.get().as<std::optional<int> >();
|
||||||
|
EXPECT_TRUE(val1 == val2);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(MSGPACK_CPP17, optional_pack_convert_int)
|
||||||
|
{
|
||||||
|
std::stringstream ss;
|
||||||
|
std::optional<int> val1 = 1;
|
||||||
|
msgpack::pack(ss, val1);
|
||||||
|
msgpack::object_handle oh =
|
||||||
|
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||||
|
std::optional<int> val2 = oh.get().as<std::optional<int> >();
|
||||||
|
EXPECT_TRUE(val1 == val2);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(MSGPACK_CPP17, optional_pack_convert_vector)
|
||||||
|
{
|
||||||
|
typedef std::optional<std::vector<int> > ovi_t;
|
||||||
|
std::stringstream ss;
|
||||||
|
ovi_t val1;
|
||||||
|
std::vector<int> v;
|
||||||
|
v.push_back(1);
|
||||||
|
v.push_back(2);
|
||||||
|
v.push_back(3);
|
||||||
|
val1 = v;
|
||||||
|
msgpack::pack(ss, val1);
|
||||||
|
msgpack::object_handle oh =
|
||||||
|
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||||
|
ovi_t val2 = oh.get().as<ovi_t>();
|
||||||
|
EXPECT_TRUE(val1 == val2);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(MSGPACK_CPP17, optional_pack_convert_vector_optional)
|
||||||
|
{
|
||||||
|
typedef std::vector<std::optional<int> > voi_t;
|
||||||
|
std::stringstream ss;
|
||||||
|
voi_t val1;
|
||||||
|
val1.resize(3);
|
||||||
|
val1[0] = 1;
|
||||||
|
val1[2] = 3;
|
||||||
|
msgpack::pack(ss, val1);
|
||||||
|
msgpack::object_handle oh =
|
||||||
|
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||||
|
voi_t val2 = oh.get().as<voi_t>();
|
||||||
|
EXPECT_TRUE(val1 == val2);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(MSGPACK_CPP17, optional_object_nil)
|
||||||
|
{
|
||||||
|
std::optional<int> val1;
|
||||||
|
msgpack::object obj(val1);
|
||||||
|
std::optional<int> val2 = obj.as<std::optional<int> >();
|
||||||
|
EXPECT_TRUE(val1 == val2);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(MSGPACK_CPP17, optional_object_int)
|
||||||
|
{
|
||||||
|
std::optional<int> val1 = 1;
|
||||||
|
msgpack::object obj(val1);
|
||||||
|
std::optional<int> val2 = obj.as<std::optional<int> >();
|
||||||
|
EXPECT_TRUE(val1 == val2);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Compile error as expected
|
||||||
|
/*
|
||||||
|
TEST(MSGPACK_CPP17, optional_object_vector)
|
||||||
|
{
|
||||||
|
typedef std::optional<std::vector<int> > ovi_t;
|
||||||
|
ovi_t val1;
|
||||||
|
std::vector<int> v;
|
||||||
|
v.push_back(1);
|
||||||
|
v.push_back(2);
|
||||||
|
v.push_back(3);
|
||||||
|
val1 = v;
|
||||||
|
msgpack::object obj(val1);
|
||||||
|
ovi_t val2 = obj.as<ovi_t>();
|
||||||
|
EXPECT_TRUE(val1 == val2);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
TEST(MSGPACK_CPP17, optional_object_with_zone_nil)
|
||||||
|
{
|
||||||
|
msgpack::zone z;
|
||||||
|
std::optional<int> val1;
|
||||||
|
msgpack::object obj(val1, z);
|
||||||
|
std::optional<int> val2 = obj.as<std::optional<int> >();
|
||||||
|
EXPECT_TRUE(val1 == val2);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(MSGPACK_CPP17, optional_object_with_zone_int)
|
||||||
|
{
|
||||||
|
msgpack::zone z;
|
||||||
|
std::optional<int> val1 = 1;
|
||||||
|
msgpack::object obj(val1, z);
|
||||||
|
std::optional<int> val2 = obj.as<std::optional<int> >();
|
||||||
|
EXPECT_TRUE(val1 == val2);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(MSGPACK_CPP17, optional_object_with_zone_vector_optional)
|
||||||
|
{
|
||||||
|
typedef std::vector<std::optional<int> > voi_t;
|
||||||
|
msgpack::zone z;
|
||||||
|
voi_t val1;
|
||||||
|
val1.resize(3);
|
||||||
|
val1[0] = 1;
|
||||||
|
val1[2] = 3;
|
||||||
|
msgpack::object obj(val1, z);
|
||||||
|
voi_t val2 = obj.as<voi_t>();
|
||||||
|
EXPECT_TRUE(val1 == val2);
|
||||||
|
}
|
||||||
|
|
||||||
|
struct no_def_con {
|
||||||
|
no_def_con() = delete;
|
||||||
|
no_def_con(int i):i(i) {}
|
||||||
|
int i;
|
||||||
|
MSGPACK_DEFINE(i);
|
||||||
|
};
|
||||||
|
|
||||||
|
inline bool operator==(no_def_con const& lhs, no_def_con const& rhs) {
|
||||||
|
return lhs.i == rhs.i;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline bool operator!=(no_def_con const& lhs, no_def_con const& rhs) {
|
||||||
|
return !(lhs == rhs);
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace msgpack {
|
||||||
|
MSGPACK_API_VERSION_NAMESPACE(MSGPACK_DEFAULT_API_NS) {
|
||||||
|
namespace adaptor {
|
||||||
|
|
||||||
|
template <>
|
||||||
|
struct as<no_def_con> {
|
||||||
|
no_def_con operator()(msgpack::object const& o) const {
|
||||||
|
if (o.type != msgpack::type::ARRAY) throw msgpack::type_error();
|
||||||
|
if (o.via.array.size != 1) throw msgpack::type_error();
|
||||||
|
return no_def_con(o.via.array.ptr[0].as<int>());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // adaptor
|
||||||
|
} // MSGPACK_API_VERSION_NAMESPACE(MSGPACK_DEFAULT_API_NS)
|
||||||
|
} // msgpack
|
||||||
|
|
||||||
|
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);
|
||||||
|
msgpack::object_handle oh =
|
||||||
|
msgpack::unpack(ss.str().data(), ss.str().size());
|
||||||
|
std::optional<no_def_con> val2 = oh.get().as<std::optional<no_def_con>>();
|
||||||
|
EXPECT_TRUE(val1 == val2);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(MSGPACK_CPP17, string_view_pack_convert_string_view)
|
||||||
|
{
|
||||||
|
std::stringstream ss;
|
||||||
|
std::string s = "ABC";
|
||||||
|
std::string_view val1(s);
|
||||||
|
|
||||||
|
msgpack::pack(ss, val1);
|
||||||
|
|
||||||
|
msgpack::object_handle oh;
|
||||||
|
msgpack::unpack(oh, ss.str().data(), ss.str().size());
|
||||||
|
std::string_view val2 = oh.get().as<std::string_view>();
|
||||||
|
EXPECT_TRUE(val1 == val2);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(MSGPACK_CPP17, string_view_object_strinf_view)
|
||||||
|
{
|
||||||
|
std::string s = "ABC";
|
||||||
|
std::string_view val1(s);
|
||||||
|
msgpack::object obj(val1);
|
||||||
|
std::string_view val2 = obj.as<std::string_view>();
|
||||||
|
EXPECT_TRUE(val1 == val2);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(MSGPACK_CPP17, string_view_object_with_zone_string_view)
|
||||||
|
{
|
||||||
|
msgpack::zone z;
|
||||||
|
std::string s = "ABC";
|
||||||
|
std::string_view val1(s);
|
||||||
|
msgpack::object obj(val1, z);
|
||||||
|
std::string_view val2 = obj.as<std::string_view>();
|
||||||
|
EXPECT_TRUE(val1 == val2);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // !defined(MSGPACK_USE_CPP03) && __cplusplus >= 201703
|
@@ -181,7 +181,7 @@ TEST(object, cross_zone_copy_ext)
|
|||||||
msgpack::object::with_zone obj1(z1);
|
msgpack::object::with_zone obj1(z1);
|
||||||
|
|
||||||
obj1.type = msgpack::type::EXT;
|
obj1.type = msgpack::type::EXT;
|
||||||
char* ptr = static_cast<char*>(obj1.zone.allocate_align(2));
|
char* ptr = static_cast<char*>(obj1.zone.allocate_align(2, MSGPACK_ZONE_ALIGNOF(char)));
|
||||||
ptr[0] = 1;
|
ptr[0] = 1;
|
||||||
ptr[1] = 2;
|
ptr[1] = 2;
|
||||||
obj1.via.ext.ptr = ptr;
|
obj1.via.ext.ptr = ptr;
|
||||||
@@ -204,7 +204,7 @@ TEST(object, cross_zone_copy_construct_ext)
|
|||||||
msgpack::object::with_zone obj1(z1);
|
msgpack::object::with_zone obj1(z1);
|
||||||
|
|
||||||
obj1.type = msgpack::type::EXT;
|
obj1.type = msgpack::type::EXT;
|
||||||
char* ptr = static_cast<char*>(obj1.zone.allocate_align(2));
|
char* ptr = static_cast<char*>(obj1.zone.allocate_align(2, MSGPACK_ZONE_ALIGNOF(char)));
|
||||||
ptr[0] = 1;
|
ptr[0] = 1;
|
||||||
ptr[1] = 2;
|
ptr[1] = 2;
|
||||||
obj1.via.ext.ptr = ptr;
|
obj1.via.ext.ptr = ptr;
|
||||||
|
@@ -152,7 +152,7 @@ public:
|
|||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
|
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
|
||||||
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
#endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
|
||||||
msgpack::type::tuple<bool, msgpack::object> tuple;
|
msgpack::type::tuple<bool, msgpack::object> tuple(false, msgpack::object());
|
||||||
o.convert(tuple);
|
o.convert(tuple);
|
||||||
|
|
||||||
is_double = tuple.get<0>();
|
is_double = tuple.get<0>();
|
||||||
|
Reference in New Issue
Block a user