Шаблон класса Cntm::RegisterEx< ValueT, StoreT >
[Cntm.Containers]

Граф наследования:Cntm::RegisterEx< ValueT, StoreT >:

Cntm::RefBase Cntm::IRefObject Cntm::NoRefPtrRegisterEx< T >

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


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

template<typename ValueT, typename StoreT = ValueT>
class Cntm::RegisterEx< ValueT, StoreT >

Контейнерный класс перечня значений, хранящихся во внешних источниках.

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

Для хранения значения используется класс эл-та внешнего перечня - Cntm::RegisterEx::Item (см. этот класс). При записи в него значения одновременно указывается и перечень, в котором будет зарегистрировано значение. При присвоении эл-ту перечня нового значения ссылка на старое значение удаляется из перечня, в котором оно было зарегистрировано, и происходит регистрация нового значения. При уничтожении эл-та производится удаление ссылки на знвчение из перечня.

Просмотр значений перечня осуществляется через перечислители (см. Cntm::RegisterEx::Enumerator). Для получения перечислителя используется метод GetEnumerator().

Класс перечня является шаблонным классом с 2 параметрами. Параметр ValueT определяет тип значений, с которыми будет осуществляться работа (которые будут добавляться и перечисляться). Параметр StoreT определяет тип, который будет использоваться при хранении значений в контейнере. При добавлении значение типа ValueT будет преобразовано к значению StoreT, в котором будет храниться, при перечислении наоборот. Если второй параметр не задан, то StoreT = ValueT. Должна обеспечиваться взаимная конвертация типов StoreT и ValueT. Если это условие не будет выполнено, то при компиляции шаблона RegisterEx будет выдано сообщение об ошибке. Типы StoreT и ValueT должны иметь конструкторы и операторы копирования. Тип ValueT доступен через Cntm::RegisterEx::Type.

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

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

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

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


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

typedef RefPtr
< RegisterEx
Ptr
typedef ValueT Type

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

bool IsEmpty () const
 Возвращает true, если перечень пуст, в противном случае - false.
Enumerator GetEnumerator (bool DynamicExpanded=true) const
 Получить объект перечислителя для доступа к эл-там.

Друзья

class Enumerator
class Item

Классы

class  Enumerator
 Класс для перечисления значений, хранящихся в перечне. Подробнее...
class  Item
 Класс эл-та перечня. Подробнее...

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

template<typename ValueT, typename StoreT = ValueT>
typedef RefPtr<RegisterEx> Cntm::RegisterEx< ValueT, StoreT >::Ptr

Переопределяет метод предка Cntm::IRefObject.

Переопределяется в Cntm::NoRefPtrRegisterEx< T >.

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

template<typename ValueT, typename StoreT = ValueT>
typedef ValueT Cntm::RegisterEx< ValueT, StoreT >::Type

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


Методы

template<typename ValueT, typename StoreT = ValueT>
bool Cntm::RegisterEx< ValueT, StoreT >::IsEmpty (  )  const [inline]

Возвращает true, если перечень пуст, в противном случае - false.

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

template<typename ValueT, typename StoreT = ValueT>
Enumerator Cntm::RegisterEx< ValueT, StoreT >::GetEnumerator ( bool  DynamicExpanded = true  )  const [inline]

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

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

Переопределяется в Cntm::NoRefPtrRegisterEx< T >.

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


Документация по друзьям класса и функциям, отноносящимся к классу

template<typename ValueT, typename StoreT = ValueT>
friend class Enumerator [friend]

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

template<typename ValueT, typename StoreT = ValueT>
friend class Item [friend]

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


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