/home/runner/work/HiCR/HiCR/include/hicr/frontends/channel/circularBuffer.hpp Source File
HiCR
|
circularBuffer.hpp
Go to the documentation of this file.
52 CircularBuffer(size_t capacity, __volatile__ size_t *headAdvanceCounter, __volatile__ size_t *tailAdvanceCounter)
72 [[nodiscard]] __INLINE__ size_t getHeadPosition() const noexcept { return *_headAdvanceCounter % _capacity; }
85 [[nodiscard]] __INLINE__ size_t getTailPosition() const noexcept { return *_tailAdvanceCounter % _capacity; }
103 HICR_THROW_FATAL("New buffer depth (_depth (%lu) + n (%lu) = %lu) exceeded capacity (%lu) on increase. This is probably a bug in HiCR.\n", curDepth, n, newDepth, _capacity);
122 HICR_THROW_FATAL("Circular buffer depth (%lu) smaller than number of elements (%lu) to decrease on advance tail. This is probably a bug in HiCR.\n", curDepth, n);
148 [[nodiscard]] __INLINE__ size_t getDepth() const noexcept { return calculateDepth(*_headAdvanceCounter, *_tailAdvanceCounter); }
168 [[nodiscard]] __INLINE__ bool isEmpty() const noexcept { return *_headAdvanceCounter == *_tailAdvanceCounter; }
195 __INLINE__ static size_t calculateDepth(const size_t headAdvanceCounter, const size_t tailAdvanceCounter)
199 HICR_THROW_FATAL("Head index (%lu) < tail index (%lu). This is a critical bug in HiCR!\n", headAdvanceCounter, tailAdvanceCounter);
Generic class type for circular buffer.
Definition circularBuffer.hpp:42
__INLINE__ bool isEmpty() const noexcept
Definition circularBuffer.hpp:168
__INLINE__ size_t getCapacity() const noexcept
Definition circularBuffer.hpp:135
__INLINE__ size_t getDepth() const noexcept
Definition circularBuffer.hpp:148
static __INLINE__ size_t calculateDepth(const size_t headAdvanceCounter, const size_t tailAdvanceCounter)
Definition circularBuffer.hpp:195
__INLINE__ size_t getTailPosition() const noexcept
Definition circularBuffer.hpp:85
__INLINE__ void advanceHead(const size_t n=1)
Definition circularBuffer.hpp:93
CircularBuffer(size_t capacity, __volatile__ size_t *headAdvanceCounter, __volatile__ size_t *tailAdvanceCounter)
Definition circularBuffer.hpp:52
__INLINE__ void advanceTail(const size_t n=1)
Definition circularBuffer.hpp:115
__INLINE__ bool isFull() const noexcept
Definition circularBuffer.hpp:158
__INLINE__ size_t getHeadPosition() const noexcept
Definition circularBuffer.hpp:72
Provides a failure model and corresponding exception classes.
Generated by