PixelKey
NeoPixel USB Key
Loading...
Searching...
No Matches
Ring Buffer Internals

Simple ring buffer for queues. More...

Functions

void ring_buffer_init (ring_buffer_t *p_buffer, void *ptr_array, size_t length)
 Initialize a ring buffer. More...
 
void * ring_buffer_peek (ring_buffer_t *p_buffer)
 Gets a pointer to the next element in the buffer without removing it. More...
 
bool ring_buffer_pop (ring_buffer_t *p_buffer, void **p_element)
 Removes an element from the ring buffer. More...
 
bool ring_buffer_push (ring_buffer_t *p_buffer, void *p_element)
 Pushes a value onto the ring buffer. More...
 
bool ring_buffer_is_empty (ring_buffer_t *p_buffer)
 Gets whether or not the ring buffer is empty. More...
 
size_t ring_buffer_count (ring_buffer_t *p_buffer)
 Get the number of elements currently in the ring buffer. More...
 

Detailed Description

Simple ring buffer for queues.

Function Documentation

◆ ring_buffer_count()

size_t ring_buffer_count ( ring_buffer_t p_buffer)

Get the number of elements currently in the ring buffer.

Parameters
[in]p_bufferPointer to the ring buffer control struct.
Returns
Number of elements.

◆ ring_buffer_init()

void ring_buffer_init ( ring_buffer_t p_buffer,
void *  ptr_array,
size_t  length 
)

Initialize a ring buffer.

Parameters
[in]p_bufferPointer to ring buffer control struct.
[in]ptr_arrayArray of pointers used as the backing store for the ring buffer.
lengthNumber of elements available in ptr_array.

◆ ring_buffer_is_empty()

bool ring_buffer_is_empty ( ring_buffer_t p_buffer)

Gets whether or not the ring buffer is empty.

Parameters
[in]p_bufferPointer to the ring buffer control struct.
Returns
true on empty, false otherwise.

◆ ring_buffer_peek()

void * ring_buffer_peek ( ring_buffer_t p_buffer)

Gets a pointer to the next element in the buffer without removing it.

Parameters
[in]p_bufferPointer to the ring buffer control struct.
Returns
The pointer to the next element, or NULL if the buffer is empty.

◆ ring_buffer_pop()

bool ring_buffer_pop ( ring_buffer_t p_buffer,
void **  p_element 
)

Removes an element from the ring buffer.

Parameters
[in]p_bufferPointer to the ring buffer control struct.
[out]p_elementPointer to copy the element's value to.
Returns
true on success, false if the buffer is empty.

◆ ring_buffer_push()

bool ring_buffer_push ( ring_buffer_t p_buffer,
void *  p_element 
)

Pushes a value onto the ring buffer.

Parameters
[in]p_bufferPointer to the ring buffer control struct.
[in]p_elementPointer to the element to push.
Returns
true on success, false if no room is available.