![]() |
ezEngine
Release 25.03
|
The default implementation for memory stream storage. More...
#include <MemoryStream.h>
Public Member Functions | |
ezDefaultMemoryStreamStorage (ezUInt32 uiInitialCapacity=0, ezAllocator *pAllocator=ezFoundation::GetDefaultAllocator()) | |
virtual void | Reserve (ezUInt64 uiBytes) override |
Reserves N bytes of storage. | |
virtual ezUInt64 | GetStorageSize64 () const override |
Returns the number of bytes that are currently stored. | |
virtual void | Clear () override |
Clears the entire storage. All readers and writers must be reset to start from the beginning again. | |
virtual void | Compact () override |
Deallocates any allocated memory that's not needed to hold the currently stored data. | |
virtual ezUInt64 | GetHeapMemoryUsage () const override |
Returns the amount of bytes that are currently allocated on the heap. | |
virtual ezResult | CopyToStream (ezStreamWriter &inout_stream) const override |
Writes the entire content of the storage to the provided stream. | |
virtual ezArrayPtr< const ezUInt8 > | GetContiguousMemoryRange (ezUInt64 uiStartByte) const override |
Returns a read-only ezArrayPtr that represents a contiguous area in memory which starts at the given first byte. More... | |
virtual ezArrayPtr< ezUInt8 > | GetContiguousMemoryRange (ezUInt64 uiStartByte) override |
Non-const overload of GetContiguousMemoryRange(). | |
![]() | |
ezUInt32 | GetStorageSize32 () const |
Returns the number of bytes that are currently stored. Asserts that the stored amount is less than 4GB. | |
void | ReadAll (ezStreamReader &inout_stream, ezUInt64 uiMaxBytes=ezMath::MaxValue< ezUInt64 >()) |
Copies all data from the given stream into the storage. | |
The default implementation for memory stream storage.
This implementation of ezMemoryStreamStorageInterface handles use cases both from very small to extremely large storage needs. It starts out with some inplace memory that can accommodate small amounts of data. To grow, additional chunks of data are allocated. No memory ever needs to be copied to grow the container. However, that also means that the memory isn't stored in one contiguous array, therefore data has to be accessed piece-wise through GetContiguousMemoryRange().
|
overridevirtual |
Returns a read-only ezArrayPtr that represents a contiguous area in memory which starts at the given first byte.
This piece of memory can be read/copied/modified in one operation (memcpy etc). The next byte after this slice may be located somewhere entirely different in memory. Call GetContiguousMemoryRange() again with the next byte after this range, to get access to the next memory area.
Chunks may differ in size.
Implements ezMemoryStreamStorageInterface.