This file contains the definition of ldns_buffer, and functions to manipulate those. More...
Go to the source code of this file.
Data Structures | |
struct | ldns_struct_buffer |
implementation of buffers to ease operations More... | |
Macros | |
#define | LDNS_MIN_BUFLEN 512 |
number of initial bytes in buffer of which we cannot tell the size before hand More... | |
Typedefs | |
typedef struct ldns_struct_buffer | ldns_buffer |
Functions | |
ldns_buffer * | ldns_buffer_new (size_t capacity) |
creates a new buffer with the specified capacity. More... | |
void | ldns_buffer_new_frm_data (ldns_buffer *buffer, const void *data, size_t size) |
creates a buffer with the specified data. More... | |
signed char | ldns_buffer_set_capacity (ldns_buffer *buffer, size_t capacity) |
changes the buffer's capacity. More... | |
signed char | ldns_buffer_reserve (ldns_buffer *buffer, size_t amount) |
ensures BUFFER can contain at least AMOUNT more bytes. More... | |
int | ldns_buffer_printf (ldns_buffer *buffer, const char *format,...) |
prints to the buffer, increasing the capacity if required using buffer_reserve(). More... | |
void | ldns_buffer_free (ldns_buffer *buffer) |
frees the buffer. More... | |
void * | ldns_buffer_export (ldns_buffer *buffer) |
Makes the buffer fixed and returns a pointer to the data. More... | |
void | ldns_buffer_copy (ldns_buffer *result, const ldns_buffer *from) |
Copy contents of the from buffer to the result buffer and then flips the result buffer. More... | |
This file contains the definition of ldns_buffer, and functions to manipulate those.
Definition in file buffer.h.
#define LDNS_MIN_BUFLEN 512 |
typedef struct ldns_struct_buffer ldns_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, |
const 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_MEM_ERR, LDNS_STATUS_OK, and LDNS_XMALLOC.
signed char 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 |
signed char 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 |
int ldns_buffer_printf | ( | ldns_buffer * | buffer, |
const char * | format, | ||
... | |||
) |
void ldns_buffer_free | ( | ldns_buffer * | buffer | ) |
frees the buffer.
[in] | *buffer | the buffer to be freed |
Definition at line 137 of file buffer.c.
References ldns_struct_buffer::_data, ldns_struct_buffer::_fixed, 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 150 of file buffer.c.
References ldns_struct_buffer::_data, and ldns_struct_buffer::_fixed.
void ldns_buffer_copy | ( | ldns_buffer * | result, |
const ldns_buffer * | from | ||
) |