Main Page | Data Structures | Directories | File List | Data Fields | Globals | Related Pages

buffer.h File Reference

Go to the source code of this file.

Data Structures

struct  ldns_struct_buffer
 LDNS implementation of buffers to ease operations. More...

Defines

#define LDNS_MIN_BUFLEN   256
 number of initial bytes in buffer of which we cannot tell the size before hand

Typedefs

typedef ldns_struct_buffer ldns_buffer

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.
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.


Define Documentation

#define LDNS_MIN_BUFLEN   256
 

number of initial bytes in buffer of which we cannot tell the size before hand

Definition at line 29 of file buffer.h.


Typedef Documentation

typedef struct ldns_struct_buffer ldns_buffer
 

Definition at line 54 of file buffer.h.


Function Documentation

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.

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

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.

Parameters:
[in] buffer the buffer to flip
Returns:
void

void ldns_buffer_free ldns_buffer buffer  ) 
 

frees the buffer.

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

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

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

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.

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.

void ldns_buffer_rewind ldns_buffer buffer  ) 
 

make the buffer ready for re-reading the data.

The buffer's position is reset to 0.

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.


Generated on Wed Jan 25 08:46:59 2006 for ldns by  doxygen 1.3.9.1