#include <oess_1/stdsn/h/inout_templ.hpp>
Макросы | |
#define | OESS_1__STDSN__CUSTOM_INOUT_TEMPL_HPP |
#define | OESS_1_STDSN_SPECIALIZE_CUSTOM_TYPE(type) |
Макрос для специализации сериализующих/десериализующих объектов для пользовательских типов. |
#define OESS_1_STDSN_SPECIALIZE_CUSTOM_TYPE | ( | type | ) |
Макроопределение:
namespace oess_1 { \ namespace stdsn { \ OESS_1_STDSN_SPECIALIZE_TYPE_IMPL(type) \ } \ }
Первый шаг обязательно должен сделать сам пользователь, т.к. ObjESSty не знает, как именно должен быть сериализован его тип. А для облегчения второго шага предназначен данный макрос. Необходимо указать его где-то в глобальном пространстве имен. Например, так:
namespace some_project { // Этот класс должен сериализоваться. class my_class_t { ... }; // Определяем операторы сдвига для него. oess_1::io::istream_t & operator>>( oess_1::io::istream_t & in, my_class_t & o ) { ... } oess_1::io::ostream_t & operator<<( oess_1::io::ostream_t & out, my_class_t & o ) { ... } } // ОБЯЗАТЕЛЬНО в глобальном пространстве имен делам специализацию. OESS_1_STDSN_SPECIALIZE_CUSTOM_TYPE( some_project::my_class_t )