This repository has been archived on 2017-07-22. You can view files and clone it, but cannot push or open issues/pull-requests.
jlsampler/jl_ringbuf.h

39 lines
1.1 KiB
C

/*****************************************************************************
* VERSION: 1.01
* 2015-08-29
*
* Single producer, single consumer ring buffer.
*****************************************************************************/
#ifndef JLLIB_RINGBUF_HEADER_
#define JLLIB_RINGBUF_HEADER_
#include <stdbool.h>
#include <jack/ringbuffer.h>
#include "jl_mem.h"
typedef struct RingBuffer RingBuffer;
// Create a new RingBuffer with the given capacity.
RingBuffer *jlrb_new(int size);
// Free the buffer. Note that the items in the buffer must be freed by the
// caller before the buffer is freed.
void jlrb_free(RingBuffer ** rb);
// Return the total capacity of the buffer.
int jlrb_size(RingBuffer * rb);
// Return the number of items currently in the buffer.
int jlrb_count(RingBuffer * rb);
// Put the given data into the buffer. The return value is true if the put was
// successful, and false if there wasn't room.
bool jlrb_put(RingBuffer * rb, void *data);
// Return the next item in the buffer. Returns NULL if there was no item
// available.
void *jlrb_get(RingBuffer * rb);
#endif // JLLIB_RINGBUF_HEADER_