Данный перечень содержит только ссылки на зарегистрированные в нем значения.
Для хранения значения используется класс эл-та внешнего перечня - 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 |
Класс эл-та перечня. Подробнее... |
typedef RefPtr<RegisterEx> Cntm::RegisterEx< ValueT, StoreT >::Ptr |
Переопределяет метод предка Cntm::IRefObject.
Переопределяется в Cntm::NoRefPtrRegisterEx< T >.
См. определение в файле RegisterEx.h строка 46
typedef ValueT Cntm::RegisterEx< ValueT, StoreT >::Type |
См. определение в файле RegisterEx.h строка 47
bool Cntm::RegisterEx< ValueT, StoreT >::IsEmpty | ( | ) | const [inline] |
Возвращает true, если перечень пуст, в противном случае - false.
См. определение в файле RegisterEx.h строка 358
Enumerator Cntm::RegisterEx< ValueT, StoreT >::GetEnumerator | ( | bool | DynamicExpanded = true |
) | const [inline] |
Получить объект перечислителя для доступа к эл-там.
DynamicExpanded | - true (значение по умолчанию) - перечислитель будет перечислять эл-ты, добавленные в перечень после создания перечислителя, false - перечислитель будет переслять только те эл-ты, которые были в перечне на момент создания перечислителя (удаленные эл-ты перечислитель не перечисляет в любом случае). |
Переопределяется в Cntm::NoRefPtrRegisterEx< T >.
См. определение в файле RegisterEx.h строка 364
friend class Enumerator [friend] |
См. определение в файле RegisterEx.h строка 371
friend class Item [friend] |
См. определение в файле RegisterEx.h строка 372
© Овсеевич Р.В. Документация по CntmLib 1.1.4 от 28 May 2008. Создано системой 1.5.3 |