Dependents:   hello_message_pack

msgpack-c & msgpack-c++ https://github.com/msgpack/msgpack-c implementation for embedded systems (mbed / Arduino)

Committer:
hideakitai
Date:
Mon Feb 22 01:43:48 2016 +0000
Revision:
4:bd0c06dd6e92
Parent:
0:3f9dbf1e2cb0
fix throw error

Who changed what in which revision?

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