最便捷、最强大、速度最快的C++序列化框架

最便捷、最强大、速度最快的C++序列化框架。

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" ?>

 

特别注意:vc6太古老,不符合C++规范,无法使用该框架

 

1.         高性能,速度非常快,比你能找到的同类产品至少快一个数量级

2.         在网络通讯,数据库存储中非常好用。

3.         预先支持所有基本类型,所有stl容器类型(除stack/queue之外)

4.         支持变长int32/uint32/int64/uint64

5.         支持stl::pairboost::tuple

6.         可选的版本控制,而非强制

a)         对于小对象,通常不需要版本控制

b)         boost::serialization的版本号是强制的,当初我设计这个序列化框架就是因为boost不能省略版本号

7.         非侵入式设计,不污染名字空间

8.         声明式语法,简单,可靠

9.         …….

 

该框架的易用性

还是用代码说明问题最简洁,看这个例子:

 

struct MyData1

{

    int  a, b, c;

    var_int32_t d;  // d.t is int32 value

    var_uint64_t e; // d.t is uint64 value

    std::string f;

    std::map<std::string, int> g;

    std::set<int> h;

 

    // 声明序列化,无版本控制,最简洁的声明,后面几个稍微复杂点

    DATA_IO_LOAD_SAVE(MyData1, &a&b&c&d&e&f&g&h)

};

 

struct MyData2

{

    int  a, b, c;

    var_int32_t d;

    var_uint64_t e;

    std::string f;

    std::map<std::string, int> g;

    std::set<int> h;

 

    // 声明序列化,有版本控制

    DATA_IO_LOAD_SAVE_V(MyData2,

        1, // 当前版本

        &a&b&c&d&e&f&g&h

        )

};

 

struct MyData3

{

    int  a, b, c;

    boost::int32_t d;

    boost::uint64_t e;

    std::string f;

    std::map<std::string, int> g;

    std::set<int> h;

    std::multiset<int> i;

 

    unsigned version;

 

    // 声明序列化,有版本控制

    DATA_IO_LOAD_SAVE_V(MyData3,

        2, // 当前版本

        &a

        &b

        &c

        &as_var_int(d) // d 声明为int32_t, 但是作为var_int32_t 来存储

        &as_var_int(e) // e 声明为uint64_t, 但是作为var_uint64_t 来存储

        &f

        &g

        &h

        &vmg.since(2, i) // 版本2 新增了成员i

        &vmg.get_version(version) // 如果需要,将版本值存入version 成员

        )

};

 

int main(int argc, char* argv[])

{

    PortableDataOutput<AutoGrownMemIO> output;

    PortableDataInput<MemIO> input;

 

    output.resize(1024

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值