buffer.c File Reference

Go to the source code of this file.

Functions

ldns_bufferldns_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.
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.
void ldns_buffer_copy (ldns_buffer *result, ldns_buffer *from)
 Copy contents of the from buffer to the result buffer and then flips the result buffer.

Function Documentation

ldns_buffer* ldns_buffer_new ( size_t  capacity  ) 

creates a new buffer with the specified capacity.

Parameters:
[in] capacity the size (in bytes) to allocate for the buffer
Returns:
the created 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_buffer_invariant(), 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().

Parameters:
[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_buffer_invariant(), LDNS_STATUS_MEM_ERR, LDNS_STATUS_OK, and LDNS_XMALLOC.

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.

Parameters:
[in] buffer the buffer
[in] capacity the capacity to use
Returns:
whether this failed or succeeded

Definition at line 60 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_buffer_invariant(), 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.

Parameters:
[in] buffer the buffer
[in] amount amount to use
Returns:
whether this failed or succeeded

Definition at line 79 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_invariant(), 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 99 of file buffer.c.

References ldns_struct_buffer::_capacity, ldns_struct_buffer::_limit, ldns_struct_buffer::_position, ldns_struct_buffer::_status, ldns_buffer_current(), ldns_buffer_invariant(), ldns_buffer_remaining(), ldns_buffer_reserve(), ldns_buffer_status_ok(), LDNS_STATUS_INTERNAL_ERR, and LDNS_STATUS_MEM_ERR.

void ldns_buffer_free ( ldns_buffer buffer  ) 

frees the buffer.

Parameters:
[in] *buffer the buffer to be freed
Returns:
void

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.

Parameters:
[in] *buffer the buffer to be exported
Returns:
void

Definition at line 150 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().

Parameters:
[in] *buffer buffer to read from
Returns:
EOF on failure otherwise return the character

Definition at line 157 of file buffer.c.

References ldns_struct_buffer::_position, ldns_buffer_available_at(), ldns_buffer_limit(), ldns_buffer_read_u8(), and ldns_buffer_set_position().

void ldns_buffer_copy ( ldns_buffer result,
ldns_buffer from 
)

Copy contents of the from buffer to the result buffer and then flips the result buffer.

Data will be silently truncated if the result buffer is too small.

Parameters:
[out] *result resulting buffer which is copied to.
[in] *from what to copy to result.

Definition at line 168 of file buffer.c.

References ldns_buffer_begin(), ldns_buffer_capacity(), ldns_buffer_clear(), ldns_buffer_flip(), ldns_buffer_limit(), and ldns_buffer_write().


Generated on 21 Apr 2016 for ldns by  doxygen 1.6.1