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

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

Cntm::Register< ValueT, StoreT >

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


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

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

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

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

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

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

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

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


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

typedef Register
< RefPtr< T >,
SpecUtils::NoRefPtrStorage
< T > > 
RegisterType

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

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

Классы

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

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

template<typename T>
typedef Register< RefPtr < T >, SpecUtils::NoRefPtrStorage < T > > Cntm::NoRefPtrRegister< T >::RegisterType

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


Методы

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

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

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

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

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

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


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