From d19917bba7dd7cef3b7bd6af54de10d7cfc479dd Mon Sep 17 00:00:00 2001 From: Imbus <> Date: Tue, 2 Jul 2024 05:50:47 +0200 Subject: [PATCH 1/2] Formatting --- ringbuf.h | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/ringbuf.h b/ringbuf.h index bd1626b..9938c8f 100644 --- a/ringbuf.h +++ b/ringbuf.h @@ -39,6 +39,7 @@ enum ReadResult { Empty, ReadOk }; /** Result of a read */ void rb_init(struct RingBuf *rb, rb_size_t capacity, ALLOC_T alloc, rb_size_t struct_size); + /** * @brief Insert data to the ring buffer * @param rb The ring buffer @@ -51,17 +52,17 @@ enum WriteResult rb_push_back(struct RingBuf *rb, const void *item, /** * @brief Insert multiple data to the ring buffer - * + * * @details This function is more efficient than calling rb_push_back multiple * times. It only advances the write head once, and attempts to write all the - * memory in one go. - * + * memory in one go. + * * If n is greater than the capacity, it will return Full. * If the full write will overflow, it will wrap around. - * + * * If the buffer is full, it will return Full and not write * anything. - * + * * @param rb The ring buffer * @param items The items to insert * @param memcpy_fn The memcpy function @@ -77,7 +78,8 @@ enum WriteResult rb_push_many(struct RingBuf *rb, const void *items, * @param item The item to read into * @return ReadResult */ -enum ReadResult rb_pop_front(struct RingBuf *rb, void *item, MEMCPY_T memcpy_fn); +enum ReadResult rb_pop_front(struct RingBuf *rb, void *item, + MEMCPY_T memcpy_fn); /** * @brief Free the ring buffer From 41f817fd5b7d3f9adbb9ce47c511d95fd1f7b7b8 Mon Sep 17 00:00:00 2001 From: Imbus <> Date: Tue, 2 Jul 2024 05:50:59 +0200 Subject: [PATCH 2/2] rb_clear initial --- ringbuf.c | 8 ++++++++ ringbuf.h | 7 +++++++ 2 files changed, 15 insertions(+) diff --git a/ringbuf.c b/ringbuf.c index 81c87c0..e3c7067 100644 --- a/ringbuf.c +++ b/ringbuf.c @@ -45,6 +45,14 @@ rb_destroy(struct RingBuf *rb, void(free)()) free(rb->buffer); } +void +rb_clear(struct RingBuf *rb) +{ + rb->count = 0; + rb->write_head = rb->buffer; + rb->read_head = rb->buffer; +} + enum WriteResult rb_push_back(struct RingBuf *rb, const void *item, MEMCPY_T memcpy_fn) { diff --git a/ringbuf.h b/ringbuf.h index 9938c8f..0117887 100644 --- a/ringbuf.h +++ b/ringbuf.h @@ -39,6 +39,13 @@ enum ReadResult { Empty, ReadOk }; /** Result of a read */ void rb_init(struct RingBuf *rb, rb_size_t capacity, ALLOC_T alloc, rb_size_t struct_size); +/** + * @brief Clear the ring buffer + * @details This function will reset the read and write heads to the beginning + * of the buffer, and set the count to 0. It will not free the buffer. + * @param rb The ring buffer + */ +void rb_clear(struct RingBuf *rb); /** * @brief Insert data to the ring buffer