Класс shptr_t

#include <shptr.hpp>

Граф наследования:shptr_t:

shptr_skeleton_t< oess_1::stdsn::serializable_t > serializable_t req_wrapper_t resp_wrapper_t delta_info_shptr_t Полный список членов класса

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

Класс умного указателя на сериализуемый объект.

Предназначен для возможности сериализации объектов, про которых известно лишь то, что они производны от oess_1::stdsn::serializable_t. На сериализуемый объект могут одновременно ссылаться несколько объектов-указателей. Сериализуемый объект автоматически уничтожается после уничтожения всех ссылающихся на него объектов-указателей.

В отличии от других подобных классов, shptr_t ориентирован на serializable_t и не предоставляет операторов разыменования указателя. Вместо этого предполагается, что от класса shptr_t будут создаваться производные классы, которые предоставят операторы разыменования.

DDL описание этого типа определено в oess_1/stdsn/ddl/shptr.ddl следующим образом:

{type	oess_1::stdsn::shptr_t
	{attr	m_ptr	{of	{ptr}	oess_1::stdsn::serializable_t} }
}

Внимание:
Данный класс не является thread-safe.
Совместимость с предыдущими версиями ObjESSty
В ObjESSty 1.3 кастомизация поведения shptr_t осуществлялась путем переопределения виртуального метода oess_shptr_assign и использования метода oess_reset. После введения в ObjESSty 1.4 класса shptr_skeleton_t данные методы были удалены. Оказалось, что это нарушило совместимость уже написанного прикладного кода с ObjESSty 1.4. Для того, чтобы минимизировать проблемы перехода с ObjESSty 1.3 на 1.4 данные методы были возвращены.


Открытые члены

 shptr_t ()
 Конструктор по умолчанию.
 shptr_t (serializable_t *ptr)
 Конструктор при наличии сериализуемого объекта.
 shptr_t (const shptr_t &o)
 Конструктор копирования.
shptr_toperator= (const shptr_t &o)
 Оператор копирования.

Защищенные члены

Методы, оставленные для совместимости с предыдущими версиями.
virtual void oess_shptr_assign (const shptr_t &o)
 Выполнение операции присваивания.
void oess_reset (serializable_t *ptr=0)
 Назначение указателя контролируемому объекту.

Закрытые типы

typedef shptr_skeleton_t<
oess_1::stdsn::serializable_t
base_type_t


Конструктор(ы)

shptr_t (  ) 

Конструктор по умолчанию.

Указывает, что нет сериализуемого объекта.

shptr_t ( serializable_t ptr  ) 

Конструктор при наличии сериализуемого объекта.

Аргументы:
ptr  Указатель на динамически созданный объект, который будет уничтожен в после уничтожения всех умных указателей на него.


Методы

void oess_reset ( serializable_t ptr = 0  )  [protected]

Назначение указателя контролируемому объекту.

Начиная с:
v.1.0.7
Сначала вызывает метод destroy() для уничтожения старого контролируемого объекта (либо для уменьшения количества ссылок на него). Затем сохраняет переданный в параметре указатель как указатель на контролируемый объект. Если новый указатель отличен от нуля, то устанавливает количество ссылок в 1.

Метод предназначен для переопределения метода oess_shptr_assign() в производных классах.

Здесь применяется не хороший фокус, использующий знание деталей функционирования класса shptr_skeleton_t. Но данный фокус необходим для сохранения совместимости с версией 1.3.

Заключается он в том, что сначала вручную устанавливается указатель на контролируемый объект, а затем политике владения указывается взять под контроль новый указатель.

Аргументы:
ptr  Новый контролируемый указатель.

void oess_shptr_assign ( const shptr_t o  )  [protected, virtual]

Выполнение операции присваивания.

Начиная с:
v.1.0.7
В базовом классе использует счетчик ссылок для управления доступом к единственной копии объекта из разных объектов-ссылок.

shptr_t & operator= ( const shptr_t o  ) 

Оператор копирования.

Для совместимости с предыдущими версиями реализован через использование метода oess_shptr_assign().


Объявления и описания членов классов находятся в файлах:
Документация по ObjESSty. Последние изменения: Fri Oct 13 18:35:40 2006. Создано системой  doxygen 1.4.7
Hosted by uCoz