diff options
Diffstat (limited to 'source/core/StarZSTDCompression.hpp')
-rw-r--r-- | source/core/StarZSTDCompression.hpp | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/source/core/StarZSTDCompression.hpp b/source/core/StarZSTDCompression.hpp new file mode 100644 index 0000000..77719bf --- /dev/null +++ b/source/core/StarZSTDCompression.hpp @@ -0,0 +1,44 @@ +#pragma once +#include "StarByteArray.hpp" +#include "StarDataStreamDevices.hpp" + +typedef struct ZSTD_CCtx_s ZSTD_CCtx; +typedef struct ZSTD_DCtx_s ZSTD_DCtx; +typedef ZSTD_DCtx ZSTD_DStream; +typedef ZSTD_CCtx ZSTD_CStream; + +namespace Star { + +class CompressionStream { +public: + CompressionStream(); + ~CompressionStream(); + + ByteArray compress(const char* in, size_t inLen); + ByteArray compress(ByteArray const& in); + +private: + ZSTD_CStream* m_cStream; +}; + +inline ByteArray CompressionStream::compress(ByteArray const& in) { + return compress(in.ptr(), in.size()); +} + +class DecompressionStream { +public: + DecompressionStream(); + ~DecompressionStream(); + + ByteArray decompress(const char* in, size_t inLen); + ByteArray decompress(ByteArray const& in); + +private: + ZSTD_DStream* m_dStream; +}; + +inline ByteArray DecompressionStream::decompress(ByteArray const& in) { + return decompress(in.ptr(), in.size()); +} + +}
\ No newline at end of file |