From ef6bfb6dbfc5bf513a853a2dd6340adc6a6daa49 Mon Sep 17 00:00:00 2001 From: Forairaaaaa Date: Tue, 19 Mar 2024 18:23:19 +0800 Subject: [PATCH] add peek all with break --- src/utils/ring_buffer/ring_buffer.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/utils/ring_buffer/ring_buffer.h b/src/utils/ring_buffer/ring_buffer.h index 068ca21..e3f0f2a 100644 --- a/src/utils/ring_buffer/ring_buffer.h +++ b/src/utils/ring_buffer/ring_buffer.h @@ -122,6 +122,24 @@ namespace SmoothUIToolKit return true; } + bool peekAllWithBreak(std::function valueCallback) + { + if (isEmpty()) + return false; + + size_t peek_index = _data.r_index; + bool stop_peeking = false; + while (peek_index != _data.w_index) + { + valueCallback(_data.buffer[peek_index], stop_peeking); + peek_index = (peek_index + 1) % _data.capacity; + + if (stop_peeking) + break; + } + return true; + } + size_t valueNum() { if (isFull())