38 lines
964 B
C++
38 lines
964 B
C++
#pragma once
|
|
|
|
#include "fs/IStreamSource.h"
|
|
#include "fs/zip/ZipWriter.h"
|
|
|
|
namespace fs
|
|
{
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
class ISource;
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
class FS_API DeflateSinkWriter
|
|
{
|
|
public:
|
|
//compression level: 0 to 9
|
|
DeflateSinkWriter(IStreamSource& source, uint8_t compressionLevel);
|
|
DeflateSinkWriter(tl::span<const uint8_t> data, uint8_t compressionLevel);
|
|
|
|
DeflateSinkWriter(const DeflateSinkWriter&) = delete;
|
|
DeflateSinkWriter& operator=(const DeflateSinkWriter&) = delete;
|
|
|
|
DeflateSinkWriter(DeflateSinkWriter&&) = default;
|
|
DeflateSinkWriter& operator=(DeflateSinkWriter&&) = default;
|
|
|
|
ZipWriter::DataWriterResult operator()(IStreamSink& sink);
|
|
|
|
private:
|
|
IStreamSource* m_source = nullptr;
|
|
tl::span<const uint8_t> m_data;
|
|
uint8_t m_compressionLevel = 9;
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
}
|