diff --git a/erb/cpp03_define.hpp.erb b/erb/cpp03_define.hpp.erb index d52f8dda..45a72f93 100644 --- a/erb/cpp03_define.hpp.erb +++ b/erb/cpp03_define.hpp.erb @@ -19,7 +19,8 @@ #define MSGPACK_CPP03_DEFINE_HPP #include "msgpack/versioning.hpp" -#include "msgpack_fwd.hpp" +#include "msgpack/adaptor/msgpack_tuple_fwd.hpp" +#include "msgpack/object_fwd.hpp" #define MSGPACK_DEFINE(...) \ template \ diff --git a/erb/cpp03_msgpack_tuple.hpp.erb b/erb/cpp03_msgpack_tuple.hpp.erb index a355dd77..9f3534a8 100644 --- a/erb/cpp03_msgpack_tuple.hpp.erb +++ b/erb/cpp03_msgpack_tuple.hpp.erb @@ -19,7 +19,7 @@ #define MSGPACK_CPP03_MSGPACK_TUPLE_HPP #include "msgpack/versioning.hpp" -#include "msgpack_fwd.hpp" +#include "msgpack/object.hpp" namespace msgpack { diff --git a/erb/cpp03_zone.hpp.erb b/erb/cpp03_zone.hpp.erb index ed4d263e..9b16bb65 100644 --- a/erb/cpp03_zone.hpp.erb +++ b/erb/cpp03_zone.hpp.erb @@ -23,7 +23,6 @@ #include #include "msgpack/versioning.hpp" -#include "msgpack_fwd.hpp" #ifndef MSGPACK_ZONE_CHUNK_SIZE #define MSGPACK_ZONE_CHUNK_SIZE 8192 diff --git a/include/msgpack/adaptor/bool.hpp b/include/msgpack/adaptor/bool.hpp index 5194b828..df7e7ac7 100644 --- a/include/msgpack/adaptor/bool.hpp +++ b/include/msgpack/adaptor/bool.hpp @@ -19,7 +19,7 @@ #define MSGPACK_TYPE_BOOL_HPP #include "msgpack/versioning.hpp" -#include "msgpack_fwd.hpp" +#include "msgpack/object_fwd.hpp" #include namespace msgpack { diff --git a/include/msgpack/adaptor/char_ptr.hpp b/include/msgpack/adaptor/char_ptr.hpp index c1071462..dca1acff 100644 --- a/include/msgpack/adaptor/char_ptr.hpp +++ b/include/msgpack/adaptor/char_ptr.hpp @@ -19,7 +19,7 @@ #define MSGPACK_TYPE_CHAR_PTR_HPP #include "msgpack/versioning.hpp" -#include "msgpack_fwd.hpp" +#include "msgpack/object_fwd.hpp" #include namespace msgpack { diff --git a/include/msgpack/adaptor/cpp11/array.hpp b/include/msgpack/adaptor/cpp11/array.hpp index 573ff2d2..6c932adf 100644 --- a/include/msgpack/adaptor/cpp11/array.hpp +++ b/include/msgpack/adaptor/cpp11/array.hpp @@ -20,7 +20,7 @@ #define MSGPACK_CPP11_ARRAY_HPP #include "msgpack/versioning.hpp" -#include "msgpack_fwd.hpp" +#include "msgpack/object_fwd.hpp" #include diff --git a/include/msgpack/adaptor/cpp11/forward_list.hpp b/include/msgpack/adaptor/cpp11/forward_list.hpp index 6f52365d..dd78afd6 100644 --- a/include/msgpack/adaptor/cpp11/forward_list.hpp +++ b/include/msgpack/adaptor/cpp11/forward_list.hpp @@ -20,7 +20,7 @@ #define MSGPACK_CPP11_FORWARD_LIST_HPP #include "msgpack/versioning.hpp" -#include "msgpack_fwd.hpp" +#include "msgpack/object_fwd.hpp" #include diff --git a/include/msgpack/adaptor/cpp11/tuple.hpp b/include/msgpack/adaptor/cpp11/tuple.hpp index 0e1a03cd..b917360a 100644 --- a/include/msgpack/adaptor/cpp11/tuple.hpp +++ b/include/msgpack/adaptor/cpp11/tuple.hpp @@ -19,7 +19,7 @@ #define MSGPACK_CPP11_TUPLE_HPP #include "msgpack/versioning.hpp" -#include "msgpack_fwd.hpp" +#include "msgpack/object_fwd.hpp" #include diff --git a/include/msgpack/adaptor/deque.hpp b/include/msgpack/adaptor/deque.hpp index fc0bbbf7..94bac923 100644 --- a/include/msgpack/adaptor/deque.hpp +++ b/include/msgpack/adaptor/deque.hpp @@ -19,7 +19,7 @@ #define MSGPACK_TYPE_DEQUE_HPP #include "msgpack/versioning.hpp" -#include "msgpack_fwd.hpp" +#include "msgpack/object_fwd.hpp" #include namespace msgpack { diff --git a/include/msgpack/adaptor/detail/cpp03_define.hpp b/include/msgpack/adaptor/detail/cpp03_define.hpp index 442837cb..3673da88 100644 --- a/include/msgpack/adaptor/detail/cpp03_define.hpp +++ b/include/msgpack/adaptor/detail/cpp03_define.hpp @@ -19,7 +19,8 @@ #define MSGPACK_CPP03_DEFINE_HPP #include "msgpack/versioning.hpp" -#include "msgpack_fwd.hpp" +#include "msgpack/adaptor/msgpack_tuple_fwd.hpp" +#include "msgpack/object_fwd.hpp" #define MSGPACK_DEFINE(...) \ template \ diff --git a/include/msgpack/adaptor/detail/cpp03_msgpack_tuple.hpp b/include/msgpack/adaptor/detail/cpp03_msgpack_tuple.hpp index 7b9b29a1..70346189 100644 --- a/include/msgpack/adaptor/detail/cpp03_msgpack_tuple.hpp +++ b/include/msgpack/adaptor/detail/cpp03_msgpack_tuple.hpp @@ -19,7 +19,7 @@ #define MSGPACK_CPP03_MSGPACK_TUPLE_HPP #include "msgpack/versioning.hpp" -#include "msgpack_fwd.hpp" +#include "msgpack/object.hpp" namespace msgpack { diff --git a/include/msgpack/adaptor/detail/cpp11_define.hpp b/include/msgpack/adaptor/detail/cpp11_define.hpp index 1953d4b4..6e29b4ad 100644 --- a/include/msgpack/adaptor/detail/cpp11_define.hpp +++ b/include/msgpack/adaptor/detail/cpp11_define.hpp @@ -19,7 +19,7 @@ #define MSGPACK_CPP11_DEFINE_HPP #include "msgpack/versioning.hpp" -#include "msgpack_fwd.hpp" +#include "msgpack/object_fwd.hpp" // for MSGPACK_ADD_ENUM #include "msgpack/adaptor/int_fwd.hpp" diff --git a/include/msgpack/adaptor/detail/cpp11_msgpack_tuple.hpp b/include/msgpack/adaptor/detail/cpp11_msgpack_tuple.hpp index 9532021d..3b532d87 100644 --- a/include/msgpack/adaptor/detail/cpp11_msgpack_tuple.hpp +++ b/include/msgpack/adaptor/detail/cpp11_msgpack_tuple.hpp @@ -19,7 +19,7 @@ #define MSGPACK_CPP11_MSGPACK_TUPLE_HPP #include "msgpack/versioning.hpp" -#include "msgpack_fwd.hpp" +#include "msgpack/object_fwd.hpp" #include diff --git a/include/msgpack/adaptor/fixint.hpp b/include/msgpack/adaptor/fixint.hpp index 83a9e95c..eb7f7a8a 100644 --- a/include/msgpack/adaptor/fixint.hpp +++ b/include/msgpack/adaptor/fixint.hpp @@ -19,7 +19,7 @@ #define MSGPACK_TYPE_FIXINT_HPP #include "msgpack/versioning.hpp" -#include "msgpack_fwd.hpp" +#include "msgpack/object_fwd.hpp" #include "msgpack/adaptor/int.hpp" namespace msgpack { diff --git a/include/msgpack/adaptor/float.hpp b/include/msgpack/adaptor/float.hpp index 499cbbe0..8191db91 100644 --- a/include/msgpack/adaptor/float.hpp +++ b/include/msgpack/adaptor/float.hpp @@ -19,7 +19,7 @@ #define MSGPACK_TYPE_FLOAT_HPP #include "msgpack/versioning.hpp" -#include "msgpack_fwd.hpp" +#include "msgpack/object_fwd.hpp" #include namespace msgpack { diff --git a/include/msgpack/adaptor/list.hpp b/include/msgpack/adaptor/list.hpp index b185fa24..321f531b 100644 --- a/include/msgpack/adaptor/list.hpp +++ b/include/msgpack/adaptor/list.hpp @@ -19,7 +19,7 @@ #define MSGPACK_TYPE_LIST_HPP #include "msgpack/versioning.hpp" -#include "msgpack_fwd.hpp" +#include "msgpack/object_fwd.hpp" #include namespace msgpack { diff --git a/include/msgpack/adaptor/map.hpp b/include/msgpack/adaptor/map.hpp index 16b600d8..c42148e4 100644 --- a/include/msgpack/adaptor/map.hpp +++ b/include/msgpack/adaptor/map.hpp @@ -19,7 +19,7 @@ #define MSGPACK_TYPE_MAP_HPP #include "msgpack/versioning.hpp" -#include "msgpack_fwd.hpp" +#include "msgpack/object_fwd.hpp" #include #include #include diff --git a/include/msgpack/adaptor/nil.hpp b/include/msgpack/adaptor/nil.hpp index 1889307a..4b092e28 100644 --- a/include/msgpack/adaptor/nil.hpp +++ b/include/msgpack/adaptor/nil.hpp @@ -19,7 +19,7 @@ #define MSGPACK_TYPE_NIL_HPP #include "msgpack/versioning.hpp" -#include "msgpack_fwd.hpp" +#include "msgpack/object_fwd.hpp" namespace msgpack { diff --git a/include/msgpack/adaptor/pair.hpp b/include/msgpack/adaptor/pair.hpp index 9efc1892..27b88fae 100644 --- a/include/msgpack/adaptor/pair.hpp +++ b/include/msgpack/adaptor/pair.hpp @@ -19,7 +19,7 @@ #define MSGPACK_TYPE_PAIR_HPP #include "msgpack/versioning.hpp" -#include "msgpack_fwd.hpp" +#include "msgpack/object_fwd.hpp" #include namespace msgpack { diff --git a/include/msgpack/adaptor/raw.hpp b/include/msgpack/adaptor/raw.hpp index a01a72c8..590b5de7 100644 --- a/include/msgpack/adaptor/raw.hpp +++ b/include/msgpack/adaptor/raw.hpp @@ -19,7 +19,7 @@ #define MSGPACK_TYPE_RAW_HPP #include "msgpack/versioning.hpp" -#include "msgpack_fwd.hpp" +#include "msgpack/object_fwd.hpp" #include #include diff --git a/include/msgpack/adaptor/set.hpp b/include/msgpack/adaptor/set.hpp index 2e154fdb..f31169c9 100644 --- a/include/msgpack/adaptor/set.hpp +++ b/include/msgpack/adaptor/set.hpp @@ -19,7 +19,7 @@ #define MSGPACK_TYPE_SET_HPP #include "msgpack/versioning.hpp" -#include "msgpack_fwd.hpp" +#include "msgpack/object_fwd.hpp" #include diff --git a/include/msgpack/adaptor/string.hpp b/include/msgpack/adaptor/string.hpp index dd4a37a9..05c2867f 100644 --- a/include/msgpack/adaptor/string.hpp +++ b/include/msgpack/adaptor/string.hpp @@ -19,7 +19,7 @@ #define MSGPACK_TYPE_STRING_HPP #include "msgpack/versioning.hpp" -#include "msgpack_fwd.hpp" +#include "msgpack/object_fwd.hpp" #include namespace msgpack { diff --git a/include/msgpack/adaptor/tr1/unordered_map.hpp b/include/msgpack/adaptor/tr1/unordered_map.hpp index de24a11c..7c411cfc 100644 --- a/include/msgpack/adaptor/tr1/unordered_map.hpp +++ b/include/msgpack/adaptor/tr1/unordered_map.hpp @@ -19,7 +19,7 @@ #define MSGPACK_TYPE_TR1_UNORDERED_MAP_HPP #include "msgpack/versioning.hpp" -#include "msgpack_fwd.hpp" +#include "msgpack/object_fwd.hpp" #if defined(_LIBCPP_VERSION) || (_MSC_VER >= 1700) diff --git a/include/msgpack/adaptor/tr1/unordered_set.hpp b/include/msgpack/adaptor/tr1/unordered_set.hpp index 928556fb..1d142e6a 100644 --- a/include/msgpack/adaptor/tr1/unordered_set.hpp +++ b/include/msgpack/adaptor/tr1/unordered_set.hpp @@ -19,7 +19,7 @@ #define MSGPACK_TYPE_TR1_UNORDERED_SET_HPP #include "msgpack/versioning.hpp" -#include "msgpack_fwd.hpp" +#include "msgpack/object_fwd.hpp" #if defined(_LIBCPP_VERSION) || (_MSC_VER >= 1700) diff --git a/include/msgpack/adaptor/vector.hpp b/include/msgpack/adaptor/vector.hpp index c004d388..fe643117 100644 --- a/include/msgpack/adaptor/vector.hpp +++ b/include/msgpack/adaptor/vector.hpp @@ -19,7 +19,7 @@ #define MSGPACK_TYPE_VECTOR_HPP #include "msgpack/versioning.hpp" -#include "msgpack_fwd.hpp" +#include "msgpack/object_fwd.hpp" #include namespace msgpack { diff --git a/include/msgpack/adaptor/vector_char.hpp b/include/msgpack/adaptor/vector_char.hpp index 225c68ce..1ea6c93c 100644 --- a/include/msgpack/adaptor/vector_char.hpp +++ b/include/msgpack/adaptor/vector_char.hpp @@ -19,7 +19,7 @@ #define MSGPACK_TYPE_VECTOR_CHAR_HPP #include "msgpack/versioning.hpp" -#include "msgpack_fwd.hpp" +#include "msgpack/object_fwd.hpp" #include namespace msgpack { diff --git a/include/msgpack/detail/cpp03_zone.hpp b/include/msgpack/detail/cpp03_zone.hpp index b050a998..8d202232 100644 --- a/include/msgpack/detail/cpp03_zone.hpp +++ b/include/msgpack/detail/cpp03_zone.hpp @@ -23,7 +23,6 @@ #include #include "msgpack/versioning.hpp" -#include "msgpack_fwd.hpp" #ifndef MSGPACK_ZONE_CHUNK_SIZE #define MSGPACK_ZONE_CHUNK_SIZE 8192 diff --git a/include/msgpack/object.hpp b/include/msgpack/object.hpp index 4be3fca4..b6df9fa5 100644 --- a/include/msgpack/object.hpp +++ b/include/msgpack/object.hpp @@ -86,6 +86,36 @@ inline object const& operator>> (object const& o, object& v) template inline object const& operator>> (object const& o, T& v) { + // If you get a error 'class your_class has no member named 'msgpack_unpack', + // check the following: + // 1. The class your_class should have MSGPACK_DEFINE macro or + // + // 2. The class your_class should have the following operator declaration and + // definition: + // inline object const& operator>> (object const& o, std::string& v) + // + // See 3. + // + // 3. #include "msgpack.hpp" too early. + // Replace msgpack.hpp with msgpack_fwd.hpp, then, + // place operator declarations as follows: + // + // namespace msgpack { + // MSGPACK_API_VERSION_NAMESPACE(MSGPACK_DEFAULT_API_NS) { + // object const& operator>> (object const& o, std::string& v); + // } + // } + // + // then, #include "msgpack.hpp", finally place the operator definitions as follows: + // + // namespace msgpack { + // MSGPACK_API_VERSION_NAMESPACE(MSGPACK_DEFAULT_API_NS) { + // object const& operator>> (object const& o, std::string& v) { + // // converting operations here + // } + // } // MSGPACK_API_VERSION_NAMESPACE(MSGPACK_DEFAULT_API_NS) + // } // namespace msgpack + // v.msgpack_unpack(o.convert()); return o; } @@ -116,6 +146,42 @@ namespace detail { template struct packer_serializer { static packer& pack(packer& o, const T& v) { + // If you get a error 'const class your_class has no member named 'msgpack_pack', + // check the following: + // 1. The class your_class should have MSGPACK_DEFINE macro or + // + // 2. The class your_class should have the following operator declaration and + // definition: + // + // namespace msgpack { + // MSGPACK_API_VERSION_NAMESPACE(MSGPACK_DEFAULT_API_NS) { + // template + // inline packer& operator<< (packer& o, const your_class& v) + // } // MSGPACK_API_VERSION_NAMESPACE(MSGPACK_DEFAULT_API_NS) + // } // namespace msgpack + // + // See 3. + // + // 3. #include "msgpack.hpp" too early. + // Replace msgpack.hpp with msgpack_fwd.hpp, then, + // place operator declarations as follows: + // + // namespace msgpack { + // MSGPACK_API_VERSION_NAMESPACE(MSGPACK_DEFAULT_API_NS) { + // template + // packer& operator<< (packer& o, const your_class& v); + // } // MSGPACK_API_VERSION_NAMESPACE(MSGPACK_DEFAULT_API_NS) + // } // namespace msgpack + // + // then, #include "msgpack.hpp", finally place the operator definitions as follows: + // + // template + // inline packer& operator<< (packer& o, const your_class& v) { + // // packing operation + // } + // } // MSGPACK_API_VERSION_NAMESPACE(MSGPACK_DEFAULT_API_NS) + // } // namespace msgpack + // v.msgpack_pack(o); return o; } diff --git a/include/msgpack_fwd.hpp b/include/msgpack_fwd.hpp index 91921dbb..f42ae169 100644 --- a/include/msgpack_fwd.hpp +++ b/include/msgpack_fwd.hpp @@ -21,6 +21,7 @@ #include "msgpack/versioning.hpp" #include "msgpack/zone.hpp" #include "msgpack/object_fwd.hpp" +#include "msgpack/adaptor/define.hpp" #include "msgpack/pack.hpp" #endif // MSGPACK_FWD_HPP