46 template<COperationMode auto OperationMode>
50 template<CWriteDirection auto WriteDirection, COperationMode auto OperationMode>
108 inline void Reset() { UpdateWriteIndex(0); }
185 inline void Reset() { mIndex = { 0 }; }
189 mIndex = Base::IncrementIndex(mIndex);
196 mIndex = Base::IncrementIndex(mIndex);
202 mIndex = Base::DecrementIndex(mIndex);
209 mIndex = Base::DecrementIndex(mIndex);
215 return Base::GetOffset(mIndex,
offset);
237 AbstractRingWrap(
const AbstractRingWrap&) =
default;
238 AbstractRingWrap& operator=(
const AbstractRingWrap&) =
default;
252 AbstractRingWrap(
const AbstractRingWrap&) =
default;
253 AbstractRingWrap& operator=(
const AbstractRingWrap&) =
default;
261 template<CWriteDirection auto WriteDirection, COperationMode auto OperationMode>
275 return WrapBase::Wrap(index + 1u);
280 return WrapBase::Wrap((
int32_t(index) - 1));
288 return WrapBase::Wrap(index + WrapBase::mRing -
offset);
292 return WrapBase::Wrap(index + WrapBase::mRing +
offset);
uint32_t GetOffset(int32_t offset) const
Definition AbstractIndex.h:213
uint32_t GetRingSize() const
Definition AbstractIndex.h:183
AbstractRingIndex(uint32_t minSize)
Definition AbstractIndex.h:172
void Reset()
Definition AbstractIndex.h:185
Index GetCurrent() const
Definition AbstractIndex.h:184
uint32_t GetTotalSize() const
Get total size of the ring buffer.
Definition AbstractIndex.h:182
AbstractRingIndex(const AbstractRingIndex &)=default
uint32_t Index
Definition AbstractIndex.h:169
AbstractRingIndex & operator=(const AbstractRingIndex &)=default
Forward declaration.
Definition AbstractIndex.h:83
Index operator++()
Definition AbstractIndex.h:110
uint32_t GetRingSize() const
Definition AbstractIndex.h:106
AbstractRingIndex(uint32_t minSize)
Definition AbstractIndex.h:95
void Reset()
Definition AbstractIndex.h:108
uint32_t GetOffset(uint32_t offset) const
Get the index of the sample at an offset from the WriteIndex.
Definition AbstractIndex.h:141
Index GetCurrent() const
Definition AbstractIndex.h:107
Index operator--()
Definition AbstractIndex.h:125
uint32_t GetTotalSize() const
Get total size of the ring buffer including MaxWindow mirror length.
Definition AbstractIndex.h:105
AbstractRingIndex(const AbstractRingIndex &)=default
AbstractRingIndex & operator=(const AbstractRingIndex &)=default
Base class for Ring-like indexing operations.
Definition AbstractIndex.h:263
AbstarctRingBase & operator=(const AbstarctRingBase &)=default
uint32_t GetOffset(uint32_t index, uint32_t offset) const
Get the index of the sample at an offset from the WriteIndex.
Definition AbstractIndex.h:284
uint32_t GetMirrorIndex(uint32_t index, uint32_t maxWindow) const
Definition AbstractIndex.h:297
uint32_t IncrementIndex(uint32_t index) const
Definition AbstractIndex.h:273
AbstarctRingBase(const AbstarctRingBase &)=default
AbstarctRingBase(uint32_t minSize)
Definition AbstractIndex.h:268
uint32_t DecrementIndex(uint32_t index) const
Definition AbstractIndex.h:278
Base class that implements the wrap around logic for the OperationMode.
Definition AbstractIndex.h:47
Definition AbstractIndex.h:42
Definition AbstractIndex.h:43
EWriteDirection
Definition AbstractIndex.h:37
EOperationMode
Definition AbstractIndex.h:31
Definition AcousticMaterial.h:36
JPL_INLINE simd min(const simd &a, const simd &b) noexcept
Element-wise min.
Definition SIMD.h:1813
Definition ChannelMap.h:268
Definition AbstractIndex.h:89
uint32_t MirrorIndex
Definition AbstractIndex.h:91
uint32_t WriteIndex
Definition AbstractIndex.h:90