![]() |
Plasma Engine
2.0
|
#include <MemoryStream.h>
Public Member Functions | |
plContiguousMemoryStreamStorage (plUInt32 uiInitialCapacity=0, plAllocator *pAllocator=plFoundation::GetDefaultAllocator()) | |
![]() | |
plMemoryStreamContainerStorage (plUInt32 uiInitialCapacity=0, plAllocator *pAllocator=plFoundation::GetDefaultAllocator()) | |
Creates the storage object for a memory stream. Use uiInitialCapacity to reserve some memory up front. | |
virtual plUInt64 | 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 plUInt64 | GetHeapMemoryUsage () const override |
Returns the amount of bytes that are currently allocated on the heap. | |
virtual void | Reserve (plUInt64 uiBytes) override |
Reserves N bytes of storage. | |
virtual plResult | CopyToStream (plStreamWriter &inout_stream) const override |
Writes the entire content of the storage to the provided stream. | |
virtual plArrayPtr< const plUInt8 > | GetContiguousMemoryRange (plUInt64 uiStartByte) const override |
Returns a read-only plArrayPtr that represents a contiguous area in memory which starts at the given first byte. | |
virtual plArrayPtr< plUInt8 > | GetContiguousMemoryRange (plUInt64 uiStartByte) override |
Non-const overload of GetContiguousMemoryRange(). | |
const plUInt8 * | GetData () const |
The data is guaranteed to be contiguous. | |
![]() | |
plUInt32 | GetStorageSize32 () const |
Returns the number of bytes that are currently stored. Asserts that the stored amount is less than 4GB. | |
void | ReadAll (plStreamReader &inout_stream, plUInt64 uiMaxBytes=plMath::MaxValue< plUInt64 >()) |
Copies all data from the given stream into the storage. | |
plContiguousMemoryStreamStorage holds internally an plHybridArray<plUInt8, 256>, to prevent allocations when only small temporary memory streams are needed. That means it will have a memory overhead of that size. Also it reallocates memory on demand, and the data is guaranteed to be contiguous. This may be desirable, but can have a high performance overhead when data grows very large.