#include <bit/buffer.h>
Inheritance diagram for bit::Buffer:

Although this class manages bit oriented buffers, it attempts to optimize for octet (byte) based buffers.
The methods pack, unpack and clear provide a means of extracting bit segments from the buffer.
Public Types | |
| typedef BitPointer< Buffer > | pointer |
| typedef BitPointer< Buffer > | pointer |
| typedef BitPointer< Buffer > | pointer |
Public Member Functions | |
| bool | unpack (void *mem, size_t mem_octets, Location mem_loc, size_t buf_offset_bits, size_t extract_bits) |
| Transfer data from the buffer area into the low order bits of a memory location. | |
| Data | unpack (size_t buf_offset_bits, size_t extract_bits, Location mem_loc=END) |
| template<typename T> | |
| bool | unpack (T &val, Location mem_loc, size_t buf_offset_bits, size_t extract_bits) |
| bool | pack (const void *mem, size_t mem_octets, Location mem_loc, size_t buf_offset, size_t buf_tgtsize, size_t n) |
| Transfer data from the low order bits of a memory location into the low order bits of a segment of the buffer area. | |
| bool | pack (Data d, size_t buf_offset, size_t buf_tgtsize, size_t n, Location mem_loc=END) |
| template<typename T> | |
| bool | pack (const T &val, Location mem_loc, size_t offset, size_t destsize, size_t n) |
| bool | clear_bits (size_t offset, size_t bits) |
| size_t | size_max () |
| Gets the maximum size this buffer is allowed to grow. | |
| void | set_size_max (size_t sizemax) |
| Sets the maximum size that this buffer is allowed to grow. | |
| virtual void | set_data (const void *newdata, size_t newsize, DataMode mode=COPY) throw (std::bad_alloc) |
| virtual bool | resize (size_t s) throw (std::bad_alloc) |
| sigc::signal< void > | signal_changed () |
| Signals a change to the data within the buffer. | |
| bool | unpack (void *mem, size_t mem_octets, Location mem_loc, size_t buf_offset_bits, size_t extract_bits) |
| Transfer data from the buffer area into the low order bits of a memory location. | |
| Data::pointer | unpack (size_t buf_offset_bits, size_t extract_bits, Location mem_loc=END) |
| template<typename T> | |
| bool | unpack (T &val, Location mem_loc, size_t buf_offset_bits, size_t extract_bits) |
| bool | pack (const void *mem, size_t mem_octets, Location mem_loc, size_t buf_offset, size_t buf_tgtsize, size_t n) |
| Transfer data from the low order bits of a memory location into the low order bits of a segment of the buffer area. | |
| bool | pack (Data::pointer d, size_t buf_offset, size_t buf_tgtsize, size_t n, Location mem_loc=END) |
| template<typename T> | |
| bool | pack (const T &val, Location mem_loc, size_t offset, size_t destsize, size_t n) |
| bool | clear_bits (size_t offset, size_t bits) |
| size_t | size_max () |
| Gets the maximum size this buffer is allowed to grow. | |
| void | set_size_max (size_t sizemax) |
| Sets the maximum size that this buffer is allowed to grow. | |
| virtual void | set_data (const void *newdata, size_t newsize, DataMode mode=COPY) throw (std::bad_alloc) |
| virtual bool | resize (size_t s) throw (std::bad_alloc) |
| sigc::signal< void > | signal_changed () |
| Signals a change to the data within the buffer. | |
| bool | unpack (void *mem, size_t mem_octets, Location mem_loc, size_t buf_offset_bits, size_t extract_bits) |
| Transfer data from the buffer area into the low order bits of a memory location. | |
| Data::pointer | unpack (size_t buf_offset_bits, size_t extract_bits, Location mem_loc=END) |
| template<typename T> | |
| bool | unpack (T &val, Location mem_loc, size_t buf_offset_bits, size_t extract_bits) |
| bool | pack (const void *mem, size_t mem_octets, Location mem_loc, size_t buf_offset, size_t buf_tgtsize, size_t n) |
| Transfer data from the low order bits of a memory location into the low order bits of a segment of the buffer area. | |
| bool | pack (Data::pointer d, size_t buf_offset, size_t buf_tgtsize, size_t n, Location mem_loc=END) |
| template<typename T> | |
| bool | pack (const T &val, Location mem_loc, size_t offset, size_t destsize, size_t n) |
| bool | clear_bits (size_t offset, size_t bits) |
| size_t | size_max () |
| Gets the maximum size this buffer is allowed to grow. | |
| void | set_size_max (size_t sizemax) |
| Sets the maximum size that this buffer is allowed to grow. | |
| virtual void | set_data (const void *newdata, size_t newsize, DataMode mode=COPY) throw (std::bad_alloc) |
| virtual bool | resize (size_t s) throw (std::bad_alloc) |
| sigc::signal< void > | signal_changed () |
| Signals a change to the data within the buffer. | |
Static Public Member Functions | |
| static pointer | create (size_t initial_size=0, size_t sizemax=0) |
| static pointer | create (void *data, size_t size, size_t sizemax=0, DataMode mode=COPY) |
| static pointer | create (size_t initial_size=0, size_t sizemax=0) |
| static pointer | create (void *data, size_t size, size_t sizemax=0, DataMode mode=COPY) |
| static pointer | create (size_t initial_size=0, size_t sizemax=0) |
| static pointer | create (void *data, size_t size, size_t sizemax=0, DataMode mode=COPY) |
Protected Member Functions | |
| Buffer (size_t initial_size=0, size_t sizemax=0) | |
| Construct a buffer of a given size that is allowed to dynamically grown as pack/unpack requests are made. | |
| Buffer (void *data, size_t size, size_t sizemax=0, DataMode mode=COPY) | |
| Construct a buffer that is a copy of external data. | |
| bool | clear_bits (size_t offset, size_t bits, bool suppress) |
| Utility method to clear bits and suppress calling the on_changed* methods. | |
| virtual void | on_data_changed () |
| Buffer (size_t initial_size=0, size_t sizemax=0) | |
| Construct a buffer of a given size that is allowed to dynamically grown as pack/unpack requests are made. | |
| Buffer (void *data, size_t size, size_t sizemax=0, DataMode mode=COPY) | |
| Construct a buffer that is a copy of external data. | |
| bool | clear_bits (size_t offset, size_t bits, bool suppress) |
| Utility method to clear bits and suppress calling the on_changed* methods. | |
| virtual void | on_data_changed () |
| Buffer (size_t initial_size=0, size_t sizemax=0) | |
| Construct a buffer of a given size that is allowed to dynamically grown as pack/unpack requests are made. | |
| Buffer (void *data, size_t size, size_t sizemax=0, DataMode mode=COPY) | |
| Construct a buffer that is a copy of external data. | |
| bool | clear_bits (size_t offset, size_t bits, bool suppress) |
| Utility method to clear bits and suppress calling the on_changed* methods. | |
| virtual void | on_data_changed () |
Protected Attributes | |
| size_t | m_size_max |
| bool bit::Buffer::unpack | ( | void * | mem, | |
| size_t | mem_octets, | |||
| Location | mem_loc, | |||
| size_t | buf_offset_bits, | |||
| size_t | extract_bits | |||
| ) |
Transfer data from the buffer area into the low order bits of a memory location.
| mem | The memory location to transfer buffer data into | |
| mem_octets | The size of the memory location in octets | |
| buf_offset_bits | The offset from the beginning of the buffer in bits to begin extraction from | |
| bits | The size of the data to extract in bits |
Memory Buffer ================================================== |000000000011111111112222222222333333333344444444| |012345678901234567890123456789012345678901234567| ================================================== ^ mem = start of memory address ^ mem_octets = 6 ^ ^ Resulting data ^ when mem_loc = END ^ Resulting data ^ when mem_loc = START
| bool bit::Buffer::pack | ( | const void * | mem, | |
| size_t | mem_octets, | |||
| Location | mem_loc, | |||
| size_t | buf_offset, | |||
| size_t | buf_tgtsize, | |||
| size_t | n | |||
| ) |
Transfer data from the low order bits of a memory location into the low order bits of a segment of the buffer area.
| mem | The memory location to transfer from | |
| mem_octets | The size of the memory location in octets | |
| buf_offset | The offset from the start of the data buffer in bits | |
| buf_tgtsize | The size of the target area in the buffer in bits | |
| n | The size of the data to extract in bits |
| offset | + | |
| destsize | are greater than the size of the buffer and the buffer cannot be expanded to accommodate the request zero is returned. |
Bit Buffer ================================================== |000000000011111111112222222222333333333344444444| |012345678901234567890123456789012345678901234567| ================================================== ^ buf_offset_bits = 14 ^ buf_tgtsize = 20 ^ ^ n = 10 ^ ^ cpy in ^
| void bit::Buffer::set_size_max | ( | size_t | sizemax | ) |
Sets the maximum size that this buffer is allowed to grow.
Note: if sizemax is set to a value less than the current buffer size the buffer will be truncated immediately.
| bool bit::Buffer::unpack | ( | void * | mem, | |
| size_t | mem_octets, | |||
| Location | mem_loc, | |||
| size_t | buf_offset_bits, | |||
| size_t | extract_bits | |||
| ) |
Transfer data from the buffer area into the low order bits of a memory location.
| mem | The memory location to transfer buffer data into | |
| mem_octets | The size of the memory location in octets | |
| buf_offset_bits | The offset from the beginning of the buffer in bits to begin extraction from | |
| bits | The size of the data to extract in bits |
Memory Buffer ================================================== |000000000011111111112222222222333333333344444444| |012345678901234567890123456789012345678901234567| ================================================== ^ mem = start of memory address ^ mem_octets = 6 ^ ^ Resulting data ^ when mem_loc = END ^ Resulting data ^ when mem_loc = START
| bool bit::Buffer::pack | ( | const void * | mem, | |
| size_t | mem_octets, | |||
| Location | mem_loc, | |||
| size_t | buf_offset, | |||
| size_t | buf_tgtsize, | |||
| size_t | n | |||
| ) |
Transfer data from the low order bits of a memory location into the low order bits of a segment of the buffer area.
| mem | The memory location to transfer from | |
| mem_octets | The size of the memory location in octets | |
| buf_offset | The offset from the start of the data buffer in bits | |
| buf_tgtsize | The size of the target area in the buffer in bits | |
| n | The size of the data to extract in bits |
| offset | + | |
| destsize | are greater than the size of the buffer and the buffer cannot be expanded to accommodate the request zero is returned. |
Bit Buffer ================================================== |000000000011111111112222222222333333333344444444| |012345678901234567890123456789012345678901234567| ================================================== ^ buf_offset_bits = 14 ^ buf_tgtsize = 20 ^ ^ n = 10 ^ ^ cpy in ^
| void bit::Buffer::set_size_max | ( | size_t | sizemax | ) |
Sets the maximum size that this buffer is allowed to grow.
Note: if sizemax is set to a value less than the current buffer size the buffer will be truncated immediately.
| bool bit::Buffer::unpack | ( | void * | mem, | |
| size_t | mem_octets, | |||
| Location | mem_loc, | |||
| size_t | buf_offset_bits, | |||
| size_t | extract_bits | |||
| ) |
Transfer data from the buffer area into the low order bits of a memory location.
| mem | The memory location to transfer buffer data into | |
| mem_octets | The size of the memory location in octets | |
| buf_offset_bits | The offset from the beginning of the buffer in bits to begin extraction from | |
| bits | The size of the data to extract in bits |
Memory Buffer ================================================== |000000000011111111112222222222333333333344444444| |012345678901234567890123456789012345678901234567| ================================================== ^ mem = start of memory address ^ mem_octets = 6 ^ ^ Resulting data ^ when mem_loc = END ^ Resulting data ^ when mem_loc = START
| bool bit::Buffer::pack | ( | const void * | mem, | |
| size_t | mem_octets, | |||
| Location | mem_loc, | |||
| size_t | buf_offset, | |||
| size_t | buf_tgtsize, | |||
| size_t | n | |||
| ) |
Transfer data from the low order bits of a memory location into the low order bits of a segment of the buffer area.
| mem | The memory location to transfer from | |
| mem_octets | The size of the memory location in octets | |
| buf_offset | The offset from the start of the data buffer in bits | |
| buf_tgtsize | The size of the target area in the buffer in bits | |
| n | The size of the data to extract in bits |
| offset | + | |
| destsize | are greater than the size of the buffer and the buffer cannot be expanded to accommodate the request zero is returned. |
Bit Buffer ================================================== |000000000011111111112222222222333333333344444444| |012345678901234567890123456789012345678901234567| ================================================== ^ buf_offset_bits = 14 ^ buf_tgtsize = 20 ^ ^ n = 10 ^ ^ cpy in ^
| void bit::Buffer::set_size_max | ( | size_t | sizemax | ) |
Sets the maximum size that this buffer is allowed to grow.
Note: if sizemax is set to a value less than the current buffer size the buffer will be truncated immediately.
1.5.1