Add a flag for persistent mapping
[openal-soft.git] / Alc / ringbuffer.h
blobf764c20f1a0d078a5455ac672a180c755237ddec
1 #ifndef RINGBUFFER_H
2 #define RINGBUFFER_H
4 #include <stddef.h>
7 typedef struct ll_ringbuffer ll_ringbuffer_t;
8 typedef struct ll_ringbuffer_data {
9 char *buf;
10 size_t len;
11 } ll_ringbuffer_data_t;
13 ll_ringbuffer_t *ll_ringbuffer_create(size_t sz, size_t elem_sz);
14 void ll_ringbuffer_free(ll_ringbuffer_t *rb);
15 void ll_ringbuffer_reset(ll_ringbuffer_t *rb);
17 void ll_ringbuffer_get_read_vector(const ll_ringbuffer_t *rb, ll_ringbuffer_data_t *vec);
18 void ll_ringbuffer_get_write_vector(const ll_ringbuffer_t *rb, ll_ringbuffer_data_t *vec);
20 size_t ll_ringbuffer_read(ll_ringbuffer_t *rb, char *dest, size_t cnt);
21 size_t ll_ringbuffer_peek(ll_ringbuffer_t *rb, char *dest, size_t cnt);
22 void ll_ringbuffer_read_advance(ll_ringbuffer_t *rb, size_t cnt);
23 size_t ll_ringbuffer_read_space(const ll_ringbuffer_t *rb);
25 size_t ll_ringbuffer_write(ll_ringbuffer_t *rb, const char *src, size_t cnt);
26 void ll_ringbuffer_write_advance(ll_ringbuffer_t *rb, size_t cnt);
27 size_t ll_ringbuffer_write_space(const ll_ringbuffer_t *rb);
29 #endif /* RINGBUFFER_H */