UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ModuloCircularBuffer.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "Containers/Array.h"
7
8namespace UE::TimeManagement
9{
16template<typename T, typename TAllocator = FDefaultAllocator>
18{
19public:
20
21 explicit TModuloCircularBuffer(SIZE_T InNumSamples) { Data.SetNumUninitialized(InNumSamples); }
22
24 void Add(const T& InItem)
25 {
26 Data[NextIndexToInsert] = InItem;
27 bIsBufferFull |= NextIndexToInsert == Data.Num() - 1;
28 NextIndexToInsert = (NextIndexToInsert + 1) % Data.Num();
29 }
30
32 const T* GetNextReplacedItem() const
33 {
34 return bIsBufferFull ? &Data[NextIndexToInsert] : nullptr;
35 }
36
39 {
40 return Data.Num();
41 }
42
44 SIZE_T Num() const
45 {
46 return bIsBufferFull ? Capacity() : NextIndexToInsert;
47 }
49 bool IsEmpty() const
50 {
51 return !bIsBufferFull && NextIndexToInsert == 0;
52 }
53
55 bool IsFull() const
56 {
57 return bIsBufferFull;
58 }
59
62 {
63 return bIsBufferFull ? TConstArrayView<T>(Data.GetData(), Data.Num()) : TConstArrayView<T>(Data.GetData(), NextIndexToInsert);
64 }
65
66private:
67
69
71 bool bIsBufferFull = false;
73 SIZE_T NextIndexToInsert = 0;
74};
75}
FPlatformTypes::SIZE_T SIZE_T
An unsigned integer the same size as a pointer, the same as UPTRINT.
Definition Platform.h:1150
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
Definition Array.h:670
Definition ModuloCircularBuffer.h:18
TConstArrayView< T > AsUnorderedView() const
Definition ModuloCircularBuffer.h:61
bool IsEmpty() const
Definition ModuloCircularBuffer.h:49
TModuloCircularBuffer(SIZE_T InNumSamples)
Definition ModuloCircularBuffer.h:21
bool IsFull() const
Definition ModuloCircularBuffer.h:55
SIZE_T Num() const
Definition ModuloCircularBuffer.h:44
const T * GetNextReplacedItem() const
Definition ModuloCircularBuffer.h:32
SIZE_T Capacity() const
Definition ModuloCircularBuffer.h:38
void Add(const T &InItem)
Definition ModuloCircularBuffer.h:24
Definition TimecodeEstimator.cpp:12