1/*
2 * Copyright 2004-2008, Fran��ois Revol, <revol@free.fr>.
3 * Distributed under the terms of the MIT License.
4 */
5#ifndef _RINGBUFF_H
6#define _RINGBUFF_H
7
8struct ring_buffer {
9	size_t size;
10	size_t current; /* index of next byte to read */
11	size_t avail;   /* number of bytes in */
12	unsigned char data[0];
13};
14
15void rb_init(struct ring_buffer *rb, size_t size);
16void rb_clear(struct ring_buffer *rb);
17size_t rb_can_write(struct ring_buffer *rb);
18size_t rb_can_read(struct ring_buffer *rb);
19size_t rb_write(struct ring_buffer *rb, void *data, size_t len);
20size_t rb_read(struct ring_buffer *rb, void *data, size_t len);
21
22#endif
23