Особенностью является то, что присутствием эл-та в перечне управляют специальные объекты - хэндлы и время нахождения значенния в перечне определяется временем жизни хэндла. Используется для хранения неупорядоченного набора значений.
Для добавления значений в перечень применяется операция Add. Время нахождения добавленного значения в перечне определяется хэндлом - Cntm::HandledList::Handle. При добавлении значения устанавливается связь между объектом хэндла и добавленным значением. Когда связь разрывается, происходит удаление значения из перечня. Разрыв связи происходит, когда хэндл уничтожается, ему присваивается новое значение или он принудительно сбрасывается (см. описание Cntm::HandledList::Handle). Т.о. удалить значение из перечня может только тот, кто имеет доступ к хэндлу. Если результат операции Add не будет присвоен какому-либо хэндлу, то добавленное значение будет автоматически удалено из перечня.
Просмотр значений перечня осуществляется через перечислители (см. Cntm::HandledList::Enumerator). Для получения перечислителя используется метод GetEnumerator().
Класс перечня является шаблонным классом с 2 параметрами. Параметр ValueT определяет тип значений, с которыми будет осуществляться работа (которые будут добавляться и перечисляться). Параметр StoreT определяет тип, который будет использоваться при хранении значений в контейнере. При добавлении значение типа ValueT будет преобразовано к значению StoreT, в котором будет храниться, при перечислении наоборот. Если второй параметр не задан, то StoreT = ValueT. Должна обеспечиваться взаимная конвертация типов StoreT и ValueT. Если это условие не будет выполнено, то при компиляции шаблона HandledList будет выдано сообщение об ошибке. Для типа ValueT д.б. доступен конструктор копирования, для StoreT должны быть доступны конструктор по умолчанию, конструктор и оператор копирования. Тип ValueT доступен через Cntm::HandledList::Type.
Класс перечня обеспечивает многопоточность (объекты перечислителей составляют исключение). Т.е. операции добавления, получения перечислителей, работа с хэндлами и разными перечислителями синхронизированы, операции одного перечислителя - нет.
См. определение в файле HandledList.h строка 41
Открытые типы | |
typedef ValueT | Type |
Открытые члены | |
uint | Count () const |
Кол-во эл-тов в перечне. | |
bool | IsEmpty () const |
Проверяет, что кол-во эл-тов в перечне равно 0. | |
AddResult | Add (const Type &Value) |
Добавить значение к перечню. | |
Enumerator | GetEnumerator () const |
Получить объект перечислителя для доступа к эл-там. | |
Друзья | |
class | Enumerator |
class | Handle |
class | AddResult |
Классы | |
class | AddResult |
Класс, инкапсулирующий результат добавления нового эл-та в перечень. Подробнее... | |
class | Enumerator |
Класс для перечисления значений, хранящихся в перечне. Подробнее... | |
class | EnumeratorBase |
Базовый класс для перечислителя эл-тов перечня. | |
class | Handle |
Класс хэндла, отвечающий за присутствие связанного с ним значения в перечне. Подробнее... |
typedef ValueT Cntm::HandledList< ValueT, StoreT >::Type |
См. определение в файле HandledList.h строка 47
uint Cntm::HandledList< ValueT, StoreT >::Count | ( | ) | const [inline] |
Кол-во эл-тов в перечне.
При использовании следует учитывать, что класс многопоточный, поэтому между вызывом Count() и следующей операцией кол-во эл-тов может измениться.
См. определение в файле HandledList.h строка 416
bool Cntm::HandledList< ValueT, StoreT >::IsEmpty | ( | ) | const [inline] |
Проверяет, что кол-во эл-тов в перечне равно 0.
При использовании следует учитывать, что класс многопоточный, поэтому между вызывом Count() и следующей операцией кол-во эл-тов может измениться.
См. определение в файле HandledList.h строка 425
Перекрестные ссылки Cntm::HandledList< ValueT, StoreT >::Count().
AddResult Cntm::HandledList< ValueT, StoreT >::Add | ( | const Type & | Value | ) | [inline] |
Добавить значение к перечню.
Результат операции д.б. присвоен какому-либо хэндлу. Если результат не будет присвоен хэндлу, то добавленное значение будет удалено из перечня.
См. определение в файле HandledList.h строка 430
Перекрестные ссылки Cntm::HandledList< ValueT, StoreT >::AddResult.
Enumerator Cntm::HandledList< ValueT, StoreT >::GetEnumerator | ( | ) | const [inline] |
Получить объект перечислителя для доступа к эл-там.
См. определение в файле HandledList.h строка 438
Перекрестные ссылки Cntm::HandledList< ValueT, StoreT >::Enumerator.
friend class Enumerator [friend] |
См. определение в файле HandledList.h строка 53
friend class Handle [friend] |
См. определение в файле HandledList.h строка 54
friend class AddResult [friend] |
См. определение в файле HandledList.h строка 55
© Овсеевич Р.В. Документация по CntmLib 1.1.4 от 28 May 2008. Создано системой 1.5.3 |