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

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


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

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

Контейнерный класс перечня.

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

Для добавления значений в перечень применяется операция 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
 Класс хэндла, отвечающий за присутствие связанного с ним значения в перечне. Подробнее...

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

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

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


Методы

template<typename ValueT, typename StoreT = ValueT>
uint Cntm::HandledList< ValueT, StoreT >::Count (  )  const [inline]

Кол-во эл-тов в перечне.

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

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

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

Проверяет, что кол-во эл-тов в перечне равно 0.

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

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

Перекрестные ссылки Cntm::HandledList< ValueT, StoreT >::Count().

template<typename ValueT, typename StoreT = ValueT>
AddResult Cntm::HandledList< ValueT, StoreT >::Add ( const Type Value  )  [inline]

Добавить значение к перечню.

Результат операции д.б. присвоен какому-либо хэндлу. Если результат не будет присвоен хэндлу, то добавленное значение будет удалено из перечня.

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

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

template<typename ValueT, typename StoreT = ValueT>
Enumerator Cntm::HandledList< ValueT, StoreT >::GetEnumerator (  )  const [inline]

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

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

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


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

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

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

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

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

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

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


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