mirror of
https://github.com/msgpack/msgpack-c.git
synced 2025-05-28 15:14:11 +02:00
Removed obsolete APIs form v2.
Removed MSGPACK_DISABLE_LEGACY_CONVERT from v2. Those APIs are removed from v2.
This commit is contained in:
parent
72c7feb2c4
commit
31a06a0682
171
CMakeLists.txt
171
CMakeLists.txt
@ -21,9 +21,6 @@ OPTION (MSGPACK_CXX11 "Using c++11 compiler" OFF)
|
||||
OPTION (MSGPACK_32BIT "32bit compile" OFF)
|
||||
OPTION (MSGPACK_BOOST "Using boost libraries" OFF)
|
||||
|
||||
SET (CMAKE_CXX_FLAGS "-DMSGPACK_DISABLE_LEGACY_NIL ${CMAKE_CXX_FLAGS}")
|
||||
SET (CMAKE_CXX_FLAGS "-DMSGPACK_DISABLE_LEGACY_CONVERT ${CMAKE_CXX_FLAGS}")
|
||||
|
||||
IF (APPLE)
|
||||
SET(CMAKE_MACOSX_RPATH ON)
|
||||
SET(CMAKE_SKIP_BUILD_RPATH FALSE)
|
||||
@ -177,14 +174,18 @@ IF (MSGPACK_ENABLE_CXX)
|
||||
LIST (APPEND msgpack_HEADERS
|
||||
include/msgpack.hpp
|
||||
include/msgpack/adaptor/adaptor_base.hpp
|
||||
include/msgpack/adaptor/adaptor_base_decl.hpp
|
||||
include/msgpack/adaptor/array_ref.hpp
|
||||
include/msgpack/adaptor/array_ref_decl.hpp
|
||||
include/msgpack/adaptor/bool.hpp
|
||||
include/msgpack/adaptor/boost/fusion.hpp
|
||||
include/msgpack/adaptor/boost/msgpack_variant.hpp
|
||||
include/msgpack/adaptor/boost/msgpack_variant_decl.hpp
|
||||
include/msgpack/adaptor/boost/optional.hpp
|
||||
include/msgpack/adaptor/boost/string_ref.hpp
|
||||
include/msgpack/adaptor/char_ptr.hpp
|
||||
include/msgpack/adaptor/check_container_size.hpp
|
||||
include/msgpack/adaptor/check_container_size_decl.hpp
|
||||
include/msgpack/adaptor/cpp11/array.hpp
|
||||
include/msgpack/adaptor/cpp11/array_char.hpp
|
||||
include/msgpack/adaptor/cpp11/array_unsigned_char.hpp
|
||||
@ -196,49 +197,195 @@ IF (MSGPACK_ENABLE_CXX)
|
||||
include/msgpack/adaptor/cpp11/unordered_map.hpp
|
||||
include/msgpack/adaptor/cpp11/unordered_set.hpp
|
||||
include/msgpack/adaptor/define.hpp
|
||||
include/msgpack/adaptor/define_decl.hpp
|
||||
include/msgpack/adaptor/deque.hpp
|
||||
include/msgpack/adaptor/detail/cpp03_define_array.hpp
|
||||
include/msgpack/adaptor/detail/cpp03_define_map.hpp
|
||||
include/msgpack/adaptor/detail/cpp03_msgpack_tuple.hpp
|
||||
include/msgpack/adaptor/detail/cpp11_define_array.hpp
|
||||
include/msgpack/adaptor/detail/cpp11_define_map.hpp
|
||||
include/msgpack/adaptor/detail/cpp11_msgpack_tuple.hpp
|
||||
include/msgpack/adaptor/ext.hpp
|
||||
include/msgpack/adaptor/ext_decl.hpp
|
||||
include/msgpack/adaptor/fixint.hpp
|
||||
include/msgpack/adaptor/fixint_decl.hpp
|
||||
include/msgpack/adaptor/float.hpp
|
||||
include/msgpack/adaptor/int.hpp
|
||||
include/msgpack/adaptor/int_decl.hpp
|
||||
include/msgpack/adaptor/list.hpp
|
||||
include/msgpack/adaptor/map.hpp
|
||||
include/msgpack/adaptor/map_decl.hpp
|
||||
include/msgpack/adaptor/msgpack_tuple.hpp
|
||||
include/msgpack/adaptor/msgpack_tuple_decl.hpp
|
||||
include/msgpack/adaptor/nil.hpp
|
||||
include/msgpack/adaptor/nil_decl.hpp
|
||||
include/msgpack/adaptor/pair.hpp
|
||||
include/msgpack/adaptor/raw.hpp
|
||||
include/msgpack/adaptor/v4raw.hpp
|
||||
include/msgpack/adaptor/raw_decl.hpp
|
||||
include/msgpack/adaptor/set.hpp
|
||||
include/msgpack/adaptor/string.hpp
|
||||
include/msgpack/adaptor/tr1/unordered_map.hpp
|
||||
include/msgpack/adaptor/tr1/unordered_set.hpp
|
||||
include/msgpack/adaptor/v4raw.hpp
|
||||
include/msgpack/adaptor/v4raw_decl.hpp
|
||||
include/msgpack/adaptor/vector.hpp
|
||||
include/msgpack/adaptor/vector_bool.hpp
|
||||
include/msgpack/adaptor/vector_char.hpp
|
||||
include/msgpack/adaptor/vector_unsigned_char.hpp
|
||||
include/msgpack/cpp_config.hpp
|
||||
include/msgpack/detail/cpp03_zone.hpp
|
||||
include/msgpack/detail/cpp11_zone.hpp
|
||||
include/msgpack/cpp_config_decl.hpp
|
||||
include/msgpack/fbuffer.hpp
|
||||
include/msgpack/fbuffer_decl.hpp
|
||||
include/msgpack/iterator.hpp
|
||||
include/msgpack/iterator_decl.hpp
|
||||
include/msgpack/meta.hpp
|
||||
include/msgpack/meta_decl.hpp
|
||||
include/msgpack/object.hpp
|
||||
include/msgpack/object_decl.hpp
|
||||
include/msgpack/object_fwd.hpp
|
||||
include/msgpack/object_fwd_decl.hpp
|
||||
include/msgpack/pack.hpp
|
||||
include/msgpack/pack_decl.hpp
|
||||
include/msgpack/sbuffer.hpp
|
||||
include/msgpack/sbuffer_decl.hpp
|
||||
include/msgpack/type.hpp
|
||||
include/msgpack/unpack.hpp
|
||||
include/msgpack/unpack_decl.hpp
|
||||
include/msgpack/v1/adaptor/adaptor_base.hpp
|
||||
include/msgpack/v1/adaptor/adaptor_base_decl.hpp
|
||||
include/msgpack/v1/adaptor/array_ref.hpp
|
||||
include/msgpack/v1/adaptor/array_ref_decl.hpp
|
||||
include/msgpack/v1/adaptor/bool.hpp
|
||||
include/msgpack/v1/adaptor/boost/fusion.hpp
|
||||
include/msgpack/v1/adaptor/boost/msgpack_variant.hpp
|
||||
include/msgpack/v1/adaptor/boost/msgpack_variant_decl.hpp
|
||||
include/msgpack/v1/adaptor/boost/optional.hpp
|
||||
include/msgpack/v1/adaptor/boost/string_ref.hpp
|
||||
include/msgpack/v1/adaptor/char_ptr.hpp
|
||||
include/msgpack/v1/adaptor/check_container_size.hpp
|
||||
include/msgpack/v1/adaptor/check_container_size_decl.hpp
|
||||
include/msgpack/v1/adaptor/cpp11/array.hpp
|
||||
include/msgpack/v1/adaptor/cpp11/array_char.hpp
|
||||
include/msgpack/v1/adaptor/cpp11/array_unsigned_char.hpp
|
||||
include/msgpack/v1/adaptor/cpp11/forward_list.hpp
|
||||
include/msgpack/v1/adaptor/cpp11/reference_wrapper.hpp
|
||||
include/msgpack/v1/adaptor/cpp11/shared_ptr.hpp
|
||||
include/msgpack/v1/adaptor/cpp11/tuple.hpp
|
||||
include/msgpack/v1/adaptor/cpp11/unique_ptr.hpp
|
||||
include/msgpack/v1/adaptor/cpp11/unordered_map.hpp
|
||||
include/msgpack/v1/adaptor/cpp11/unordered_set.hpp
|
||||
include/msgpack/v1/adaptor/define.hpp
|
||||
include/msgpack/v1/adaptor/define_decl.hpp
|
||||
include/msgpack/v1/adaptor/deque.hpp
|
||||
include/msgpack/v1/adaptor/detail/cpp03_define_array.hpp
|
||||
include/msgpack/v1/adaptor/detail/cpp03_define_array_decl.hpp
|
||||
include/msgpack/v1/adaptor/detail/cpp03_define_map.hpp
|
||||
include/msgpack/v1/adaptor/detail/cpp03_define_map_decl.hpp
|
||||
include/msgpack/v1/adaptor/detail/cpp03_msgpack_tuple.hpp
|
||||
include/msgpack/v1/adaptor/detail/cpp03_msgpack_tuple_decl.hpp
|
||||
include/msgpack/v1/adaptor/detail/cpp11_define_array.hpp
|
||||
include/msgpack/v1/adaptor/detail/cpp11_define_array_decl.hpp
|
||||
include/msgpack/v1/adaptor/detail/cpp11_define_map.hpp
|
||||
include/msgpack/v1/adaptor/detail/cpp11_define_map_decl.hpp
|
||||
include/msgpack/v1/adaptor/detail/cpp11_msgpack_tuple.hpp
|
||||
include/msgpack/v1/adaptor/detail/cpp11_msgpack_tuple_decl.hpp
|
||||
include/msgpack/v1/adaptor/ext.hpp
|
||||
include/msgpack/v1/adaptor/ext_decl.hpp
|
||||
include/msgpack/v1/adaptor/fixint.hpp
|
||||
include/msgpack/v1/adaptor/fixint_decl.hpp
|
||||
include/msgpack/v1/adaptor/float.hpp
|
||||
include/msgpack/v1/adaptor/int.hpp
|
||||
include/msgpack/v1/adaptor/int_decl.hpp
|
||||
include/msgpack/v1/adaptor/list.hpp
|
||||
include/msgpack/v1/adaptor/map.hpp
|
||||
include/msgpack/v1/adaptor/map_decl.hpp
|
||||
include/msgpack/v1/adaptor/msgpack_tuple.hpp
|
||||
include/msgpack/v1/adaptor/msgpack_tuple_decl.hpp
|
||||
include/msgpack/v1/adaptor/nil.hpp
|
||||
include/msgpack/v1/adaptor/nil_decl.hpp
|
||||
include/msgpack/v1/adaptor/pair.hpp
|
||||
include/msgpack/v1/adaptor/raw.hpp
|
||||
include/msgpack/v1/adaptor/raw_decl.hpp
|
||||
include/msgpack/v1/adaptor/set.hpp
|
||||
include/msgpack/v1/adaptor/string.hpp
|
||||
include/msgpack/v1/adaptor/tr1/unordered_map.hpp
|
||||
include/msgpack/v1/adaptor/tr1/unordered_set.hpp
|
||||
include/msgpack/v1/adaptor/v4raw.hpp
|
||||
include/msgpack/v1/adaptor/v4raw_decl.hpp
|
||||
include/msgpack/v1/adaptor/vector.hpp
|
||||
include/msgpack/v1/adaptor/vector_bool.hpp
|
||||
include/msgpack/v1/adaptor/vector_char.hpp
|
||||
include/msgpack/v1/adaptor/vector_unsigned_char.hpp
|
||||
include/msgpack/v1/cpp_config.hpp
|
||||
include/msgpack/v1/cpp_config_decl.hpp
|
||||
include/msgpack/v1/detail/cpp03_zone.hpp
|
||||
include/msgpack/v1/detail/cpp03_zone_decl.hpp
|
||||
include/msgpack/v1/detail/cpp11_zone.hpp
|
||||
include/msgpack/v1/detail/cpp11_zone_decl.hpp
|
||||
include/msgpack/v1/fbuffer.hpp
|
||||
include/msgpack/v1/fbuffer_decl.hpp
|
||||
include/msgpack/v1/iterator.hpp
|
||||
include/msgpack/v1/iterator_decl.hpp
|
||||
include/msgpack/v1/meta.hpp
|
||||
include/msgpack/v1/meta_decl.hpp
|
||||
include/msgpack/v1/object.hpp
|
||||
include/msgpack/v1/object_decl.hpp
|
||||
include/msgpack/v1/object_fwd.hpp
|
||||
include/msgpack/v1/object_fwd_decl.hpp
|
||||
include/msgpack/v1/pack.hpp
|
||||
include/msgpack/v1/pack_decl.hpp
|
||||
include/msgpack/v1/preprocessor.hpp
|
||||
include/msgpack/v1/sbuffer.hpp
|
||||
include/msgpack/v1/sbuffer_decl.hpp
|
||||
include/msgpack/v1/type.hpp
|
||||
include/msgpack/v1/unpack.hpp
|
||||
include/msgpack/v1/unpack_decl.hpp
|
||||
include/msgpack/v1/version.hpp
|
||||
include/msgpack/v1/versioning.hpp
|
||||
include/msgpack/v1/vrefbuffer.hpp
|
||||
include/msgpack/v1/vrefbuffer_decl.hpp
|
||||
include/msgpack/v1/zbuffer.hpp
|
||||
include/msgpack/v1/zbuffer_decl.hpp
|
||||
include/msgpack/v1/zone.hpp
|
||||
include/msgpack/v1/zone_decl.hpp
|
||||
include/msgpack/v2/adaptor/adaptor_base.hpp
|
||||
include/msgpack/v2/adaptor/adaptor_base_decl.hpp
|
||||
include/msgpack/v2/adaptor/array_ref_decl.hpp
|
||||
include/msgpack/v2/adaptor/boost/msgpack_variant_decl.hpp
|
||||
include/msgpack/v2/adaptor/check_container_size_decl.hpp
|
||||
include/msgpack/v2/adaptor/define_decl.hpp
|
||||
include/msgpack/v2/adaptor/detail/cpp03_define_array_decl.hpp
|
||||
include/msgpack/v2/adaptor/detail/cpp03_define_map_decl.hpp
|
||||
include/msgpack/v2/adaptor/detail/cpp03_msgpack_tuple_decl.hpp
|
||||
include/msgpack/v2/adaptor/detail/cpp11_define_array_decl.hpp
|
||||
include/msgpack/v2/adaptor/detail/cpp11_define_map_decl.hpp
|
||||
include/msgpack/v2/adaptor/detail/cpp11_msgpack_tuple_decl.hpp
|
||||
include/msgpack/v2/adaptor/ext_decl.hpp
|
||||
include/msgpack/v2/adaptor/fixint_decl.hpp
|
||||
include/msgpack/v2/adaptor/int_decl.hpp
|
||||
include/msgpack/v2/adaptor/map_decl.hpp
|
||||
include/msgpack/v2/adaptor/msgpack_tuple_decl.hpp
|
||||
include/msgpack/v2/adaptor/nil_decl.hpp
|
||||
include/msgpack/v2/adaptor/raw_decl.hpp
|
||||
include/msgpack/v2/adaptor/v4raw_decl.hpp
|
||||
include/msgpack/v2/cpp_config_decl.hpp
|
||||
include/msgpack/v2/detail/cpp03_zone_decl.hpp
|
||||
include/msgpack/v2/detail/cpp11_zone_decl.hpp
|
||||
include/msgpack/v2/fbuffer_decl.hpp
|
||||
include/msgpack/v2/iterator_decl.hpp
|
||||
include/msgpack/v2/meta_decl.hpp
|
||||
include/msgpack/v2/object.hpp
|
||||
include/msgpack/v2/object_decl.hpp
|
||||
include/msgpack/v2/object_fwd.hpp
|
||||
include/msgpack/v2/object_fwd_decl.hpp
|
||||
include/msgpack/v2/pack_decl.hpp
|
||||
include/msgpack/v2/sbuffer_decl.hpp
|
||||
include/msgpack/v2/unpack_decl.hpp
|
||||
include/msgpack/v2/vrefbuffer_decl.hpp
|
||||
include/msgpack/v2/zbuffer_decl.hpp
|
||||
include/msgpack/v2/zone_decl.hpp
|
||||
include/msgpack/version.hpp
|
||||
include/msgpack/versioning.hpp
|
||||
include/msgpack/vrefbuffer.hpp
|
||||
include/msgpack/vrefbuffer_decl.hpp
|
||||
include/msgpack/zbuffer.hpp
|
||||
include/msgpack/zbuffer_decl.hpp
|
||||
include/msgpack/zone.hpp
|
||||
include/msgpack/zone_decl.hpp
|
||||
)
|
||||
FILE (GLOB_RECURSE PREPROCESSOR_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/include/msgpack/preprocessor/*.hpp)
|
||||
|
||||
|
@ -47,13 +47,11 @@ int main(void) {
|
||||
Compile it as follows:
|
||||
|
||||
```
|
||||
$ g++ -Ipath_to_msgpack/include -DMSGPACK_DISABLE_LEGACY_NIL -DMSGPACK_DISABLE_LEGACY_CONVERT hello.cc -o hello
|
||||
$ g++ -Ipath_to_msgpack/include hello.cc -o hello
|
||||
$ ./hello
|
||||
["Hello", "MessagePack"]
|
||||
```
|
||||
|
||||
See [MSGPACK_DISABLE_LEGACY_NIL](https://github.com/msgpack/msgpack-c/wiki/v1_1_cpp_configure#msgpack_disable_legacy_nil-since-140) and [MSGPACK_DISABLE_LEGACY_CONVERT](https://github.com/msgpack/msgpack-c/wiki/v1_1_cpp_configure#msgpack_disable_legacy_convert-since-140).
|
||||
|
||||
## Streaming feature
|
||||
|
||||
```cpp
|
||||
@ -85,7 +83,7 @@ int main(void) {
|
||||
}
|
||||
|
||||
// results:
|
||||
// $ g++ -Ipath_to_msgpack/include -DMSGPACK_DISABLE_LEGACY_NIL -DMSGPACK_DISABLE_LEGACY_CONVERT stream.cc -o stream
|
||||
// $ g++ -Ipath_to_msgpack/include stream.cc -o stream
|
||||
// $ ./stream
|
||||
// "Log message ... 1"
|
||||
// "Log message ... 2"
|
||||
@ -93,8 +91,6 @@ int main(void) {
|
||||
}
|
||||
```
|
||||
|
||||
See [MSGPACK_DISABLE_LEGACY_NIL](https://github.com/msgpack/msgpack-c/wiki/v1_1_cpp_configure#msgpack_disable_legacy_nil-since-140) and [MSGPACK_DISABLE_LEGACY_CONVERT](https://github.com/msgpack/msgpack-c/wiki/v1_1_cpp_configure#msgpack_disable_legacy_convert-since-140).
|
||||
|
||||
### Streaming into an array or map
|
||||
|
||||
```cpp
|
||||
|
@ -113,9 +113,7 @@ Usage
|
||||
When you use msgpack on C++03 and C++11, you can just add
|
||||
msgpack-c/include to your include path:
|
||||
|
||||
g++ -I msgpack-c/include -DMSGPACK_DISABLE_LEGACY_NIL -DMSGPACK_DISABLE_LEGACY_CONVERT your_source_file.cpp
|
||||
|
||||
See [MSGPACK_DISABLE_LEGACY_NIL](https://github.com/msgpack/msgpack-c/wiki/v1_1_cpp_configure#msgpack_disable_legacy_nil-since-140) and [MSGPACK_DISABLE_LEGACY_CONVERT](https://github.com/msgpack/msgpack-c/wiki/v1_1_cpp_configure#msgpack_disable_legacy_convert-since-140).
|
||||
g++ -I msgpack-c/include your_source_file.cpp
|
||||
|
||||
If you want to use C version of msgpack, you need to build it. You can
|
||||
also install the C and C++ versions of msgpack.
|
||||
|
@ -5,12 +5,17 @@ LIST (APPEND exec_PROGRAMS
|
||||
custom.cpp
|
||||
enum.cpp
|
||||
map_based_versionup.cpp
|
||||
protocol.cpp
|
||||
protocol_new.cpp
|
||||
reuse_zone.cpp
|
||||
simple.cpp
|
||||
)
|
||||
|
||||
IF (MSGPACK_DEFAULT_API_VERSION EQUAL 1)
|
||||
LIST (APPEND exec_PROGRAMS
|
||||
protocol.cpp
|
||||
)
|
||||
ENDIF ()
|
||||
|
||||
IF (NOT MSVC)
|
||||
LIST (APPEND with_pthread_PROGRAMS
|
||||
stream.cpp
|
||||
|
@ -13,5 +13,6 @@
|
||||
#include "msgpack/object_decl.hpp"
|
||||
|
||||
#include "msgpack/v1/object.hpp"
|
||||
#include "msgpack/v2/object.hpp"
|
||||
|
||||
#endif // MSGPACK_OBJECT_HPP
|
||||
|
@ -43,7 +43,7 @@ struct object_with_zone;
|
||||
// operators
|
||||
|
||||
template <typename T>
|
||||
msgpack::object const& operator>> (msgpack::object const& o, T& v);
|
||||
msgpack::object const& operator>> (msgpack::object const& o, T& v);
|
||||
|
||||
template <typename Stream, typename T>
|
||||
msgpack::packer<Stream>& operator<< (msgpack::packer<Stream>& o, T const& v);
|
||||
|
@ -26,6 +26,19 @@ namespace msgpack {
|
||||
MSGPACK_API_VERSION_NAMESPACE(v1) {
|
||||
/// @endcond
|
||||
|
||||
struct object_kv {
|
||||
msgpack::object key;
|
||||
msgpack::object val;
|
||||
};
|
||||
|
||||
struct object::with_zone : msgpack::object {
|
||||
with_zone(msgpack::zone& z) : zone(z) { }
|
||||
msgpack::zone& zone;
|
||||
private:
|
||||
with_zone();
|
||||
};
|
||||
|
||||
|
||||
/// The class holds object and zone
|
||||
class object_handle {
|
||||
public:
|
||||
@ -171,16 +184,8 @@ inline object_handle clone(msgpack::object const& obj) {
|
||||
return object_handle(newobj, msgpack::move(z));
|
||||
}
|
||||
|
||||
struct object::implicit_type {
|
||||
implicit_type(object const& o) : obj(o) { }
|
||||
~implicit_type() { }
|
||||
|
||||
template <typename T>
|
||||
operator T() { return obj.as<T>(); }
|
||||
|
||||
private:
|
||||
msgpack::object const& obj;
|
||||
};
|
||||
template <typename T>
|
||||
inline object::implicit_type::operator T() { return obj.as<T>(); }
|
||||
|
||||
namespace detail {
|
||||
template <typename Stream, typename T>
|
||||
@ -515,9 +520,9 @@ inline bool operator!=(const T& y, const msgpack::object& x)
|
||||
{ return x != y; }
|
||||
|
||||
|
||||
inline msgpack::object::implicit_type object::convert() const
|
||||
inline object::implicit_type object::convert() const
|
||||
{
|
||||
return msgpack::object::implicit_type(*this);
|
||||
return object::implicit_type(*this);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
@ -580,7 +585,7 @@ inline object::object()
|
||||
template <typename T>
|
||||
inline object::object(const T& v)
|
||||
{
|
||||
msgpack::operator<<(*this, v);
|
||||
*this << v;
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
|
@ -212,7 +212,7 @@ struct object {
|
||||
|
||||
struct with_zone;
|
||||
|
||||
private:
|
||||
protected:
|
||||
struct implicit_type;
|
||||
|
||||
public:
|
||||
@ -221,16 +221,15 @@ public:
|
||||
|
||||
class type_error : public std::bad_cast { };
|
||||
|
||||
struct object_kv {
|
||||
msgpack::object key;
|
||||
msgpack::object val;
|
||||
};
|
||||
struct object::implicit_type {
|
||||
implicit_type(object const& o) : obj(o) { }
|
||||
~implicit_type() { }
|
||||
|
||||
template <typename T>
|
||||
operator T();
|
||||
|
||||
struct object::with_zone : object {
|
||||
with_zone(msgpack::zone& z) : zone(z) { }
|
||||
msgpack::zone& zone;
|
||||
private:
|
||||
with_zone();
|
||||
object const& obj;
|
||||
};
|
||||
|
||||
/// @cond
|
||||
|
@ -1003,7 +1003,7 @@ public:
|
||||
* This function is obsolete. Use the reference inteface version of next() function instead of
|
||||
* the pointer interface version.
|
||||
*/
|
||||
bool next(object_handle* result);
|
||||
bool next(msgpack::object_handle* result);
|
||||
|
||||
/// Unpack one msgpack::object.
|
||||
/**
|
||||
@ -1019,7 +1019,7 @@ public:
|
||||
* See:
|
||||
* https://github.com/msgpack/msgpack-c/wiki/v1_1_cpp_unpacker#msgpack-controls-a-buffer
|
||||
*/
|
||||
bool next(object_handle& result, bool& referenced);
|
||||
bool next(msgpack::object_handle& result, bool& referenced);
|
||||
|
||||
/// Unpack one msgpack::object.
|
||||
/**
|
||||
@ -1033,7 +1033,7 @@ public:
|
||||
* See:
|
||||
* https://github.com/msgpack/msgpack-c/wiki/v1_1_cpp_unpacker#msgpack-controls-a-buffer
|
||||
*/
|
||||
bool next(object_handle& result);
|
||||
bool next(msgpack::object_handle& result);
|
||||
|
||||
/// Get message size.
|
||||
/**
|
||||
@ -1281,7 +1281,7 @@ inline void unpacker::buffer_consumed(std::size_t size)
|
||||
m_free -= size;
|
||||
}
|
||||
|
||||
inline bool unpacker::next(object_handle& result, bool& referenced)
|
||||
inline bool unpacker::next(msgpack::object_handle& result, bool& referenced)
|
||||
{
|
||||
referenced = false;
|
||||
int ret = execute_imp();
|
||||
@ -1291,7 +1291,7 @@ inline bool unpacker::next(object_handle& result, bool& referenced)
|
||||
|
||||
if(ret == 0) {
|
||||
result.zone().reset();
|
||||
result.set(object());
|
||||
result.set(msgpack::object());
|
||||
return false;
|
||||
|
||||
} else {
|
||||
@ -1303,13 +1303,13 @@ inline bool unpacker::next(object_handle& result, bool& referenced)
|
||||
}
|
||||
}
|
||||
|
||||
inline bool unpacker::next(object_handle& result)
|
||||
inline bool unpacker::next(msgpack::object_handle& result)
|
||||
{
|
||||
bool referenced;
|
||||
return next(result, referenced);
|
||||
}
|
||||
|
||||
inline bool unpacker::next(object_handle* result)
|
||||
inline bool unpacker::next(msgpack::object_handle* result)
|
||||
{
|
||||
return next(*result);
|
||||
}
|
||||
@ -1461,7 +1461,7 @@ unpack_imp(const char* data, std::size_t len, std::size_t& off,
|
||||
|
||||
// reference version
|
||||
|
||||
inline object_handle unpack(
|
||||
inline msgpack::object_handle unpack(
|
||||
const char* data, std::size_t len, std::size_t& off, bool& referenced,
|
||||
unpack_reference_func f, void* user_data,
|
||||
unpack_limit const& limit
|
||||
@ -1477,20 +1477,20 @@ inline object_handle unpack(
|
||||
switch(ret) {
|
||||
case UNPACK_SUCCESS:
|
||||
off = noff;
|
||||
return object_handle(obj, msgpack::move(z));
|
||||
return msgpack::object_handle(obj, msgpack::move(z));
|
||||
case UNPACK_EXTRA_BYTES:
|
||||
off = noff;
|
||||
return object_handle(obj, msgpack::move(z));
|
||||
return msgpack::object_handle(obj, msgpack::move(z));
|
||||
case UNPACK_CONTINUE:
|
||||
throw msgpack::insufficient_bytes("insufficient bytes");
|
||||
case UNPACK_PARSE_ERROR:
|
||||
default:
|
||||
throw msgpack::parse_error("parse error");
|
||||
}
|
||||
return object_handle();
|
||||
return msgpack::object_handle();
|
||||
}
|
||||
|
||||
inline object_handle unpack(
|
||||
inline msgpack::object_handle unpack(
|
||||
const char* data, std::size_t len, std::size_t& off,
|
||||
unpack_reference_func f, void* user_data,
|
||||
unpack_limit const& limit)
|
||||
@ -1499,7 +1499,7 @@ inline object_handle unpack(
|
||||
return unpack(data, len, off, referenced, f, user_data, limit);
|
||||
}
|
||||
|
||||
inline object_handle unpack(
|
||||
inline msgpack::object_handle unpack(
|
||||
const char* data, std::size_t len, bool& referenced,
|
||||
unpack_reference_func f, void* user_data,
|
||||
unpack_limit const& limit)
|
||||
@ -1508,7 +1508,7 @@ inline object_handle unpack(
|
||||
return unpack(data, len, off, referenced, f, user_data, limit);
|
||||
}
|
||||
|
||||
inline object_handle unpack(
|
||||
inline msgpack::object_handle unpack(
|
||||
const char* data, std::size_t len,
|
||||
unpack_reference_func f, void* user_data,
|
||||
unpack_limit const& limit)
|
||||
@ -1519,7 +1519,7 @@ inline object_handle unpack(
|
||||
}
|
||||
|
||||
inline void unpack(
|
||||
object_handle& result,
|
||||
msgpack::object_handle& result,
|
||||
const char* data, std::size_t len, std::size_t& off, bool& referenced,
|
||||
unpack_reference_func f, void* user_data,
|
||||
unpack_limit const& limit)
|
||||
@ -1551,7 +1551,7 @@ inline void unpack(
|
||||
}
|
||||
|
||||
inline void unpack(
|
||||
object_handle& result,
|
||||
msgpack::object_handle& result,
|
||||
const char* data, std::size_t len, std::size_t& off,
|
||||
unpack_reference_func f, void* user_data,
|
||||
unpack_limit const& limit)
|
||||
@ -1561,7 +1561,7 @@ inline void unpack(
|
||||
}
|
||||
|
||||
inline void unpack(
|
||||
object_handle& result,
|
||||
msgpack::object_handle& result,
|
||||
const char* data, std::size_t len, bool& referenced,
|
||||
unpack_reference_func f, void* user_data,
|
||||
unpack_limit const& limit)
|
||||
@ -1571,7 +1571,7 @@ inline void unpack(
|
||||
}
|
||||
|
||||
inline void unpack(
|
||||
object_handle& result,
|
||||
msgpack::object_handle& result,
|
||||
const char* data, std::size_t len,
|
||||
unpack_reference_func f, void* user_data,
|
||||
unpack_limit const& limit)
|
||||
@ -1644,7 +1644,7 @@ inline msgpack::object unpack(
|
||||
// obsolete
|
||||
// pointer version
|
||||
inline void unpack(
|
||||
object_handle* result,
|
||||
msgpack::object_handle* result,
|
||||
const char* data, std::size_t len, std::size_t* off, bool* referenced,
|
||||
unpack_reference_func f, void* user_data,
|
||||
unpack_limit const& limit)
|
||||
|
33
include/msgpack/v2/object.hpp
Normal file
33
include/msgpack/v2/object.hpp
Normal file
@ -0,0 +1,33 @@
|
||||
//
|
||||
// MessagePack for C++ static resolution routine
|
||||
//
|
||||
// Copyright (C) 2016 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_V2_OBJECT_HPP
|
||||
#define MSGPACK_V2_OBJECT_HPP
|
||||
|
||||
#include "msgpack/object_fwd.hpp"
|
||||
|
||||
|
||||
namespace msgpack {
|
||||
|
||||
/// @cond
|
||||
MSGPACK_API_VERSION_NAMESPACE(v2) {
|
||||
/// @endcond
|
||||
|
||||
inline object::implicit_type object::convert() const
|
||||
{
|
||||
return v1::object::convert();
|
||||
}
|
||||
|
||||
/// @cond
|
||||
} // MSGPACK_API_VERSION_NAMESPACE(v2)
|
||||
/// @endcond
|
||||
|
||||
} // namespace msgpack
|
||||
|
||||
#endif // MSGPACK_V2_OBJECT_HPP
|
@ -37,21 +37,9 @@ using v1::detail::packer_serializer;
|
||||
|
||||
} // namespace detail
|
||||
|
||||
// obsolete
|
||||
using v1::define;
|
||||
|
||||
using v1::operator==;
|
||||
using v1::operator!=;
|
||||
|
||||
// obsolete
|
||||
using v1::convert;
|
||||
|
||||
// obsolete
|
||||
using v1::pack;
|
||||
|
||||
// obsolete
|
||||
using v1::pack_copy;
|
||||
|
||||
/// @cond
|
||||
} // MSGPACK_API_VERSION_NAMESPACE(v2)
|
||||
/// @endcond
|
||||
|
@ -12,6 +12,7 @@
|
||||
#define MSGPACK_V2_OBJECT_FWD_HPP
|
||||
|
||||
#include "msgpack/v2/object_fwd_decl.hpp"
|
||||
#include "msgpack/object_fwd.hpp"
|
||||
|
||||
namespace msgpack {
|
||||
|
||||
@ -19,6 +20,49 @@ namespace msgpack {
|
||||
MSGPACK_API_VERSION_NAMESPACE(v2) {
|
||||
/// @endcond
|
||||
|
||||
struct object : v1::object {
|
||||
object() {}
|
||||
object(v1::object const& o):v1::object(o) {}
|
||||
/// Construct object from T
|
||||
/**
|
||||
* If `v` is the type that is corresponding to MessegePack format str, bin, ext, array, or map,
|
||||
* you need to call `object(const T& v, msgpack::zone& z)` instead of this constructor.
|
||||
*
|
||||
* @tparam T The type of `v`.
|
||||
* @param v The value you want to convert.
|
||||
*/
|
||||
template <typename T>
|
||||
explicit object(const T& v) {
|
||||
*this << v;
|
||||
}
|
||||
|
||||
/// Construct object from T
|
||||
/**
|
||||
* The object is constructed on the zone `z`.
|
||||
* See https://github.com/msgpack/msgpack-c/wiki/v1_1_cpp_object
|
||||
*
|
||||
* @tparam T The type of `v`.
|
||||
* @param v The value you want to convert.
|
||||
* @param z The zone that is used by the object.
|
||||
*/
|
||||
template <typename T>
|
||||
object(const T& v, msgpack::zone& z):v1::object(v, z) {}
|
||||
|
||||
public:
|
||||
/// Convert the object
|
||||
/**
|
||||
* If the object can't be converted to T, msgpack::type_error would be thrown.
|
||||
* @tparam T The type of v.
|
||||
* @param v The value you want to get. `v` is output parameter. `v` is overwritten by converted value from the object.
|
||||
* @return The reference of `v`.
|
||||
*/
|
||||
template <typename T>
|
||||
T& convert(T& v) const { return v1::object::convert(v); }
|
||||
|
||||
using v1::object::with_zone;
|
||||
implicit_type convert() const;
|
||||
};
|
||||
|
||||
#if !defined(MSGPACK_USE_CPP03)
|
||||
|
||||
namespace adaptor {
|
||||
|
@ -36,7 +36,8 @@ using v1::type::MAP;
|
||||
using v1::type::EXT;
|
||||
} // namespace type
|
||||
|
||||
using v1::object;
|
||||
struct object;
|
||||
|
||||
using v1::object_kv;
|
||||
|
||||
using v1::object_array;
|
||||
|
@ -357,6 +357,7 @@ nobase_include_HEADERS += \
|
||||
../include/msgpack/v2/fbuffer_decl.hpp \
|
||||
../include/msgpack/v2/iterator_decl.hpp \
|
||||
../include/msgpack/v2/meta_decl.hpp \
|
||||
../include/msgpack/v2/object.hpp \
|
||||
../include/msgpack/v2/object_decl.hpp \
|
||||
../include/msgpack/v2/object_fwd.hpp \
|
||||
../include/msgpack/v2/object_fwd_decl.hpp \
|
||||
|
@ -1,4 +1,4 @@
|
||||
AM_CPPFLAGS = -I$(top_srcdir)/include -pthread -DMSGPACK_DISABLE_LEGACY_NIL -DMSGPACK_DISABLE_LEGACY_CONVERT
|
||||
AM_CPPFLAGS = -I$(top_srcdir)/include -pthread
|
||||
AM_C_CPPFLAGS = -I$(top_srcdir)/include -pthread
|
||||
AM_LDFLAGS = $(top_builddir)/src/libmsgpackc.la -lgtest_main -lgtest -lpthread
|
||||
|
||||
|
@ -84,7 +84,7 @@ TEST(convert, return_value_ref)
|
||||
EXPECT_EQ(i, j);
|
||||
}
|
||||
|
||||
#if !defined(MSGPACK_DISABLE_LEGACY_CONVERT)
|
||||
#if MSGPACK_DEFAULT_API_VERSION == 1 && !defined(MSGPACK_DISABLE_LEGACY_CONVERT)
|
||||
|
||||
TEST(convert, return_value_ptr)
|
||||
{
|
||||
@ -96,7 +96,7 @@ TEST(convert, return_value_ptr)
|
||||
EXPECT_EQ(1, i);
|
||||
}
|
||||
|
||||
#endif // !defined(MSGPACK_DISABLE_LEGACY_CONVERT)
|
||||
#endif // MSGPACK_DEFAULT_API_VERSION == 1 && !defined(MSGPACK_DISABLE_LEGACY_CONVERT)
|
||||
|
||||
TEST(convert, if_not_nil_nil)
|
||||
{
|
||||
|
@ -459,3 +459,67 @@ TEST(MSGPACK_MIGRATION, order_number_changed)
|
||||
EXPECT_EQ(v2.s, "foo"); // from v1
|
||||
EXPECT_EQ(v2.i, 42); // from v1
|
||||
}
|
||||
|
||||
// non intrusive with operator <<
|
||||
|
||||
class test_non_intrusive {
|
||||
public:
|
||||
const std::string& name() const { return m_name; }
|
||||
void set_name(const std::string& name) { m_name = name; }
|
||||
private:
|
||||
std::string m_name;
|
||||
};
|
||||
|
||||
namespace msgpack {
|
||||
MSGPACK_API_VERSION_NAMESPACE(MSGPACK_DEFAULT_API_NS) {
|
||||
namespace adaptor {
|
||||
|
||||
template<>
|
||||
struct convert<test_non_intrusive>
|
||||
{
|
||||
msgpack::object const& operator()(
|
||||
msgpack::object const& o,
|
||||
test_non_intrusive& t) const {
|
||||
t.set_name(o.as<std::string>());
|
||||
return o;
|
||||
}
|
||||
};
|
||||
|
||||
template<>
|
||||
struct pack<test_non_intrusive>
|
||||
{
|
||||
template <typename Stream>
|
||||
msgpack::packer<Stream>& operator()(
|
||||
msgpack::packer<Stream>& p,
|
||||
test_non_intrusive const& t) const {
|
||||
p.pack(t.name());
|
||||
return p;
|
||||
}
|
||||
};
|
||||
|
||||
template <>
|
||||
struct object_with_zone<test_non_intrusive>
|
||||
{
|
||||
void operator()(
|
||||
msgpack::object::with_zone& o,
|
||||
const test_non_intrusive& t) const {
|
||||
o << t.name();
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace adaptor
|
||||
} // MSGPACK_API_VERSION_NAMESPACE(MSGPACK_DEFAULT_API_NS)
|
||||
} // namespace msgpack
|
||||
|
||||
TEST(MSGPACK_USER_DEFINED, test_non_intrusive)
|
||||
{
|
||||
test_non_intrusive t1;
|
||||
msgpack::sbuffer sbuf;
|
||||
msgpack::pack(sbuf, t1);
|
||||
|
||||
msgpack::object_handle oh =
|
||||
msgpack::unpack(sbuf.data(), sbuf.size());
|
||||
test_non_intrusive t2 = oh.get().as<test_non_intrusive>();
|
||||
|
||||
EXPECT_EQ(t1.name(), t2.name());
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user