UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
FUniqueBuffer Class Reference

#include <SharedBuffer.h>

Public Member Functions

 FUniqueBuffer ()=default
 
CORE_API FUniqueBuffer (FBufferOwner *Owner)
 
 FUniqueBuffer (FUniqueBuffer &&)=default
 
FUniqueBufferoperator= (FUniqueBuffer &&)=default
 
 FUniqueBuffer (const FUniqueBuffer &)=delete
 
FUniqueBufferoperator= (const FUniqueBuffer &)=delete
 
CORE_API void Reset ()
 
voidGetData ()
 
const voidGetData () const
 
uint64 GetSize () const
 
FMutableMemoryView GetView ()
 
FMemoryView GetView () const
 
 operator FMutableMemoryView ()
 
 operator FMemoryView () const
 
 operator bool () const
 
bool IsNull () const
 
bool IsOwned () const
 
CORE_API FUniqueBuffer MakeOwned () &&
 
bool IsMaterialized () const
 
CORE_API void Materialize () const
 
CORE_API FSharedBuffer MoveToShared ()
 
bool operator== (const FUniqueBuffer &BufferB) const
 
bool operator!= (const FUniqueBuffer &BufferB) const
 

Static Public Member Functions

static CORE_API FUniqueBuffer Alloc (uint64 Size)
 
static CORE_API FUniqueBuffer AllocZeroed (uint64 Size)
 
static CORE_API FUniqueBuffer Clone (FMemoryView View)
 
static CORE_API FUniqueBuffer Clone (const void *Data, uint64 Size)
 
static CORE_API FUniqueBuffer MakeView (FMutableMemoryView View)
 
static CORE_API FUniqueBuffer MakeView (void *Data, uint64 Size)
 
template<typename DeleteFunctionType , decltype(Invoke(std::declval< DeleteFunctionType >(), std::declval< void * >())) * = nullptr>
static FUniqueBuffer TakeOwnership (void *Data, uint64 Size, DeleteFunctionType &&DeleteFunction)
 
template<typename DeleteFunctionType , decltype(Invoke(std::declval< DeleteFunctionType >(), std::declval< void * >(), std::declval< uint64 >())) * = nullptr>
static FUniqueBuffer TakeOwnership (void *Data, uint64 Size, DeleteFunctionType &&DeleteFunction)
 

Friends

class FSharedBuffer
 
const FOwnerPtrType & ToPrivateOwnerPtr (const FUniqueBuffer &Buffer)
 
FOwnerPtrType ToPrivateOwnerPtr (FUniqueBuffer &&Buffer)
 
uint32 GetTypeHash (const FUniqueBuffer &Buffer)
 

Detailed Description

A reference to a single-ownership mutable buffer.

Ownership can be transferred by moving to FUniqueBuffer or it can be converted to an immutable shared buffer with MoveToShared().

See also
FBufferOwner

Constructor & Destructor Documentation

◆ FUniqueBuffer() [1/4]

FUniqueBuffer::FUniqueBuffer ( )
default

Construct a null unique buffer.

◆ FUniqueBuffer() [2/4]

FUniqueBuffer::FUniqueBuffer ( FBufferOwner Owner)
explicit

Construct a unique buffer from a new unreferenced buffer owner.

◆ FUniqueBuffer() [3/4]

FUniqueBuffer::FUniqueBuffer ( FUniqueBuffer &&  )
default

◆ FUniqueBuffer() [4/4]

FUniqueBuffer::FUniqueBuffer ( const FUniqueBuffer )
delete

Member Function Documentation

◆ Alloc()

FUniqueBuffer FUniqueBuffer::Alloc ( uint64  Size)
static

Make an uninitialized owned buffer of the specified size.

◆ AllocZeroed()

FUniqueBuffer FUniqueBuffer::AllocZeroed ( uint64  Size)
static

Make a zeroed owned buffer of the specified size.

◆ Clone() [1/2]

FUniqueBuffer FUniqueBuffer::Clone ( const void Data,
uint64  Size 
)
static

◆ Clone() [2/2]

FUniqueBuffer FUniqueBuffer::Clone ( FMemoryView  View)
static

Make an owned clone of the input.

◆ GetData() [1/2]

void * FUniqueBuffer::GetData ( )
inline

Returns a pointer to the start of the buffer.

◆ GetData() [2/2]

