#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 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 m_data; uint8_t m_compressionLevel = 9; }; ////////////////////////////////////////////////////////////////////////// }