/*** Copyright (C) 2021 J Reece Wilson (a/k/a "Reece"). All rights reserved. File: BlockCompressor.hpp Date: 2021-6-17 Author: Reece ***/ #pragma once namespace Aurora::Compression { class BaseStreamDeflate : public ICompressionStream { public: virtual ~BaseStreamDeflate() { } virtual std::pair IngestImpl(AuUInt32 input); virtual void Flush() = 0; virtual bool Init(Aurora::IO::IStreamReader *reader, const CompressionInfo &info) = 0; bool Read(void * /*opt*/ buffer, AuUInt32 &len, bool ingestUntilError) override; std::pair Ingest(AuUInt32 input) override; protected: AuUInt32 _count {}; AuUInt32 _lastCount {}; AuList _outbuffer; }; }