CDT  v4.2.0
инструменты разработчика
serialize.hpp
См. документацию.
1#include <bluegrass/meta/preprocessor.hpp>
2
3#define EOSLIB_REFLECT_MEMBER_OP( OP, elem ) \
4 OP t.elem
5
19#define EOSLIB_SERIALIZE( TYPE, MEMBERS ) \
20 template<typename DataStream> \
21 friend DataStream& operator << ( DataStream& ds, const TYPE& t ){ \
22 return ds BLUEGRASS_META_FOREACH_SEQ( EOSLIB_REFLECT_MEMBER_OP, <<, MEMBERS );\
23 }\
24 template<typename DataStream> \
25 friend DataStream& operator >> ( DataStream& ds, TYPE& t ){ \
26 return ds BLUEGRASS_META_FOREACH_SEQ( EOSLIB_REFLECT_MEMBER_OP, >>, MEMBERS );\
27 }
28
38#define EOSLIB_SERIALIZE_DERIVED( TYPE, BASE, MEMBERS ) \
39 template<typename DataStream> \
40 friend DataStream& operator << ( DataStream& ds, const TYPE& t ){ \
41 ds << static_cast<const BASE&>(t); \
42 return ds BLUEGRASS_META_FOREACH_SEQ( EOSLIB_REFLECT_MEMBER_OP, <<, MEMBERS );\
43 }\
44 template<typename DataStream> \
45 friend DataStream& operator >> ( DataStream& ds, TYPE& t ){ \
46 ds >> static_cast<BASE&>(t); \
47 return ds BLUEGRASS_META_FOREACH_SEQ( EOSLIB_REFLECT_MEMBER_OP, >>, MEMBERS );\
48 }