1baa3858d3f5d128a5c8466b700098109edcad5f2repo sync// Lzma2Decoder.h 2baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 3baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#ifndef __LZMA2_DECODER_H 4baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#define __LZMA2_DECODER_H 5baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 6baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#include "../../../C/Lzma2Dec.h" 7baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 8baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#include "../../Common/MyCom.h" 9baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 10baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#include "../ICoder.h" 11baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 12baa3858d3f5d128a5c8466b700098109edcad5f2repo syncnamespace NCompress { 13baa3858d3f5d128a5c8466b700098109edcad5f2repo syncnamespace NLzma2 { 14baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 15baa3858d3f5d128a5c8466b700098109edcad5f2repo syncclass CDecoder: 16baa3858d3f5d128a5c8466b700098109edcad5f2repo sync public ICompressCoder, 17baa3858d3f5d128a5c8466b700098109edcad5f2repo sync public ICompressSetDecoderProperties2, 18f955a79a9fffb09826cf7547f70d08c3798a2f50Tetsuo Osaka public ICompressSetFinishMode, 19baa3858d3f5d128a5c8466b700098109edcad5f2repo sync public ICompressGetInStreamProcessedSize, 20f955a79a9fffb09826cf7547f70d08c3798a2f50Tetsuo Osaka public ICompressSetBufSize, 21baa3858d3f5d128a5c8466b700098109edcad5f2repo sync #ifndef NO_READ_FROM_CODER 22baa3858d3f5d128a5c8466b700098109edcad5f2repo sync public ICompressSetInStream, 23baa3858d3f5d128a5c8466b700098109edcad5f2repo sync public ICompressSetOutStreamSize, 24baa3858d3f5d128a5c8466b700098109edcad5f2repo sync public ISequentialInStream, 25baa3858d3f5d128a5c8466b700098109edcad5f2repo sync #endif 26baa3858d3f5d128a5c8466b700098109edcad5f2repo sync public CMyUnknownImp 27baa3858d3f5d128a5c8466b700098109edcad5f2repo sync{ 28baa3858d3f5d128a5c8466b700098109edcad5f2repo sync CMyComPtr<ISequentialInStream> _inStream; 29baa3858d3f5d128a5c8466b700098109edcad5f2repo sync Byte *_inBuf; 30baa3858d3f5d128a5c8466b700098109edcad5f2repo sync UInt32 _inPos; 31baa3858d3f5d128a5c8466b700098109edcad5f2repo sync UInt32 _inSize; 32f955a79a9fffb09826cf7547f70d08c3798a2f50Tetsuo Osaka 33f955a79a9fffb09826cf7547f70d08c3798a2f50Tetsuo Osaka bool _finishMode; 34baa3858d3f5d128a5c8466b700098109edcad5f2repo sync bool _outSizeDefined; 35baa3858d3f5d128a5c8466b700098109edcad5f2repo sync UInt64 _outSize; 36f955a79a9fffb09826cf7547f70d08c3798a2f50Tetsuo Osaka 37baa3858d3f5d128a5c8466b700098109edcad5f2repo sync UInt64 _inSizeProcessed; 38baa3858d3f5d128a5c8466b700098109edcad5f2repo sync UInt64 _outSizeProcessed; 39f955a79a9fffb09826cf7547f70d08c3798a2f50Tetsuo Osaka 40f955a79a9fffb09826cf7547f70d08c3798a2f50Tetsuo Osaka UInt32 _inBufSize; 41f955a79a9fffb09826cf7547f70d08c3798a2f50Tetsuo Osaka UInt32 _inBufSizeNew; 42f955a79a9fffb09826cf7547f70d08c3798a2f50Tetsuo Osaka UInt32 _outStepSize; 43f955a79a9fffb09826cf7547f70d08c3798a2f50Tetsuo Osaka 44f955a79a9fffb09826cf7547f70d08c3798a2f50Tetsuo Osaka CLzma2Dec _state; 45baa3858d3f5d128a5c8466b700098109edcad5f2repo syncpublic: 46baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 47f955a79a9fffb09826cf7547f70d08c3798a2f50Tetsuo Osaka MY_QUERYINTERFACE_BEGIN2(ICompressCoder) 48f955a79a9fffb09826cf7547f70d08c3798a2f50Tetsuo Osaka MY_QUERYINTERFACE_ENTRY(ICompressSetDecoderProperties2) 49f955a79a9fffb09826cf7547f70d08c3798a2f50Tetsuo Osaka MY_QUERYINTERFACE_ENTRY(ICompressSetFinishMode) 50f955a79a9fffb09826cf7547f70d08c3798a2f50Tetsuo Osaka MY_QUERYINTERFACE_ENTRY(ICompressGetInStreamProcessedSize) 51f955a79a9fffb09826cf7547f70d08c3798a2f50Tetsuo Osaka MY_QUERYINTERFACE_ENTRY(ICompressSetBufSize) 52baa3858d3f5d128a5c8466b700098109edcad5f2repo sync #ifndef NO_READ_FROM_CODER 53f955a79a9fffb09826cf7547f70d08c3798a2f50Tetsuo Osaka MY_QUERYINTERFACE_ENTRY(ICompressSetInStream) 54f955a79a9fffb09826cf7547f70d08c3798a2f50Tetsuo Osaka MY_QUERYINTERFACE_ENTRY(ICompressSetOutStreamSize) 55f955a79a9fffb09826cf7547f70d08c3798a2f50Tetsuo Osaka MY_QUERYINTERFACE_ENTRY(ISequentialInStream) 56baa3858d3f5d128a5c8466b700098109edcad5f2repo sync #endif 57f955a79a9fffb09826cf7547f70d08c3798a2f50Tetsuo Osaka MY_QUERYINTERFACE_END 58f955a79a9fffb09826cf7547f70d08c3798a2f50Tetsuo Osaka MY_ADDREF_RELEASE 59baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 60f955a79a9fffb09826cf7547f70d08c3798a2f50Tetsuo Osaka STDMETHOD(Code)(ISequentialInStream *inStream, ISequentialOutStream *outStream, 61f955a79a9fffb09826cf7547f70d08c3798a2f50Tetsuo Osaka const UInt64 *inSize, const UInt64 *outSize, ICompressProgressInfo *progress); 62baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 63baa3858d3f5d128a5c8466b700098109edcad5f2repo sync STDMETHOD(SetDecoderProperties2)(const Byte *data, UInt32 size); 64baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 65f955a79a9fffb09826cf7547f70d08c3798a2f50Tetsuo Osaka STDMETHOD(SetFinishMode)(UInt32 finishMode); 66f955a79a9fffb09826cf7547f70d08c3798a2f50Tetsuo Osaka 67baa3858d3f5d128a5c8466b700098109edcad5f2repo sync STDMETHOD(GetInStreamProcessedSize)(UInt64 *value); 68baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 69f955a79a9fffb09826cf7547f70d08c3798a2f50Tetsuo Osaka STDMETHOD(SetInBufSize)(UInt32 streamIndex, UInt32 size); 70f955a79a9fffb09826cf7547f70d08c3798a2f50Tetsuo Osaka STDMETHOD(SetOutBufSize)(UInt32 streamIndex, UInt32 size); 71f955a79a9fffb09826cf7547f70d08c3798a2f50Tetsuo Osaka 72baa3858d3f5d128a5c8466b700098109edcad5f2repo sync STDMETHOD(SetInStream)(ISequentialInStream *inStream); 73baa3858d3f5d128a5c8466b700098109edcad5f2repo sync STDMETHOD(ReleaseInStream)(); 74f955a79a9fffb09826cf7547f70d08c3798a2f50Tetsuo Osaka 75baa3858d3f5d128a5c8466b700098109edcad5f2repo sync STDMETHOD(SetOutStreamSize)(const UInt64 *outSize); 76baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 77baa3858d3f5d128a5c8466b700098109edcad5f2repo sync #ifndef NO_READ_FROM_CODER 78baa3858d3f5d128a5c8466b700098109edcad5f2repo sync STDMETHOD(Read)(void *data, UInt32 size, UInt32 *processedSize); 79baa3858d3f5d128a5c8466b700098109edcad5f2repo sync #endif 80baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 81baa3858d3f5d128a5c8466b700098109edcad5f2repo sync CDecoder(); 82baa3858d3f5d128a5c8466b700098109edcad5f2repo sync virtual ~CDecoder(); 83baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 84baa3858d3f5d128a5c8466b700098109edcad5f2repo sync}; 85baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 86baa3858d3f5d128a5c8466b700098109edcad5f2repo sync}} 87baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 88baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#endif 89