二进制序列化框架easypack发布啦!
简介
easypack是基于boost.serialization的二进制序列化框架,使用极其方便。
Examples
-
基本类型
int age = 20; std::string name = "Jack"; easypack::Pack p; p.pack(age, name); int age2; std::string name2; easypack::UnPack up(p.getString()); up.unpack(age2, name2); /* up.unpackTop(age2); */ /* up.unpackTop(name2); */
可以看到,pack/unpack支持变参,并且还支持出栈式反序列化,使用非常方便。
-
std::tuple
std::tuple<int, std::string> tp = std::make_tuple(10, "Tom"); easypack::Pack p; p.pack(tp); std::tuple<int, std::string> tp2; easypack::UnPack up(p.getString()); up.unpack(tp2);
boost序列化默认不支持std::tuple类型,easypack序列化std::tuple提供了和序列化基本类型一样的接口。
-
STL类型
std::vector<int> vec { 1, 2 }; std::unordered_map<int, std::string> m; std::stack<int> s; s.push(100); s.push(200); m.emplace(1, "Hello"); m.emplace(2, "world"); easypack::Pack p; p.pack(vec, m, s); std::vector<int> vec2; std::unordered_map<int, std::string> m2; std::stack<int> s2; easypack::UnPack up(p.getString()); up.unpack(vec2, m2, s2);
-
类类型
struct PersonInfo { std::string name; int age; template<class Archive> void serialize(Archive& ar, const unsigned int) { ar & name; ar & age; } }; PersonInfo info { "Jack", 20 }; easypack::Pack p; p.pack(info); PersonInfo person; easypack::UnPack up(p.getString()); up.unpack(person);
依赖性
- boost.serialization
- c++11
兼容性
Linux x86_64
gcc 4.8, gcc4.9, gcc 5.Windows x86_64
Visual Studio 2015
License
This software is licensed under the MIT license. © 2016 chxuan
兴趣是最好的老师,我的github地址:https://github.com/chxuan