1*f6dc9357SAndroid Build Coastguard Worker // LzfseDecoder.h 2*f6dc9357SAndroid Build Coastguard Worker 3*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_LZFSE_DECODER_H 4*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_LZFSE_DECODER_H 5*f6dc9357SAndroid Build Coastguard Worker 6*f6dc9357SAndroid Build Coastguard Worker #include "../../Common/MyBuffer.h" 7*f6dc9357SAndroid Build Coastguard Worker #include "../../Common/MyCom.h" 8*f6dc9357SAndroid Build Coastguard Worker 9*f6dc9357SAndroid Build Coastguard Worker #include "../ICoder.h" 10*f6dc9357SAndroid Build Coastguard Worker 11*f6dc9357SAndroid Build Coastguard Worker #include "../Common/InBuffer.h" 12*f6dc9357SAndroid Build Coastguard Worker 13*f6dc9357SAndroid Build Coastguard Worker #include "LzOutWindow.h" 14*f6dc9357SAndroid Build Coastguard Worker 15*f6dc9357SAndroid Build Coastguard Worker namespace NCompress { 16*f6dc9357SAndroid Build Coastguard Worker namespace NLzfse { 17*f6dc9357SAndroid Build Coastguard Worker 18*f6dc9357SAndroid Build Coastguard Worker Z7_CLASS_IMP_NOQIB_1( 19*f6dc9357SAndroid Build Coastguard Worker CDecoder 20*f6dc9357SAndroid Build Coastguard Worker , ICompressCoder 21*f6dc9357SAndroid Build Coastguard Worker ) 22*f6dc9357SAndroid Build Coastguard Worker CLzOutWindow m_OutWindowStream; 23*f6dc9357SAndroid Build Coastguard Worker CInBuffer m_InStream; 24*f6dc9357SAndroid Build Coastguard Worker CByteBuffer _literals; 25*f6dc9357SAndroid Build Coastguard Worker CByteBuffer _buffer; 26*f6dc9357SAndroid Build Coastguard Worker 27*f6dc9357SAndroid Build Coastguard Worker class CCoderReleaser 28*f6dc9357SAndroid Build Coastguard Worker { 29*f6dc9357SAndroid Build Coastguard Worker CDecoder *m_Coder; 30*f6dc9357SAndroid Build Coastguard Worker public: 31*f6dc9357SAndroid Build Coastguard Worker bool NeedFlush; CCoderReleaser(CDecoder * coder)32*f6dc9357SAndroid Build Coastguard Worker CCoderReleaser(CDecoder *coder): m_Coder(coder), NeedFlush(true) {} ~CCoderReleaser()33*f6dc9357SAndroid Build Coastguard Worker ~CCoderReleaser() 34*f6dc9357SAndroid Build Coastguard Worker { 35*f6dc9357SAndroid Build Coastguard Worker if (NeedFlush) 36*f6dc9357SAndroid Build Coastguard Worker m_Coder->m_OutWindowStream.Flush(); 37*f6dc9357SAndroid Build Coastguard Worker } 38*f6dc9357SAndroid Build Coastguard Worker }; 39*f6dc9357SAndroid Build Coastguard Worker friend class CCoderReleaser; 40*f6dc9357SAndroid Build Coastguard Worker 41*f6dc9357SAndroid Build Coastguard Worker HRESULT GetUInt32(UInt32 &val); 42*f6dc9357SAndroid Build Coastguard Worker 43*f6dc9357SAndroid Build Coastguard Worker HRESULT DecodeUncompressed(UInt32 unpackSize); 44*f6dc9357SAndroid Build Coastguard Worker HRESULT DecodeLzvn(UInt32 unpackSize, UInt32 packSize); 45*f6dc9357SAndroid Build Coastguard Worker HRESULT DecodeLzfse(UInt32 unpackSize, Byte version); 46*f6dc9357SAndroid Build Coastguard Worker 47*f6dc9357SAndroid Build Coastguard Worker HRESULT CodeReal(ISequentialInStream *inStream, ISequentialOutStream *outStream, 48*f6dc9357SAndroid Build Coastguard Worker const UInt64 *inSize, const UInt64 *outSize, ICompressProgressInfo *progress); 49*f6dc9357SAndroid Build Coastguard Worker public: 50*f6dc9357SAndroid Build Coastguard Worker bool LzvnMode; 51*f6dc9357SAndroid Build Coastguard Worker CDecoder()52*f6dc9357SAndroid Build Coastguard Worker CDecoder(): 53*f6dc9357SAndroid Build Coastguard Worker LzvnMode(false) 54*f6dc9357SAndroid Build Coastguard Worker {} 55*f6dc9357SAndroid Build Coastguard Worker 56*f6dc9357SAndroid Build Coastguard Worker // sizes are checked in Code() 57*f6dc9357SAndroid Build Coastguard Worker // UInt64 GetInputProcessedSize() const { return m_InStream.GetProcessedSize(); } 58*f6dc9357SAndroid Build Coastguard Worker // UInt64 GetOutputProcessedSize() const { return m_OutWindowStream.GetProcessedSize(); } 59*f6dc9357SAndroid Build Coastguard Worker }; 60*f6dc9357SAndroid Build Coastguard Worker 61*f6dc9357SAndroid Build Coastguard Worker }} 62*f6dc9357SAndroid Build Coastguard Worker 63*f6dc9357SAndroid Build Coastguard Worker #endif 64