generic circular buffer implementation in C
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Ondřej Hruška a6f31599c6 typo 10 years ago
LICENSE readme + lic 10 years ago
README.md readme + lic 10 years ago
circbuf.c typo 10 years ago
circbuf.h using size_t, peek with offset, better field names 10 years ago
matcher.c added Matcher and Meanbuf files 10 years ago
matcher.h added Matcher and Meanbuf files 10 years ago
meanbuf.c added Matcher and Meanbuf files 10 years ago
meanbuf.h added Matcher and Meanbuf files 10 years ago

README.md

Circular byte buffer

(and other buffers)

This is a circular buffer implementation, useful mainly for embedded systems (buffer for UART RX/TX queues etc).

It should be reliable with producent / consumer threads (no race conditions, as no length variable is used).

A Matching buffer, and Averaging buffer are also included—see their header files for instructions.

Usage

#include <stdint.h>
#include "circbuf.h"

circbuf_t cb; // buffer instance

void main()
{
	char c;
	cbuf_init(&cb, 32); // init the buffer
	
	// now it's ready for use!
	
	cbuf_write(&cb, 'A');
	
	if (cbuf_read(&cb, &c)) {
		printf("%c", c);
	}
	
	cbuf_deinit(&cb); // free the backing array (in embedded system you don't usually need to, allocate once and keep it)
}

Most functions return a success flag (true - success), so make sure to check the return values.

False is returned on buffer overflow / underflow. See the header file for details.