Class DataContainer
Universal utility class that can store the chunk of data or just reference to the memory. Supports only value types that don't require constructor/destructor invocation.
Inheritance
Assembly: FlaxEngine.dll
File: Engine/Core/Types/DataContainer.h
Syntax
public class DataContainer<T> : public Span
Type Parameters
T
|
Constructors
~DataContainer()
Releases any allocated memory.
Declaration
public ~DataContainer()
DataContainer()
DataContainer(const Array<T, AllocationType>& data)
Initializes a new instance of the DataContainer class.
Declaration
public DataContainer(const Array<T, AllocationType>& data)
Parameters
Array<T, AllocationType>
data
The data array to link. |
Type Parameters
typename AllocationType
|
DataContainer(const DataContainer& other)
Copy constructor
Declaration
public DataContainer(const DataContainer& other)
Parameters
DataContainer
other
Other container to copy |
DataContainer(const Span<T>& data)
Initializes a new instance of the DataContainer class.
Declaration
public DataContainer(const Span<T>& data)
Parameters
Span<T>
data
The data span to link. |
DataContainer(const T* data, int32 length)
Initializes a new instance of the DataContainer class.
Declaration
public DataContainer(const T* data, int32 length)
Parameters
T
data
The data pointer to link. |
int32
length
The data length. |
DataContainer(DataContainer&& other)
Initializes a new instance of the DataContainer class.
Declaration
public DataContainer(DataContainer&& other) noexcept
Parameters
DataContainer
other
The other collection to move. |
Methods
Allocate(const int32 length)
Allocate a new memory chunk.
Declaration
public void Allocate(const int32 length)
Parameters
int32
length
Length of the data (amount of T elements). |
Append(const T* data, int32 length)
Appends the specified data at the end of the container. Will perform the data allocation.
Declaration
public void Append(const T* data, int32 length)
Parameters
T
data
The data. |
int32
length
The length. |
Copy(const Array<T, AllocationType>& data)
Copies the data to a new allocated chunk.
Declaration
public void Copy(const Array<T, AllocationType>& data)
Parameters
Array<T, AllocationType>
data
Data array to copy. |
Returns
void
|
Type Parameters
typename AllocationType
|
Copy(const DataContainer& data)
Copies the data to a new allocated chunk.
Declaration
public void Copy(const DataContainer& data)
Parameters
DataContainer
data
Data to copy. |
Copy(const Span<T>& data)
Copies the data to a new allocated chunk.
Declaration
public void Copy(const Span<T>& data)
Parameters
Span<T>
data
Data to copy. |
Copy(const T* data, int32 length)
Copies the data to a new allocated chunk.
Declaration
public void Copy(const T* data, int32 length)
Parameters
T
data
Pointer to data to copy. |
int32
length
Length of the data (amount of T elements). |
Copy(const U* data)
Copies the data to a new allocated chunk.
Declaration
public void Copy(const U* data)
Parameters
U
data
Pointer to data to copy. |
Returns
void
|
Type Parameters
typename U
|
IsAllocated()
Returns true if data is allocated by container itself, otherwise it's just linked.
Declaration
public bool IsAllocated() const
Returns
bool
|
Link(const Array<T, AllocationType>& data)
Links the external data.
Declaration
public void Link(const Array<T, AllocationType>& data)
Parameters
Array<T, AllocationType>
data
Data array to link |
Type Parameters
typename AllocationType
|
Link(const DataContainer& data)
Links the external data.
Declaration
public void Link(const DataContainer& data)
Parameters
DataContainer
data
Data to link. |
Returns
void
|
Link(const Span<T>& data)
Links the external data.
Declaration
public void Link(const Span<T>& data)
Parameters
Span<T>
data
Data to link. |
Returns
void
|
Link(const T* data, int32 length)
Links the external data.
Declaration
public void Link(const T* data, int32 length)
Parameters
T
data
Data pointer. |
int32
length
Data length. |
Link(const U* data)
Links external data.
Declaration
public void Link(const U* data)
Parameters
U
data
Data to link. |
Returns
void
|
Type Parameters
typename U
|
operator=(const DataContainer& other)
Assignment operator
Declaration
public DataContainer operator=(const DataContainer& other)
Parameters
DataContainer
other
The other container. |
Returns
DataContainer
This |
operator=(DataContainer&& other)
The move assignment operator that deletes the current container of data and the moves items from the other container.
Declaration
public DataContainer operator=(DataContainer&& other) noexcept
Parameters
DataContainer
other
The other collection to move. |
Returns
DataContainer
The reference to this. |
Read(ReadStream* stream, int32 length)
Declaration
public void Read(ReadStream* stream, int32 length)
Parameters
ReadStream
stream
|
int32
length
|
Type Parameters
typename ReadStream
|
Release()
Releases the data.
Declaration
public void Release()
SetLength(int32 length)
Sets the length of the internal allocated buffer. Can be used to trim
length allocated data without performing reallocation. Use with caution because it's not safe.
Declaration
public void SetLength(int32 length)
Parameters
int32
length
The length. |
Swap(DataContainer& data)
Swaps data of two containers. Performs no data copy.
Declaration
public void Swap(DataContainer& data)
Parameters
DataContainer
data
Data to swap |
Unlink()
Unlinks the buffer and clears the length to zero. Use with caution because it's not safe.
Declaration
public void Unlink()
Write(WriteStream* stream)
Declaration
public void Write(WriteStream* stream) const
Parameters
WriteStream
stream
|
Type Parameters
typename WriteStream
|