PebbleOS
Loading...
Searching...
No Matches
Data Structures | Functions
Linear buffer

Append-only byte buffer with its storage after the header. More...

Data Structures

struct  pbl_buffer
 Linear byte buffer. More...
 

Functions

void pbl_buffer_init (struct pbl_buffer *buffer, size_t capacity)
 Initialize an empty buffer.
 
size_t pbl_buffer_add (struct pbl_buffer *buffer, const void *data, size_t length)
 Append data to the buffer.
 
size_t pbl_buffer_remove (struct pbl_buffer *buffer, size_t offset, size_t length)
 Remove bytes from the buffer, closing the gap.
 
void pbl_buffer_clear (struct pbl_buffer *buffer)
 Empty the buffer.
 

Detailed Description

Append-only byte buffer with its storage after the header.

struct pbl_buffer *buf = malloc(sizeof(struct pbl_buffer) + 64);
pbl_buffer_init(buf, 64);
pbl_buffer_add(buf, &hdr, sizeof(hdr));
Linear byte buffer.
Definition buffer.h:24
size_t pbl_buffer_add(struct pbl_buffer *buffer, const void *data, size_t length)
Append data to the buffer.
void pbl_buffer_init(struct pbl_buffer *buffer, size_t capacity)
Initialize an empty buffer.

Data Structure Documentation

◆ pbl_buffer

struct pbl_buffer

Linear byte buffer.

Allocate sizeof(struct pbl_buffer) plus the capacity.

Data Fields
size_t bytes_written Bytes used in data.
uint8_t data[] Storage.
size_t length Capacity of data in bytes.

Function Documentation

◆ pbl_buffer_add()

size_t pbl_buffer_add ( struct pbl_buffer *  buffer,
const void *  data,
size_t  length 
)

Append data to the buffer.

Parameters
bufferBuffer.
dataData, not NULL.
lengthNumber of bytes, not 0.
Returns
length, or 0 if the data does not fit (nothing is added).

◆ pbl_buffer_clear()

void pbl_buffer_clear ( struct pbl_buffer *  buffer)

Empty the buffer.

Parameters
bufferBuffer.

◆ pbl_buffer_init()

void pbl_buffer_init ( struct pbl_buffer *  buffer,
size_t  capacity 
)

Initialize an empty buffer.

Parameters
[out]bufferBuffer.
capacityNumber of bytes available after the header.

◆ pbl_buffer_remove()

size_t pbl_buffer_remove ( struct pbl_buffer *  buffer,
size_t  offset,
size_t  length 
)

Remove bytes from the buffer, closing the gap.

Parameters
bufferBuffer.
offsetOffset of the first byte to remove.
lengthNumber of bytes to remove; the range must be within the used bytes.
Returns
length.