#include <oess_1/io/h/stream.hpp>
Макросы | |
#define | _OESS_1__STDSN__MACRO_HPP_ |
#define | OESS_SERIALIZER_EX(T, Ex) |
Аналог OESS_SERIALIZER для случая экспортируемых классов. | |
#define | __OESS_1_EMPTY_EX__ |
#define | OESS_SERIALIZER(T) OESS_SERIALIZER_EX(T, __OESS_1_EMPTY_EX__ ) |
Объявление в описании сериализуемого класса всего, что нужно ObjESSty для сериализации. |
#define OESS_SERIALIZER | ( | T | ) | OESS_SERIALIZER_EX(T, __OESS_1_EMPTY_EX__ ) |
Объявление в описании сериализуемого класса всего, что нужно ObjESSty для сериализации.
Для сериализации объектов ObjESSty необходимо, чтобы в сериализуемом классе был описан ряд специальных методов и атрибутов. Макрос OESS_SERIALIZER выполняет это описание и скрывает детали реализации механизма сериализации.
Должен применяться следующим образом:
class some_class_t : public oess_1::stdsn::serializable_t { OESS_SERIALIZER( some_class_t ) public : ... };
class some_class_t : public oess_1::stdsn::serializable_t { // Какие-то части сериализации. ... private : // Остальное описание класса. };
T | Имя сериализуемого типа. |
#define OESS_SERIALIZER_EX | ( | T, | |||
Ex | ) |
Аналог OESS_SERIALIZER для случая экспортируемых классов.
Для экспорта/импорта класса из DLL после ключевого слова class
нужно указать соответствующее значение из расширения C++ используемого компилятора (например, __declspec(dllexport), __export, __import и т.д.).
Макрос OESS_SERIALIZER() полностью определяет специальный вложенный класс oess_serializer_t, который занимается сериализацией. Описание oess_serializer_t делается без использования директив экспорта/импорта. Но, если OESS_SERIALIZER() используется в экспортируемом классе, то и вспомогательный класс oess_serializer_t так же должен быть экспортирован. Для осуществления этого предназначен макрос OESS_SERIALIZER_EX.
T | Имя сериализуемого типа. | |
Ex | Набор расширений C++, который будет помещен между ключевым словом class и именем oess_serializer_t. |
class OESS_1__STDSN__TYPE smart_ptr_t : public serializable_t { OESS_SERIALIZER_EX( smart_ptr_t, OESS_1__STDSN__TYPE ) public : ...