1370b324cSopenharmony_ci// PpmdDecoder.h 2370b324cSopenharmony_ci 3370b324cSopenharmony_ci#ifndef ZIP7_INC_COMPRESS_PPMD_DECODER_H 4370b324cSopenharmony_ci#define ZIP7_INC_COMPRESS_PPMD_DECODER_H 5370b324cSopenharmony_ci 6370b324cSopenharmony_ci#include "../../../C/Ppmd7.h" 7370b324cSopenharmony_ci 8370b324cSopenharmony_ci#include "../../Common/MyCom.h" 9370b324cSopenharmony_ci 10370b324cSopenharmony_ci#include "../ICoder.h" 11370b324cSopenharmony_ci 12370b324cSopenharmony_ci#include "../Common/CWrappers.h" 13370b324cSopenharmony_ci 14370b324cSopenharmony_cinamespace NCompress { 15370b324cSopenharmony_cinamespace NPpmd { 16370b324cSopenharmony_ci 17370b324cSopenharmony_ciclass CDecoder Z7_final: 18370b324cSopenharmony_ci public ICompressCoder, 19370b324cSopenharmony_ci public ICompressSetDecoderProperties2, 20370b324cSopenharmony_ci public ICompressSetFinishMode, 21370b324cSopenharmony_ci public ICompressGetInStreamProcessedSize, 22370b324cSopenharmony_ci #ifndef Z7_NO_READ_FROM_CODER 23370b324cSopenharmony_ci public ICompressSetInStream, 24370b324cSopenharmony_ci public ICompressSetOutStreamSize, 25370b324cSopenharmony_ci public ISequentialInStream, 26370b324cSopenharmony_ci #endif 27370b324cSopenharmony_ci public CMyUnknownImp 28370b324cSopenharmony_ci{ 29370b324cSopenharmony_ci Z7_COM_QI_BEGIN2(ICompressCoder) 30370b324cSopenharmony_ci Z7_COM_QI_ENTRY(ICompressSetDecoderProperties2) 31370b324cSopenharmony_ci Z7_COM_QI_ENTRY(ICompressSetFinishMode) 32370b324cSopenharmony_ci Z7_COM_QI_ENTRY(ICompressGetInStreamProcessedSize) 33370b324cSopenharmony_ci #ifndef Z7_NO_READ_FROM_CODER 34370b324cSopenharmony_ci Z7_COM_QI_ENTRY(ICompressSetInStream) 35370b324cSopenharmony_ci Z7_COM_QI_ENTRY(ICompressSetOutStreamSize) 36370b324cSopenharmony_ci Z7_COM_QI_ENTRY(ISequentialInStream) 37370b324cSopenharmony_ci #endif 38370b324cSopenharmony_ci Z7_COM_QI_END 39370b324cSopenharmony_ci Z7_COM_ADDREF_RELEASE 40370b324cSopenharmony_ci 41370b324cSopenharmony_ci Z7_IFACE_COM7_IMP(ICompressCoder) 42370b324cSopenharmony_ci Z7_IFACE_COM7_IMP(ICompressSetDecoderProperties2) 43370b324cSopenharmony_ci Z7_IFACE_COM7_IMP(ICompressSetFinishMode) 44370b324cSopenharmony_ci Z7_IFACE_COM7_IMP(ICompressGetInStreamProcessedSize) 45370b324cSopenharmony_ci #ifndef Z7_NO_READ_FROM_CODER 46370b324cSopenharmony_ci Z7_IFACE_COM7_IMP(ICompressSetOutStreamSize) 47370b324cSopenharmony_ci Z7_IFACE_COM7_IMP(ICompressSetInStream) 48370b324cSopenharmony_ci Z7_IFACE_COM7_IMP(ISequentialInStream) 49370b324cSopenharmony_ci #else 50370b324cSopenharmony_ci Z7_COM7F_IMF(SetOutStreamSize(const UInt64 *outSize)); 51370b324cSopenharmony_ci #endif 52370b324cSopenharmony_ci 53370b324cSopenharmony_ci Byte *_outBuf; 54370b324cSopenharmony_ci CByteInBufWrap _inStream; 55370b324cSopenharmony_ci CPpmd7 _ppmd; 56370b324cSopenharmony_ci 57370b324cSopenharmony_ci Byte _order; 58370b324cSopenharmony_ci bool FinishStream; 59370b324cSopenharmony_ci bool _outSizeDefined; 60370b324cSopenharmony_ci HRESULT _res; 61370b324cSopenharmony_ci int _status; 62370b324cSopenharmony_ci UInt64 _outSize; 63370b324cSopenharmony_ci UInt64 _processedSize; 64370b324cSopenharmony_ci 65370b324cSopenharmony_ci HRESULT CodeSpec(Byte *memStream, UInt32 size); 66370b324cSopenharmony_ci 67370b324cSopenharmony_cipublic: 68370b324cSopenharmony_ci 69370b324cSopenharmony_ci #ifndef Z7_NO_READ_FROM_CODER 70370b324cSopenharmony_ci CMyComPtr<ISequentialInStream> InSeqStream; 71370b324cSopenharmony_ci #endif 72370b324cSopenharmony_ci 73370b324cSopenharmony_ci CDecoder(): 74370b324cSopenharmony_ci _outBuf(NULL), 75370b324cSopenharmony_ci FinishStream(false), 76370b324cSopenharmony_ci _outSizeDefined(false) 77370b324cSopenharmony_ci { 78370b324cSopenharmony_ci Ppmd7_Construct(&_ppmd); 79370b324cSopenharmony_ci _ppmd.rc.dec.Stream = &_inStream.vt; 80370b324cSopenharmony_ci } 81370b324cSopenharmony_ci 82370b324cSopenharmony_ci ~CDecoder(); 83370b324cSopenharmony_ci}; 84370b324cSopenharmony_ci 85370b324cSopenharmony_ci}} 86370b324cSopenharmony_ci 87370b324cSopenharmony_ci#endif 88