1// MessagePack for C++ example 2// 3// Copyright (C) 2008-2015 FURUHASHI Sadayuki and KONDO Takatoshi 4// 5// Distributed under the Boost Software License, Version 1.0. 6// (See accompanying file LICENSE_1_0.txt or copy at 7// http://www.boost.org/LICENSE_1_0.txt) 8// 9 10#include <msgpack.hpp> 11#include <sstream> 12#include <string> 13#include <iostream> 14 15class old_class { 16public: 17 old_class() : value("default") { } 18 19 std::string value; 20 21 MSGPACK_DEFINE(value); 22}; 23 24class new_class { 25public: 26 new_class() : value("default"), flag(-1) { } 27 28 std::string value; 29 int flag; 30 31 MSGPACK_DEFINE(value, flag); 32}; 33 34int main(void) 35{ 36 { 37 old_class oc; 38 new_class nc; 39 40 std::stringstream sbuf; 41 msgpack::pack(sbuf, oc); 42 43 msgpack::unpacked result; 44 msgpack::unpack(result, sbuf.str().data(), sbuf.str().size()); 45 msgpack::object obj = result.get(); 46 47 obj.convert(nc); 48 49 std::cout << obj << " value=" << nc.value << " flag=" << nc.flag << std::endl; 50 } 51 52 { 53 new_class nc; 54 old_class oc; 55 56 std::stringstream sbuf; 57 msgpack::pack(sbuf, nc); 58 59 msgpack::unpacked result; 60 msgpack::unpack(result, sbuf.str().data(), sbuf.str().size()); 61 msgpack::object obj = result.get(); 62 63 obj.convert(oc); 64 65 std::cout << obj << " value=" << oc.value << std::endl; 66 } 67} 68