Шаблон класса Cntm::NoRefPtrRegisterEx< T >
[Cntm.Containers]

Граф наследования:Cntm::NoRefPtrRegisterEx< T >:

Cntm::RegisterEx< ValueT, StoreT > Cntm::RefBase Cntm::IRefObject

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


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

template<typename T>
class Cntm::NoRefPtrRegisterEx< T >

Это шаблонный класс перечня, хранящий не ссылочные (обычные) указатели на объекты, однако принимающий и перечисляющий ссылочные указатели.

Когда происходит сохранение значения в перечне, ссылочный указатель преобразуется в обычный, когда происходит перечисление эл-тов - наоборот - из обычного в ссылочный. При этом следует учитывать, что если ссылочный объект находится в удаляемом состоянии, то в результате преобразования обычного указателя к ссылочному, последний примет значение NULL, однако перечислитель автоматически пропускает указатели на NULL, т.о. текущее значение перечислителя никогда не будет равняться NULL. В качестве параметра шаблона указывается тип объекта.

Данный класс может использоваться, когда требуется такая регистрация ссылочных объектов, которая не приводила бы к хранению ссылок на объекты. В этом случае при создании объект регистрирует себя в перечне, а перед уничтожением - уничтожает регистрацию (например, в деструкторе). В какой бы момент не происходило перечисление, если на объект есть ссылки, то будет возвращен ссылочный указатель на этот объект, если объект находится в удаляемом состоянии, но он еще не изъял свой указатель из перечня, то при перечислении он будет пропущен, если же объект изъял свой указатель из перечня, то он уже не будет перечислен.

Отличие данного класса от Cntm::NoRefPtrRegister состоит в том, что он является объектом с подсчетом ссылок, а эл-ты перечня и перечислители используют ссылочные указатели. Т.о. имеется гарантия того, что перечень будет существовать, пока существует хоть один перечислитель или эл-т, зарегистрировавший свое значение в данном перечне.

Класс обеспечивает многопоточность.

Автор:
Овсеевич Р.

См. определение в файле NoRefPtrRegisterEx.h строка 35


Открытые типы

typedef RefPtr
< NoRefPtrRegisterEx
Ptr
typedef RegisterEx
< RefPtr< T >,
SpecUtils::NoRefPtrStorage
< T > > 
RegisterType

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

Enumerator GetEnumerator (bool DynamicExpanded=true) const
 Получить объект перечислителя для доступа к эл-там.

Классы

class  Enumerator
 Класс перечислителя. Подробнее...

Определения типов

template<typename T>
typedef RefPtr< NoRefPtrRegisterEx > Cntm::NoRefPtrRegisterEx< T >::Ptr

Переопределяет метод предка Cntm::RegisterEx< ValueT, StoreT >.

См. определение в файле NoRefPtrRegisterEx.h строка 39

template<typename T>
typedef RegisterEx< RefPtr < T >, SpecUtils::NoRefPtrStorage < T > > Cntm::NoRefPtrRegisterEx< T >::RegisterType

См. определение в файле NoRefPtrRegisterEx.h строка 41


Методы

template<typename T>
Enumerator Cntm::NoRefPtrRegisterEx< T >::GetEnumerator ( bool  DynamicExpanded = true  )  const [inline]

Получить объект перечислителя для доступа к эл-там.

Аргументы:
DynamicExpanded - true (значение по умолчанию) - перечислитель будет перечислять эл-ты, добавленные в перечень после создания перечислителя, false - перечислитель будет переслять только те эл-ты, которые были в перечне на момент создания перечислителя (удаленные эл-ты перечислитель не перечисляет в любом случае).

Переопределяет метод предка Cntm::RegisterEx< ValueT, StoreT >.

См. определение в файле NoRefPtrRegisterEx.h строка 94

Перекрестные ссылки Cntm::RegisterEx< ValueT, StoreT >::Enumerator.


Объявления и описания членов класса находятся в файле:
SourceForge.net Logo
© Овсеевич Р.В. Документация по CntmLib 1.1.4 от 28 May 2008. Создано системой  doxygen 1.5.3