const void * FUniqueBuffer::GetData ( ) const
inline

◆ GetSize()

uint64 FUniqueBuffer::GetSize ( ) const
inline

Returns the size of the buffer in bytes.

◆ GetView() [1/2]

FMutableMemoryView FUniqueBuffer::GetView ( )
inline

Returns a view of the buffer.

◆ GetView() [2/2]

FMemoryView FUniqueBuffer::GetView ( ) const
inline

◆ IsMaterialized()

bool FUniqueBuffer::IsMaterialized ( ) const
inline

Returns true if the referenced buffer has been materialized.

◆ IsNull()

bool FUniqueBuffer::IsNull ( ) const
inline

Returns true if this does not point to a buffer owner.

A null buffer is always owned, materialized, and empty.

◆ IsOwned()

bool FUniqueBuffer::IsOwned ( ) const
inline

Returns true if this keeps the referenced buffer alive.

◆ MakeOwned()

FUniqueBuffer FUniqueBuffer::MakeOwned ( ) &&

Returns a buffer that is owned, by cloning if not owned.

◆ MakeView() [1/2]

FUniqueBuffer FUniqueBuffer::MakeView ( FMutableMemoryView  View)
static

Make a non-owned view of the input.

◆ MakeView() [2/2]

FUniqueBuffer FUniqueBuffer::MakeView ( void Data,
uint64  Size 
)
static

◆ Materialize()

void FUniqueBuffer::Materialize ( ) const

Materialize the buffer by making its data and size available.

The buffer is automatically materialized by GetData, GetSize, GetView.

◆ MoveToShared()

FSharedBuffer FUniqueBuffer::MoveToShared ( )

Convert this to an immutable shared buffer, leaving this null.

Steals the buffer owner from the unique buffer.

◆ operator bool()

FUniqueBuffer::operator bool ( ) const
inlineexplicit

Returns true if this points to a buffer owner.

◆ operator FMemoryView()

FUniqueBuffer::operator FMemoryView ( ) const
inline

◆ operator FMutableMemoryView()

FUniqueBuffer::operator FMutableMemoryView ( )
inline

◆ operator!=()

bool FUniqueBuffer::operator!= ( const FUniqueBuffer BufferB) const
inline

◆ operator=() [1/2]

FUniqueBuffer & FUniqueBuffer::operator= ( const FUniqueBuffer )
delete

◆ operator=() [2/2]

FUniqueBuffer & FUniqueBuffer::operator= ( FUniqueBuffer &&  )
default

◆ operator==()

bool FUniqueBuffer::operator== ( const FUniqueBuffer BufferB) const
inline

◆ Reset()

void FUniqueBuffer::Reset ( )

Reset this to null.

◆ TakeOwnership() [1/2]

template<typename DeleteFunctionType , decltype(Invoke(std::declval< DeleteFunctionType >(), std::declval< void * >(), std::declval< uint64 >())) * >
FUniqueBuffer FUniqueBuffer::TakeOwnership ( void Data,
uint64  Size,
DeleteFunctionType &&  DeleteFunction 
)
inlinestatic

Make an owned buffer by taking ownership of the input.

Parameters
DeleteFunctionCalled with Data to free memory when the last shared reference is released.

◆ TakeOwnership() [2/2]

template<typename DeleteFunctionType , decltype(Invoke(std::declval< DeleteFunctionType >(), std::declval< void * >(), std::declval< uint64 >())) * = nullptr>
static FUniqueBuffer FUniqueBuffer::TakeOwnership ( void Data,
uint64  Size,
DeleteFunctionType &&  DeleteFunction 
)
inlinestatic

Make an owned buffer by taking ownership of the input.

Parameters
DeleteFunctionCalled with (Data, Size) to free memory when the last shared reference is released.

Friends And Related Symbol Documentation

◆ FSharedBuffer

friend class FSharedBuffer
friend

◆ GetTypeHash

uint32 GetTypeHash ( const FUniqueBuffer Buffer)
friend

◆ ToPrivateOwnerPtr [1/2]

const FOwnerPtrType & ToPrivateOwnerPtr ( const FUniqueBuffer Buffer)
friend

◆ ToPrivateOwnerPtr [2/2]

FOwnerPtrType ToPrivateOwnerPtr ( FUniqueBuffer &&  Buffer)
friend

The documentation for this class was generated from the following files: