Файл macro.hpp


Подробное описание

Определение макроса OESS_SERIALIZER().

#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 (  )     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 :
      ...
  };

Заметки:
Макрос OESS_SERIALIZER использует в своем теле управление "открытостью" членов класса (посредством public и private). Использование OESS_SERIALIZER эквивалентно:
  class some_class_t :
    public  oess_1::stdsn::serializable_t
  {
      // Какие-то части сериализации.
      ...
    private :
      // Остальное описание класса.
  };
Поэтому, для описания остальных членов класса желательно после макроса OESS_SERIALIZER явно указать степень открытости посредством public, private или proceted.
Аргументы:
T Имя сериализуемого типа.
Примеры:
sample/app_recovery/main.cpp, sample/file_archive_2/main.cpp, sample/subextension.auto_ptr/main.cpp и sample/subextension/main.cpp.

#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 :
  ...


Документация по ObjESSty. Последние изменения: Fri Oct 13 18:35:36 2006. Создано системой  doxygen 1.4.7
Hosted by uCoz