想接做网站的单子,wordpress editor.md,开发一个app需要多少资金,centos6 wordpress原文
iguana是一个基于编译期反射的序化库,支持从结构序化到不同数据格式.
iguana可序化一个C结构到json,xml,yaml和protobuf格式.这都是通过编译期反射实现的. 现在iguana也支持了动态反射,主要特征: 1,通过对象名创建对象实例 2,取对象所有字段名 3,根据字段名取字段值 4,根…原文
iguana是一个基于编译期反射的序化库,支持从结构序化到不同数据格式.
iguana可序化一个C结构到json,xml,yaml和protobuf格式.这都是通过编译期反射实现的. 现在iguana也支持了动态反射,主要特征: 1,通过对象名创建对象实例 2,取对象所有字段名 3,根据字段名取字段值 4,根据字段名置字段值 5,序化对象到不同数据格式.
一例来看iguana的动态反射函数:
struct pair_t : public iguana::base_implpair_t {pair_t() default;pair_t(int a, int b) : x(a), y(b) {}int x;int y;
};
REFLECTION(pair_t, x, y);先定义一个从iguana::base_impl继承的结构,后面就可动态反射创建对象了.如果不需要动态反射,只需要静态反射来序化,就不必从iguana::base_impl继承了.
auto t iguana::create_instance(pair_t);
t-set_field_value(x, 12);
t-set_field_value(y, 24);
auto r0 t-get_field_valueint(x);
CHECK(r0 12);
auto r t-get_field_valueint(y);
CHECK(r 24);
//序化到protobuf数据格式
std::string str;
t-to_pb(str);
//从protobuf格式反序化到pair_t
pair_t s;
s.from_pb(str);
CHECK(s.x 12);
CHECK(s.y 24);
//序化到数格
std::string json;
t-to_json(str);
s {};
s.from_json(json);
CHECK(s.x 12);
CHECK(s.y 24);
//序化到xml
std::string xml;
t-to_xml(xml);
s.from_xml(xml);
//序化到yaml
std::string yaml;
t-to_yaml(yaml);
s.from_yaml(yaml);此时iguana就很酷了,静态和动态反射都是随意的,关键是性能还非常好!