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

posted @ 2016-08-30 15:02  chxuan  阅读(387)  评论(0编辑  收藏  举报