二进制序列化框架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

上一篇:oracle查看所有表的数据量


下一篇:iOS-RAC从新手开始