Класс Cntm::Register< ValueT, StoreT >::Enumerator
[Cntm.Containers]

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

Cntm::LinkedListItemBase

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


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

template<typename ValueT, typename StoreT = ValueT>
class Cntm::Register< ValueT, StoreT >::Enumerator

Класс для перечисления значений, хранящихся в перечне.

Используется для перебора всех значений перечня.

После создания перечислитель не содержит текущего значения. Перечисление начинается с первого вызова Next(). Цикл перечисления выглядит так: while (enum1.Next()) Process1(enum1.Current()).

Изменения в контейнере не влияют на текущее состояние перечислителя. Если в перечне будет удалено текущее значение перечислителя, то оно по прежнему будет присутствовать в перечислителе, а следующим будет значение, которое было после текущего. Если будет удалено значение после текущего, то оно уже не будет перечислено. Если будет удалено значение перед текущим, то при повторном перечислении оно уже не будет перечислено.

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

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

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

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

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


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

typedef ValueT Type

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

 Enumerator (const Enumerator &Src)
 Конструктор копирования.
 ~Enumerator ()
 Деструктор.
Enumeratoroperator= (const Enumerator &Src)
 Оператор присвоения нового значения.
Enumeratoroperator++ ()
 Перейти к следующему эл-ту.
 operator bool () const
 Возвращает Enumerated().
bool operator! () const
 Возвращает !Enumerated().
const Typeoperator * () const
 Получить ссылку на текущее значение.
const Typeoperator-> () const
 Получить адрес текущего значения для доступа к его членам.
bool Enumerated () const
 Возвращает true - если идет перечисление, т.
bool CurrentAvailable () const
 Возвращает true - если текущее значение перечислителя можно использовать (оно инициализировано), иначе false.
const TypeCurrent () const
 Возвращает текущее значение перечислителя.
void ResetCurrent ()
 Сбросить текущее значение перечислителя.
bool Next ()
 При первом вызове после создания или сброса начинает перечисление.
void Reset ()
 Сбросить перечислитель в исходное состояние, аналогичное состоянию после создания перечислителя.

Защищенные члены

 Enumerator (Register *Reg, bool DynamicExpanded)
 Конструктор.
RegisterReg () const
 Указатель на перечень.
LinkedListItemBaseCurrentItem () const
 Указатель на текущий эл-т.
LinkedListItemBaseLastItem () const
 Указатель на последний перечисляемый эл-т или NULL если перечислитель динамически включающий.
void SetCurrentItem (LinkedListItemBase *Item)
 Установить указатель на текущий эл-т.
void SetLastItem (LinkedListItemBase *Item)
 Установить указатель на последний эл-т.

Друзья

class Register

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

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

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


Конструктор(ы)

template<typename ValueT, typename StoreT>
Cntm::Register< ValueT, StoreT >::Enumerator::Enumerator ( const Enumerator Src  )  [inline]

Конструктор копирования.

Создает точную копию перечислителя Src (полностью копирует его состояние: текущее значение Current() (если идет перечисление), текущую позицию, флаг Enumerated()).

Аргументы:
Src - исходный перечислитель.

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

template<typename ValueT, typename StoreT>
Cntm::Register< ValueT, StoreT >::Enumerator::~Enumerator (  )  [inline]

Деструктор.

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

template<typename ValueT, typename StoreT>
Cntm::Register< ValueT, StoreT >::Enumerator::Enumerator ( Register Reg,
bool  DynamicExpanded 
) [inline, protected]

Конструктор.

Используется перечнем для инициализации перечислителя.

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


Методы

template<typename ValueT, typename StoreT>
Cntm::Register< ValueT, StoreT >::Enumerator & Cntm::Register< ValueT, StoreT >::Enumerator::operator= ( const Enumerator Src  )  [inline]

Оператор присвоения нового значения.

Производит сброс перечислителя и присвоение нового состояния (см. конструктор копирования).

Аргументы:
Src - исходный перечислитель.

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

template<typename ValueT, typename StoreT = ValueT>
Enumerator& Cntm::Register< ValueT, StoreT >::Enumerator::operator++ (  )  [inline]

Перейти к следующему эл-ту.

Вызывает функцию Next(). См. функцию Next().

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

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

template<typename ValueT, typename StoreT = ValueT>
Cntm::Register< ValueT, StoreT >::Enumerator::operator bool (  )  const [inline]

