#include <compound.hpp>
Граф наследования:compound_tlv_t:
Объекты compound_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_t & | tlv_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.
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] |
Возвращает ссылку на самого себя.
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 | Поток, из которого происходит чтение. |