#include <fixed_mem_buf.hpp>
Граф наследования:ifixed_mem_buf_t:
Реализация интерфейса obinstream_t для буфера памяти фиксированного размера.
Объект этого класса использует существующий буфер, указатель на который получает в конструкторе.
Объект ifixed_mem_buf_t не уничтожает буфер в своем деструкторе.
Считается, что весь буфер заполнен реальными данными. Можно изменять только текущую позицию в буфере.
Открытые члены | |
ifixed_mem_buf_t (const oess_1::char_t *buf, size_t capacity) | |
size_t | capacity () const |
Емкость буфера. | |
virtual size_t | size () const |
Объем данных в буфере. | |
virtual size_t | pos () const |
очередная операция чтения. | |
void | set_pos (size_t pos) |
очередная операци чтения. | |
virtual bool | eof () const |
Возвращает true, если pos() == capacity(). | |
const oess_1::char_t * | ptr () const |
Указатель на начало всего буфера. | |
const oess_1::char_t * | current_ptr () const |
Указатель на текущую позицию в буфере. | |
Защищенные члены | |
virtual const oess_1::char_t * | in_reserve (size_t item_count, size_t item_size, size_t &item_available) |
Реализация метода из базового класса. | |
virtual void | in_shift (size_t item_count, size_t item_size) |
Реализация метода из базового класса. | |
Закрытые члены | |
ifixed_mem_buf_t (const ifixed_mem_buf_t &) | |
Защита от копирования. | |
ifixed_mem_buf_t & | operator= (const ifixed_mem_buf_t &) |
Защита от копирования. | |
Закрытые данные | |
const oess_1::char_t * | m_buf |
Буфер, из которого происходит чтение данных. | |
size_t | m_capacity |
Емкость буфера. | |
size_t | m_pos |
Текущая позиция в буфере. |
ifixed_mem_buf_t | ( | const oess_1::char_t * | buf, | |
size_t | capacity | |||
) |
buf | Буфер, из которого осуществляется чтение данных. Буфер должен существовать все время, пока существует объект ifixed_mem_buf_t. |
capacity | Емкость буфера в байтах. |
size_t capacity | ( | ) | const |
Емкость буфера.
const oess_1::char_t * in_reserve | ( | size_t | item_count, | |
size_t | item_size, | |||
size_t & | item_available | |||
) | [protected, virtual] |
Реализация метода из базового класса.
Если нет достаточного объема данных для чтения хотя бы одного элемента, то порождается исключение.
item_count | Количество элементов, которые нужно прочитать. |
item_size | Размер одного элемента в байтах. |
item_available | Количество элементов, доступных по возвращенному указателю. |
Замещает ibinbuffer_t.
void in_shift | ( | size_t | item_count, | |
size_t | item_size | |||
) | [protected, virtual] |
Реализация метода из базового класса.
item_count | Количество успешно прочитанных элементов. |
item_size | Размер одного элемента в байтах. |
Замещает ibinbuffer_t.
void set_pos | ( | size_t | pos | ) |
очередная операци чтения.
Операция выполняется только, если pos меньше, чем capacity().
size_t size | ( | ) | const [virtual] |
Объем данных в буфере.
Замещает ibinbuffer_t.
size_t m_capacity [private] |
Емкость буфера.
Задается в конструкторе.