38template<
typename BufferType>
72 Buffers[0] = Buffers[1] = Buffers[2] = BufferType();
89 Buffers[0] = Buffers[1] = Buffers[2] =
InValue;
106 Flags = EBufferFlag::Initial | EBufferFlag::Dirty;
128 return ((
Flags & EBufferFlag::Dirty) != 0);
139 return Buffers[
Flags & EBufferFlag::ReaderMask];
174 return Buffers[(
Flags & EBufferFlag::WriterMask) >> EBufferFlag::WriterShift];
201 Buffers[(
Flags & EBufferFlag::WriterMask) >> EBufferFlag::WriterShift] =
Value;
209 Flags = EBufferFlag::Initial;
242 Buffers =
new BufferType[3];
243 Flags = EBufferFlag::Initial;
252 return ((
Flags & EBufferFlag::ReaderMask) << 4) | ((
Flags & EBufferFlag::TempMask) >> 4) | (
Flags & EBufferFlag::WriterMask);
258 return ((
Flags & EBufferFlag::TempMask) >> 2) | ((
Flags & EBufferFlag::WriterMask) << 2) | (
Flags & EBufferFlag::ReaderMask) | EBufferFlag::Dirty;
ENoInit
Definition CoreMiscDefines.h:158
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
Definition TripleBuffer.h:40
void Reset()
Definition TripleBuffer.h:207
~TTripleBuffer()
Definition TripleBuffer.h:111
TTripleBuffer()
Definition TripleBuffer.h:69
void SwapReadBuffers()
Definition TripleBuffer.h:149
BufferType & Read()
Definition TripleBuffer.h:137
void SwapWriteBuffers()
Definition TripleBuffer.h:182
void Write(const BufferType Value)
Definition TripleBuffer.h:199
bool IsDirty() const
Definition TripleBuffer.h:126
const BufferType & SwapAndRead()
Definition TripleBuffer.h:219
TTripleBuffer(ENoInit)
Definition TripleBuffer.h:76
TTripleBuffer(const BufferType &InValue)
Definition TripleBuffer.h:86
BufferType & GetWriteBuffer()
Definition TripleBuffer.h:172
TTripleBuffer(BufferType(&InBuffers)[3])
Definition TripleBuffer.h:103
void WriteAndSwap(const BufferType Value)
Definition TripleBuffer.h:231
void Initialize()
Definition TripleBuffer.h:240
static UE_FORCEINLINE_HINT void MemoryBarrier()
Definition AndroidPlatformMisc.h:249