最便捷、最强大、速度最快的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(1024COLOR:

你可能感兴趣的:(C++,c,框架,C#,Office)