13#define DEFAULT_SIZE (4096)
35 if (b->
alloc == NULL) {
121 const uint8_t *data,
size_t len)
154 data = va_arg(ap,
const uint8_t *);
155 len = va_arg(ap,
size_t);
176 size_t offset,
const uint8_t *data,
size_t len)
180 if (offset > buffer->
length)
183 if (offset == buffer->
length)
190 memmove(buffer->
data + offset +
len,
191 buffer->
data + offset, buffer->
length - offset);
193 memcpy(buffer->
data + offset, data,
len);
209 size_t offset,
size_t len)
221 memmove(buffer->
data + offset, buffer->
data + offset +
len,
242 buffer->
alloc = temp;
parserutils_error parserutils_buffer_insert(parserutils_buffer *buffer, size_t offset, const uint8_t *data, size_t len)
Insert data into a memory buffer.
parserutils_error parserutils_buffer_randomise(parserutils_buffer *buffer)
parserutils_error parserutils_buffer_create(parserutils_buffer **buffer)
Create a memory buffer.
parserutils_error parserutils_buffer_destroy(parserutils_buffer *buffer)
Destroy a memory buffer.
static size_t get_offset(parserutils_buffer *buffer)
Get current data offset within buffer's allocation.
static parserutils_error ensure_space(parserutils_buffer *buffer, size_t len)
Ensure that the buffer has enough space at the end to add len bytes.
parserutils_error parserutils_buffer_append(parserutils_buffer *buffer, const uint8_t *data, size_t len)
Append data to a memory buffer.
parserutils_error parserutils_buffer_grow(parserutils_buffer *buffer)
Extend the amount of space allocated for a memory buffer.
static void try_rebase(parserutils_buffer *buffer)
Try moving the data to the start of the allocation.
parserutils_error parserutils_buffer_appendv(parserutils_buffer *buffer, size_t count,...)
Append multiple data blocks to a memory buffer.
parserutils_error parserutils_buffer_discard(parserutils_buffer *buffer, size_t offset, size_t len)
Discard a section of a memory buffer.