MessagePack for C++
adaptor_base.hpp
Go to the documentation of this file.
1 //
2 // MessagePack for C++ static resolution routine
3 //
4 // Copyright (C) 2015 KONDO Takatoshi
5 //
6 // Distributed under the Boost Software License, Version 1.0.
7 // (See accompanying file LICENSE_1_0.txt or copy at
8 // http://www.boost.org/LICENSE_1_0.txt)
9 //
10 #ifndef MSGPACK_ADAPTOR_BASE_HPP
11 #define MSGPACK_ADAPTOR_BASE_HPP
12 
13 #include "msgpack/object_fwd.hpp"
14 
15 namespace msgpack {
16 
20 
21 template <typename Stream>
22 class packer;
23 
24 namespace adaptor {
25 
26 // Adaptor functors
27 
28 template <typename T, typename Enabler = void>
29 struct convert {
30  msgpack::object const& operator()(msgpack::object const& o, T& v) const;
31 };
32 
33 template <typename T, typename Enabler = void>
34 struct pack {
35  template <typename Stream>
37 };
38 
39 template <typename T, typename Enabler = void>
40 struct object {
41  void operator()(msgpack::object& o, T const& v) const;
42 };
43 
44 template <typename T, typename Enabler = void>
46  void operator()(msgpack::object::with_zone& o, T const& v) const;
47 };
48 
49 } // namespace adaptor
50 
51 // operators
52 
53 template <typename T>
54 inline
56  return adaptor::convert<T>()(o, v);
57 }
58 
59 template <typename Stream, typename T>
60 inline
61 msgpack::packer<Stream>& operator<< (msgpack::packer<Stream>& o, T const& v) {
62  return adaptor::pack<T>()(o, v);
63 }
64 
65 template <typename T>
66 inline
67 void operator<< (msgpack::object& o, T const& v) {
68  adaptor::object<T>()(o, v);
69 }
70 
71 template <typename T>
72 inline
75 }
76 
78 } // MSGPACK_API_VERSION_NAMESPACE(v1)
80 
81 } // namespace msgpack
82 
83 
84 #endif // MSGPACK_ADAPTOR_BASE_HPP
#define MSGPACK_API_VERSION_NAMESPACE(ns)
Definition: versioning.hpp:58
Definition: adaptor_base.hpp:15
Definition: object_fwd.hpp:260
Definition: adaptor_base.hpp:45
Definition: adaptor_base.hpp:34
Object class that corresponding to MessagePack format object.
Definition: object_fwd.hpp:106
Definition: adaptor_base.hpp:40
The class template that supports continuous packing.
Definition: adaptor_base.hpp:22
Definition: adaptor_base.hpp:29
msgpack::object const & operator()(msgpack::object const &o, T &v) const
Definition: object.hpp:195
msgpack::object const & operator>>(msgpack::object const &o, T &v)
Definition: adaptor_base.hpp:55
msgpack::packer< Stream > & operator<<(msgpack::packer< Stream > &o, T const &v)
Definition: adaptor_base.hpp:61