Возвращает Enumerated().

См. флаг Enumerated().

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

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

template<typename ValueT, typename StoreT = ValueT>
bool Cntm::Register< ValueT, StoreT >::Enumerator::operator! (  )  const [inline]

Возвращает !Enumerated().

См. флаг Enumerated().

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

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

template<typename ValueT, typename StoreT = ValueT>
const Type& Cntm::Register< ValueT, StoreT >::Enumerator::operator * (  )  const [inline]

Получить ссылку на текущее значение.

См. Current().

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

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

template<typename ValueT, typename StoreT = ValueT>
const Type* Cntm::Register< ValueT, StoreT >::Enumerator::operator-> (  )  const [inline]

Получить адрес текущего значения для доступа к его членам.

См. Current().

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

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

template<typename ValueT, typename StoreT = ValueT>
bool Cntm::Register< ValueT, StoreT >::Enumerator::Enumerated (  )  const [inline]

Возвращает true - если идет перечисление, т.

е. перечисление было начато и не достигнут конец перечня, иначе false.

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

template<typename ValueT, typename StoreT = ValueT>
bool Cntm::Register< ValueT, StoreT >::Enumerator::CurrentAvailable (  )  const [inline]

Возвращает true - если текущее значение перечислителя можно использовать (оно инициализировано), иначе false.

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

template<typename ValueT, typename StoreT = ValueT>
const Type& Cntm::Register< ValueT, StoreT >::Enumerator::Current (  )  const [inline]

Возвращает текущее значение перечислителя.

Значение доступно только после первого вызова Next() и до тех пор, пока Next(), в том числе и первый, возвращает true. Значение Current() доступно, пока установлен флаг Enumerated().

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

template<typename ValueT, typename StoreT>
void Cntm::Register< ValueT, StoreT >::Enumerator::ResetCurrent (  )  [inline]

Сбросить текущее значение перечислителя.

После сброса текущее значение становится недоступным до следующего вызова Next(). При сбросе вызывается деструктор текущего значения. Сброс происходит, если текущее значение было инициализировано (если шло перечисление).

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

template<typename ValueT, typename StoreT>
bool Cntm::Register< ValueT, StoreT >::Enumerator::Next (  )  [inline]

При первом вызове после создания или сброса начинает перечисление.

Если в перечне есть хотя бы 1 эл-т, то Current() будет содержать первый эл-т, флаг Enumerated() и возвращаемое значение будут равны true. Если значений нет, то значение Current() неопределено, а флаг Enumerated() и возвращаемое значение будут равны false.

При последующих вызовах будет производится считывание следующих значений. Если будет достигнут конец перечня, то значение Current() будет неопределено, а флаг Enumerated() и возвращаемое значение будут равны false.

При возникновении исключений в конструкторе и деструкторе типа Type при инициализации текущего значения перечисление прекращается.

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

template<typename ValueT, typename StoreT>
void Cntm::Register< ValueT, StoreT >::Enumerator::Reset (  )  [inline]

Сбросить перечислитель в исходное состояние, аналогичное состоянию после создания перечислителя.

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

template<typename ValueT, typename StoreT = ValueT>
Register* Cntm::Register< ValueT, StoreT >::Enumerator::Reg (  )  const [inline, protected]

Указатель на перечень.

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

template<typename ValueT, typename StoreT = ValueT>
LinkedListItemBase* Cntm::Register< ValueT, StoreT >::Enumerator::CurrentItem (  )  const [inline, protected]

Указатель на текущий эл-т.

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

template<typename ValueT, typename StoreT = ValueT>
LinkedListItemBase* Cntm::Register< ValueT, StoreT >::Enumerator::LastItem (  )  const [inline, protected]

Указатель на последний перечисляемый эл-т или NULL если перечислитель динамически включающий.

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

template<typename ValueT, typename StoreT = ValueT>
void Cntm::Register< ValueT, StoreT >::Enumerator::SetCurrentItem ( LinkedListItemBase Item  )  [inline, protected]

Установить указатель на текущий эл-т.

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

template<typename ValueT, typename StoreT = ValueT>
void Cntm::Register< ValueT, StoreT >::Enumerator::SetLastItem ( LinkedListItemBase Item  )  [inline, protected]

Установить указатель на последний эл-т.

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


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

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

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


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