Source code
Revision control
Copy as Markdown
Other Tools
// PpmdDecoder.h↩
// 2009-03-11 : Igor Pavlov : Public domain↩
↩
#ifndef __COMPRESS_PPMD_DECODER_H↩
#define __COMPRESS_PPMD_DECODER_H↩
↩
#include "../../../C/Ppmd7.h"↩
↩
#include "../../Common/MyCom.h"↩
↩
#include "../Common/CWrappers.h"↩
↩
#include "../ICoder.h"↩
↩
namespace NCompress {↩
namespace NPpmd {↩
↩
class CDecoder :↩
public ICompressCoder,↩
public ICompressSetDecoderProperties2,↩
public ICompressGetInStreamProcessedSize,↩
#ifndef NO_READ_FROM_CODER↩
public ICompressSetInStream,↩
public ICompressSetOutStreamSize,↩
public ISequentialInStream,↩
#endif↩
public CMyUnknownImp↩
{↩
Byte *_outBuf;↩
CPpmd7z_RangeDec _rangeDec;↩
CByteInBufWrap _inStream;↩
CPpmd7 _ppmd;↩
↩
Byte _order;↩
bool _outSizeDefined;↩
int _status;↩
UInt64 _outSize;↩
UInt64 _processedSize;↩
↩
HRESULT CodeSpec(Byte *memStream, UInt32 size);↩
↩
public:↩
↩
#ifndef NO_READ_FROM_CODER↩
CMyComPtr<ISequentialInStream> InSeqStream;↩
#endif↩
↩
MY_QUERYINTERFACE_BEGIN2(ICompressCoder)↩
MY_QUERYINTERFACE_ENTRY(ICompressSetDecoderProperties2)↩
// MY_QUERYINTERFACE_ENTRY(ICompressSetFinishMode)↩
MY_QUERYINTERFACE_ENTRY(ICompressGetInStreamProcessedSize)↩
#ifndef NO_READ_FROM_CODER↩
MY_QUERYINTERFACE_ENTRY(ICompressSetInStream)↩
MY_QUERYINTERFACE_ENTRY(ICompressSetOutStreamSize)↩
MY_QUERYINTERFACE_ENTRY(ISequentialInStream)↩
#endif↩
MY_QUERYINTERFACE_END↩
MY_ADDREF_RELEASE↩
↩
↩
STDMETHOD(Code)(ISequentialInStream *inStream, ISequentialOutStream *outStream,↩
const UInt64 *inSize, const UInt64 *outSize, ICompressProgressInfo *progress);↩
STDMETHOD(SetDecoderProperties2)(const Byte *data, UInt32 size);↩
STDMETHOD(GetInStreamProcessedSize)(UInt64 *value);↩
↩
STDMETHOD(SetOutStreamSize)(const UInt64 *outSize);↩
↩
#ifndef NO_READ_FROM_CODER↩
STDMETHOD(SetInStream)(ISequentialInStream *inStream);↩
STDMETHOD(ReleaseInStream)();↩
STDMETHOD(Read)(void *data, UInt32 size, UInt32 *processedSize);↩
#endif↩
↩
CDecoder(): _outBuf(NULL), _outSizeDefined(false)↩
{↩
Ppmd7z_RangeDec_CreateVTable(&_rangeDec);↩
_rangeDec.Stream = &_inStream.vt;↩
Ppmd7_Construct(&_ppmd);↩
}↩
↩
~CDecoder();↩
};↩
↩
}}↩
↩
#endif↩