Go to the source code of this file.
Functions | |
ldns_buffer * | ldns_buffer_new (size_t capacity) |
creates a new buffer with the specified capacity. | |
void | ldns_buffer_new_frm_data (ldns_buffer *buffer, void *data, size_t size) |
creates a buffer with the specified data. | |
void | ldns_buffer_clear (ldns_buffer *buffer) |
clears the buffer and make it ready for writing. | |
void | ldns_buffer_flip (ldns_buffer *buffer) |
makes the buffer ready for reading the data that has been written to the buffer. | |
void | ldns_buffer_rewind (ldns_buffer *buffer) |
make the buffer ready for re-reading the data. | |
bool | ldns_buffer_set_capacity (ldns_buffer *buffer, size_t capacity) |
changes the buffer's capacity. | |
bool | ldns_buffer_reserve (ldns_buffer *buffer, size_t amount) |
ensures BUFFER can contain at least AMOUNT more bytes. | |
int | ldns_buffer_printf (ldns_buffer *buffer, const char *format,...) |
prints to the buffer, increasing the capacity if required using buffer_reserve(). | |
void | ldns_buffer_free (ldns_buffer *buffer) |
frees the buffer. | |
void * | ldns_buffer_export (ldns_buffer *buffer) |
Makes the buffer fixed and returns a pointer to the data. | |
int | ldns_bgetc (ldns_buffer *buffer) |
returns the next character from a buffer. |
ldns_buffer* ldns_buffer_new | ( | size_t | capacity | ) |
creates a new buffer with the specified capacity.
[in] | capacity | the size (in bytes) to allocate for the buffer |
Definition at line 16 of file buffer.c.
References ldns_struct_buffer::_capacity, ldns_struct_buffer::_data, ldns_struct_buffer::_fixed, ldns_struct_buffer::_limit, ldns_struct_buffer::_position, ldns_struct_buffer::_status, LDNS_FREE, LDNS_MALLOC, LDNS_STATUS_OK, and LDNS_XMALLOC.
void ldns_buffer_new_frm_data | ( | ldns_buffer * | buffer, | |
void * | data, | |||
size_t | size | |||
) |
creates a buffer with the specified data.
The data IS copied and MEMORY allocations are done. The buffer is not fixed and can be resized using buffer_reserve().
[in] | buffer | pointer to the buffer to put the data in |
[in] | data | the data to encapsulate in the buffer |
[in] | size | the size of the data |
Definition at line 41 of file buffer.c.
References ldns_struct_buffer::_capacity, ldns_struct_buffer::_data, ldns_struct_buffer::_fixed, ldns_struct_buffer::_limit, ldns_struct_buffer::_position, ldns_struct_buffer::_status, LDNS_STATUS_OK, and LDNS_XMALLOC.
void ldns_buffer_clear | ( | ldns_buffer * | buffer | ) |
clears the buffer and make it ready for writing.
The buffer's limit is set to the capacity and the position is set to 0.
[in] | buffer | the buffer to clear |
Definition at line 56 of file buffer.c.
References ldns_struct_buffer::_capacity, ldns_struct_buffer::_limit, and ldns_struct_buffer::_position.
void ldns_buffer_flip | ( | ldns_buffer * | buffer | ) |
makes the buffer ready for reading the data that has been written to the buffer.
The buffer's limit is set to the current position and the position is set to 0.
[in] | buffer | the buffer to flip |
Definition at line 67 of file buffer.c.
References ldns_struct_buffer::_limit, and ldns_struct_buffer::_position.
void ldns_buffer_rewind | ( | ldns_buffer * | buffer | ) |
make the buffer ready for re-reading the data.
The buffer's position is reset to 0.
[in] | buffer | the buffer to rewind |
Definition at line 76 of file buffer.c.
References ldns_struct_buffer::_position.
bool ldns_buffer_set_capacity | ( | ldns_buffer * | buffer, | |
size_t | capacity | |||
) |
changes the buffer's capacity.
The data is reallocated so any pointers to the data may become invalid. The buffer's limit is set to the buffer's new capacity.
[in] | buffer | the buffer |
[in] | capacity | the capacity to use |
Definition at line 84 of file buffer.c.
References ldns_struct_buffer::_capacity, ldns_struct_buffer::_data, ldns_struct_buffer::_limit, ldns_struct_buffer::_position, ldns_struct_buffer::_status, LDNS_STATUS_MEM_ERR, and LDNS_XREALLOC.
bool ldns_buffer_reserve | ( | ldns_buffer * | buffer, | |
size_t | amount | |||
) |
ensures BUFFER can contain at least AMOUNT more bytes.
The buffer's capacity is increased if necessary using buffer_set_capacity().
The buffer's limit is always set to the (possibly increased) capacity.
[in] | buffer | the buffer |
[in] | amount | amount to use |
Definition at line 103 of file buffer.c.
References ldns_struct_buffer::_capacity, ldns_struct_buffer::_fixed, ldns_struct_buffer::_limit, ldns_struct_buffer::_position, ldns_struct_buffer::_status, ldns_buffer_set_capacity(), and LDNS_STATUS_MEM_ERR.
int ldns_buffer_printf | ( | ldns_buffer * | buffer, | |
const char * | format, | |||
... | ||||
) |
prints to the buffer, increasing the capacity if required using buffer_reserve().
The buffer's position is set to the terminating '\0'. Returns the number of characters written (not including the terminating '\0') or -1 on failure.
Definition at line 123 of file buffer.c.
References ldns_buffer_reserve(), LDNS_STATUS_INTERNAL_ERR, and LDNS_STATUS_MEM_ERR.
void ldns_buffer_free | ( | ldns_buffer * | buffer | ) |
frees the buffer.
[in] | *buffer | the buffer to be freed |
Definition at line 161 of file buffer.c.
References ldns_struct_buffer::_data, and LDNS_FREE.
void* ldns_buffer_export | ( | ldns_buffer * | buffer | ) |
Makes the buffer fixed and returns a pointer to the data.
The caller is responsible for free'ing the result.
[in] | *buffer | the buffer to be exported |
Definition at line 173 of file buffer.c.
References ldns_struct_buffer::_data, and ldns_struct_buffer::_fixed.
int ldns_bgetc | ( | ldns_buffer * | buffer | ) |
returns the next character from a buffer.
Advances the position pointer with 1. When end of buffer is reached returns EOF. This is the buffer's equivalent for getc().
[in] | *buffer | buffer to read from |
Definition at line 180 of file buffer.c.
References ldns_struct_buffer::_position.