[common] ringbuffer: add pre value overwrite callback

This allows us to set a callback to read a value out before it's about
to be overwritten which can be useful for things like calculating a
running average.
This commit is contained in:
Geoffrey McRae
2021-07-18 20:42:29 +10:00
parent 42d8f31eba
commit 45e1b5bce0
2 changed files with 25 additions and 1 deletions

View File

@@ -24,6 +24,7 @@
typedef struct RingBuffer * RingBuffer;
RingBuffer ringbuffer_new(int length, size_t valueSize);
void ringbuffer_free(RingBuffer * rb);
void ringbuffer_push(RingBuffer rb, const void * value);
void ringbuffer_reset(RingBuffer rb);
@@ -33,6 +34,12 @@ int ringbuffer_getStart (const RingBuffer rb);
int ringbuffer_getCount (const RingBuffer rb);
void * ringbuffer_getValues(const RingBuffer rb);
typedef void (*RingBufferValueFn)(void * value, void * udata);
// set a function to call before a value is about to be overwritten
void ringbuffer_setPreOverwriteFn(RingBuffer rb, RingBufferValueFn fn,
void * udata);
typedef bool (*RingBufferIterator)(int index, void * value, void * udata);
void ringbuffer_forEach(const RingBuffer rb, RingBufferIterator fn,
void * udata);