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 9 years ago
LICENSE readme + lic 9 years ago
README.md readme + lic 9 years ago
circbuf.c typo 9 years ago
circbuf.h using size_t, peek with offset, better field names 9 years ago
matcher.c added Matcher and Meanbuf files 9 years ago
matcher.h added Matcher and Meanbuf files 9 years ago
meanbuf.c added Matcher and Meanbuf files 9 years ago
meanbuf.h added Matcher and Meanbuf files 9 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.