Шаблон класса compound_tlv_t

#include <compound.hpp>

Граф наследования:compound_tlv_t:

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

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

template<class Tag_type, class Tag_processor = default_tag_processor_t< Tag_type >, class Length_processor = default_length_processor_t< Tag_type >>
class oess_1::tlv::compound_tlv_t< Tag_type, Tag_processor, Length_processor >

TLV для сериализации составных объектов.

Объекты compound_tlv_t не могут копироваться.

Пример (см. oess_1::tlv::basic_string_tlv_t)
typedef oess_1::tlv::compound_tlv_t<oess_1::ushort_t > compound_t;
class my_compound_tlv_t :
  public compound_t
{
  private :
    oess_1::tlv::basic_string_tlv_t<
        oess_1::ushort, oess_1::char_t >
      m_member_1;
    oess_1::tlv::basic_string_tlv_t<
        oess_1::ushort, oess_1::char_t >
      m_member_2;
  public :
    my_compound_tlv_t() :
      compound_t( 0x01 ),
      m_member_1( 0x02 ),
      m_member_2( 0x03 )
    {
      tlv_add( 0x02, m_member_1 );
      tlv_add( 0x03, m_member_2 );
    }
};


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

typedef compound_tlv_t< Tag_type,
Tag_processor, Length_processor > 
self_t
 Tag_processor, Length_processor >.
typedef tlv_add_caller_t<
self_t
tlv_add_t
 данного составного TLV.

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

 compound_tlv_t (Tag_type id)
virtual default_tag_type_t tlv_tag () const
 Получить значение Tag.
void tlv_add (tlv_base_t &tlv)
 Добавить дочерний TLV.
void tlv_add (default_tag_type_t tag, tlv_base_t &tlv)
 Добавить дочерний TLV с указанным полем Tag.
void tlv_remove (default_tag_type_t tag)
 Изъять дочерний TLV с указанным полем Tag.
virtual size_t tlv_size () const
 Value).
virtual void tlv_unpack (oess_1::io::ibinstream_t &s, default_tag_type_t)
 Извлечение дочерних TLV из потока.
virtual void tlv_pack (oess_1::io::obinstream_t &s) const
 Запись TLV в выходной поток.
self_ttlv_self ()
 Возвращает ссылку на самого себя.

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

virtual void tlv_on_unexpected_tag (default_tag_type_t tag, oess_1::io::ibinstream_t &s)
 обнаружен во входном потоке.

Закрытые типы

typedef std::map< default_tag_type_t,
tlv_base_t * > 
tlv_map_t
 Тип словаря дочерних TLV.

Закрытые члены

void try_unpack_tlv (default_tag_type_t tag, oess_1::io::ibinstream_t &s)
 Попытка извлечь TLV из потока.

Закрытые данные

Tag_processor m_tag
 Значение поля Tag.
Length_processor m_length
 Обработчик поля Length.
tlv_map_t m_tlvs
 Дочерние TLV.

Классы

class  length_calc_t
 Предикат для std::for_each. Подробнее...
class  packer_t
 Предикат для std::for_each. Подробнее...


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

typedef tlv_add_caller_t< self_t > tlv_add_t

данного составного TLV.

Начиная с:
v.1.0.9


Методы

void tlv_add ( default_tag_type_t  tag,
tlv_base_t tlv 
) [inline]

Добавить дочерний TLV с указанным полем Tag.

Если в compound_tlv_t уже был описан TLV с таким Tag, то его описание меняется.

Данный метод предназначен для случаев, когда дочерний объект tlv должен обрабатывать TLV с иным Tag (т.е. tag != tlv.tlv_tag()).

Либо для случаев, когда объект tlv может работать с несколькими представлениями TLV, каждое из которых имеет собственное значение Tag.

Аргументы:
tag  Поле Tag для дочернего TLV.
tlv  Дочерний TLV. Указанный объект должен существовать все время, пока он описан в объекте compound_tlv_t.

void tlv_add ( tlv_base_t tlv  )  [inline]

Добавить дочерний TLV.

Если в compound_tlv_t уже был описан TLV Tag, равным tlv.tlv_tag(), то его описание меняется.

Аргументы:
tlv  Дочерний TLV. Указанный объект должен существовать все время, пока он описан в объекте compound_tlv_t.

virtual void tlv_on_unexpected_tag ( default_tag_type_t  tag,
oess_1::io::ibinstream_t s 
) [inline, protected, virtual]

обнаружен во входном потоке.

Реализация в базовом классе порождает исключение oess_1::io::physic_ex_t с кодом oess_1::tlv::err::c_unexpected_tag.

Аргументы:
tag  Поле Tag, извлеченное из потока.
s  Поток, из которого происходит чтение. Производные классы могут использовать данный аргумент для извлечения из потока значения TLV.

virtual void tlv_pack ( oess_1::io::obinstream_t s  )  const [inline, virtual]

Запись TLV в выходной поток.

Аргументы:
s  Поток, с текущей позиции которого будет осуществляться запись TLV.

Замещает tlv_base_t.

void tlv_remove ( default_tag_type_t  tag  )  [inline]

Изъять дочерний TLV с указанным полем Tag.

Отсутствие дочернего TLV ошибкой не считается.

Аргументы:
tag  Идентификатор изымаемого TLV.

self_t& tlv_self (  )  [inline]

Возвращает ссылку на самого себя.

Начиная с:
v.1.0.9
Предназначен для использования класса tlv_add_caller_t.

virtual void tlv_unpack ( oess_1::io::ibinstream_t s,
default_tag_type_t   
) [inline, virtual]

Извлечение дочерних TLV из потока.

Аргументы:
s  Поток, с текущей позиции которого будет осуществляться чтение полей Length и Value.

Замещает tlv_base_t.

void try_unpack_tlv ( default_tag_type_t  tag,
oess_1::io::ibinstream_t s 
) [inline, private]

Попытка извлечь TLV из потока.

Вызывается, когда из потока уже было извлечено поле Tag.

Аргументы:
tag  Поле Tag, извлеченное из потока.
s  Поток, из которого происходит чтение.


Объявления и описания членов класса находятся в файле:
Документация по ObjESSty. Последние изменения: Fri Oct 13 18:35:40 2006. Создано системой  doxygen 1.4.7
Hosted by uCoz