Source code
Revision control
Copy as Markdown
Other Tools
// XzDecoder.h↩
↩
#ifndef __XZ_DECODER_H↩
#define __XZ_DECODER_H↩
↩
#include "../../../C/Xz.h"↩
↩
#include "../../Common/MyCom.h"↩
↩
#include "../ICoder.h"↩
↩
namespace NCompress {↩
namespace NXz {↩
↩
struct CDecoder↩
{↩
CXzDecMtHandle xz;↩
int _tryMt;↩
UInt32 _numThreads;↩
UInt64 _memUsage;↩
↩
SRes MainDecodeSRes; // it's not HRESULT↩
bool MainDecodeSRes_wasUsed;↩
CXzStatInfo Stat;↩
↩
CDecoder():↩
xz(NULL),↩
_tryMt(True),↩
_numThreads(1),↩
_memUsage((UInt64)(sizeof(size_t)) << 28),↩
MainDecodeSRes(SZ_OK),↩
MainDecodeSRes_wasUsed(false)↩
{}↩
↩
~CDecoder()↩
{↩
if (xz)↩
XzDecMt_Destroy(xz);↩
}↩
↩
/* Decode() can return ERROR code only if there is progress or stream error.↩
Decode() returns S_OK in case of xz decoding error, but DecodeRes and CStatInfo contain error information */↩
HRESULT Decode(ISequentialInStream *seqInStream, ISequentialOutStream *outStream,↩
const UInt64 *outSizeLimit, bool finishStream, ICompressProgressInfo *compressProgress);↩
};↩
↩
↩
class CComDecoder:↩
public ICompressCoder,↩
public ICompressSetFinishMode,↩
public ICompressGetInStreamProcessedSize,↩
↩
#ifndef _7ZIP_ST↩
public ICompressSetCoderMt,↩
public ICompressSetMemLimit,↩
#endif↩
↩
public CMyUnknownImp,↩
public CDecoder↩
{↩
bool _finishStream;↩
↩
public:↩
MY_QUERYINTERFACE_BEGIN2(ICompressCoder)↩
↩
MY_QUERYINTERFACE_ENTRY(ICompressSetFinishMode)↩
MY_QUERYINTERFACE_ENTRY(ICompressGetInStreamProcessedSize)↩
↩
#ifndef _7ZIP_ST↩
MY_QUERYINTERFACE_ENTRY(ICompressSetCoderMt)↩
MY_QUERYINTERFACE_ENTRY(ICompressSetMemLimit)↩
#endif↩
↩
MY_QUERYINTERFACE_END↩
MY_ADDREF_RELEASE↩
↩
STDMETHOD(Code)(ISequentialInStream *inStream, ISequentialOutStream *outStream,↩
const UInt64 *inSize, const UInt64 *outSize, ICompressProgressInfo *progress);↩
STDMETHOD(SetFinishMode)(UInt32 finishMode);↩
STDMETHOD(GetInStreamProcessedSize)(UInt64 *value);↩
↩
#ifndef _7ZIP_ST↩
STDMETHOD(SetNumberOfThreads)(UInt32 numThreads);↩
STDMETHOD(SetMemLimit)(UInt64 memUsage);↩
#endif↩
↩
CComDecoder(): _finishStream(false) {}↩
};↩
↩
}}↩
↩
#endif↩