Name

fifo — first-in, first-out queue.

Synopsis

#include <fifo.h>
    
fifo_t * fifo_new ( size_t size,
  size_t initial,
  size_t maximum);
 
void fifo_destroy ( fifo_t * fifo);
 
int fifo_enqueue ( fifo_t * fifo,
  const void * item);
 
int fifo_dequeue ( fifo_t * fifo,
  void * item);
 
size_t fifo_peak ( const fifo_t * fifo);
 

DESCRIPTION

An enqueue/dequeue FIFO implemented on a dynamic ring-buffer, the data being items of a fixed size passed to the constructor, fifo_create along with the initial size of the stack (in items) and the maximum size of the stack (zero for unlimited).

The fifo_enqueue function copies item onto the end of the queue, and likewise fifo_dequeue copies from the head to item.

The fifo_peak function returns the peak size of the fifo (in number of items).

EXAMPLE

Enqueue ten integers, then dequeue and print them

fifo_t *f = fifo_new(sizeof(int), 0, 0);

for (int i = 0 ; i < 10 ; i++)
  fifo_enqueue(f, &i);

int k;

while (fifo_dequeue(f, &k) == FIFO_OK)
  printf("%d ", k);

RETURN VALUE

Functions returning an integer return zero on success and non-zero on error. For fifo_dequeue the return value is the value FIFO_EMPTY if the FIFO is empty, FIFO_USERMAX if the maximum specified in the constructor is exceeded, or FIFO_ERROR in the case of other error.

AUTHOR

J.J. Green.