| // MessagePack for C++ example |
| // |
| // Copyright (C) 2015 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) |
| // |
| |
| #include <sstream> |
| #include <iostream> |
| #include <cassert> |
| |
| #include <msgpack.hpp> |
| |
| enum my_enum { |
| elem1, |
| elem2, |
| elem3 |
| }; |
| |
| MSGPACK_ADD_ENUM(my_enum); |
| |
| int main(void) |
| { |
| { // pack, unpack |
| std::stringstream sbuf; |
| msgpack::pack(sbuf, elem1); |
| msgpack::pack(sbuf, elem2); |
| my_enum e3 = elem3; |
| msgpack::pack(sbuf, e3); |
| |
| msgpack::unpacked result; |
| std::size_t off = 0; |
| |
| msgpack::unpack(result, sbuf.str().data(), sbuf.str().size(), off); |
| std::cout << result.get().as<my_enum>() << std::endl; |
| assert(result.get().as<my_enum>() == elem1); |
| |
| msgpack::unpack(result, sbuf.str().data(), sbuf.str().size(), off); |
| std::cout << result.get().as<my_enum>() << std::endl; |
| assert(result.get().as<my_enum>() == elem2); |
| |
| msgpack::unpack(result, sbuf.str().data(), sbuf.str().size(), off); |
| std::cout << result.get().as<my_enum>() << std::endl; |
| assert(result.get().as<my_enum>() == elem3); |
| } |
| { // create object without zone |
| msgpack::object obj(elem2); |
| std::cout << obj.as<my_enum>() << std::endl; |
| assert(obj.as<my_enum>() == elem2); |
| } |
| { // create object with zone |
| msgpack::zone z; |
| msgpack::object objz(elem3, z); |
| std::cout << objz.as<my_enum>() << std::endl; |
| assert(objz.as<my_enum>() == elem3); |
| } |
| } |