4#include <Foundation/Basics.h>
5#include <Foundation/Containers/DynamicArray.h>
6#include <Foundation/IO/Stream.h>
8#ifdef BUILDSYSTEM_ENABLE_ZSTD_SUPPORT
13class PL_FOUNDATION_DLL plCompressedStreamReaderZstd :
public plStreamReader
16 plCompressedStreamReaderZstd();
21 ~plCompressedStreamReaderZstd();
33 virtual plUInt64
ReadBytes(
void* pReadBuffer, plUInt64 uiBytesToRead)
override;
46 bool m_bReachedEnd =
false;
49 void* m_pZstdDStream =
nullptr;
50 InBufferImpl m_InBuffer;
61class PL_FOUNDATION_DLL plCompressedStreamWriterZstd final :
public plStreamWriter
65 enum class Compression
76 plCompressedStreamWriterZstd();
79 plCompressedStreamWriterZstd(
plStreamWriter* pOutputStream, plUInt32 uiMaxNumWorkerThreads, Compression ratio = Compression::Default, plUInt32 uiCompressionCacheSizeKB = 4);
82 ~plCompressedStreamWriterZstd();
95 void SetOutputStream(
plStreamWriter* pOutputStream, plUInt32 uiMaxNumWorkerThreads, Compression ratio = Compression::Default, plUInt32 uiCompressionCacheSizeKB = 4);
100 virtual plResult WriteBytes(
const void* pWriteBuffer, plUInt64 uiBytesToWrite)
override;
111 plUInt64 GetUncompressedSize()
const {
return m_uiUncompressedSize; }
119 plUInt64 GetCompressedSize()
const {
return m_uiCompressedSize; }
124 plUInt64 GetWrittenBytes()
const {
return m_uiWrittenBytes; }
138 plUInt64 m_uiUncompressedSize = 0;
139 plUInt64 m_uiCompressedSize = 0;
140 plUInt64 m_uiWrittenBytes = 0;
151 void* m_pZstdCStream =
nullptr;
152 OutBufferImpl m_OutBuffer;
Definition DynamicArray.h:81
Interface for binary in (read) streams.
Definition Stream.h:22
virtual plUInt64 ReadBytes(void *pReadBuffer, plUInt64 uiBytesToRead)=0
Reads a raw number of bytes into the read buffer, this is the only method which has to be implemented...
Interface for binary out (write) streams.
Definition Stream.h:107
Default enum for returning failure or success, instead of using a bool.
Definition Types.h:54