Шаблон класса cloneable_policy_t

#include <shptr.hpp>

Полный список членов класса


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

template<class T>
class oess_1::stdsn::cloneable_policy_t< T >

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

Начиная с:
v.1.4.0
У класса-параметра шаблона должен быть константный метод clone(), который возвращает указатель на динамически созданный объект-копию:
T * T::clone() const;
или через std::auto_ptr:
std::auto_ptr< T > T::clone() const;

Заметки:
В данном классе очень важно, чтобы конструкторы выставляли значение m_pointer_holder в ноль перед выполнением любых других действий.
Примеры:

sample/subextension.auto_ptr/main.cpp и sample/subextension/main.cpp.


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

 cloneable_policy_t (T *&pointer_holder)
 Конструктор по-умолчанию.
 cloneable_policy_t (T *&pointer_holder, T *pointer)
 Инициализирующий конструктор.
 ~cloneable_policy_t ()
void assign (T *ptr)
 Взять под контроль указанный объект.
void reassign ()
 Пустой метод.
void link (const cloneable_policy_t< T > &owner_policy)
 Подключиться к уже созданному объекту.
std::auto_ptr< T > release ()
 Отказаться от контроля указанного объекта.

Закрытые данные

T *& m_pointer_holder
 Этот указатель контролирует объект.


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

cloneable_policy_t ( T *&  pointer_holder,
T *  pointer 
) [inline]

Инициализирующий конструктор.

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

~cloneable_policy_t (  )  [inline]

Если счетчик ссылок существует, то уменьшает его значение. Если в результате значение достигло нуля счетчик ссылок удаляется.


Методы

void assign ( T *  ptr  )  [inline]

Взять под контроль указанный объект.

Предполагается, что этот объект еще никем не контролировался.

void link ( const cloneable_policy_t< T > &  owner_policy  )  [inline]

Подключиться к уже созданному объекту.

Сохраняет в m_pointer_holder клонированную копию второго объекта.

Аргументы:
owner_policy  Политика, из которой нужно брать указатель на счетчик ссылок.

void reassign (  )  [inline]

Пустой метод.

Ничего не делает, но должен присутствовать в интерфейсе класса для того, чтобы shptr_skeleton_t мог вызывать его в своем методе oess_post_unpack().

Делать ничего не нужно, т.к. m_pointer_holder указывает на объект, единоличным владельцем которого является как раз данный объект политика.

std::auto_ptr< T > release (  )  [inline]

Отказаться от контроля указанного объекта.

Возвращает:
объект, который удалит объект по указателю m_pointer_holder.


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