Files
nsis-plugin-ns7zip/versions/25.01/CPP/7zip/Compress/ZstdDecoder.h
T
Simone d074cc7c07 chore: initial commit (extracted from Launchers monorepo)
Plugin: ns7zip v2.0.0
Architectures: x86-ansi, x86-unicode, amd64-unicode
License: LGPL-2.1-or-later
2026-04-29 14:07:51 +02:00

99 lines
2.3 KiB
C++

// ZstdDecoder.h
#ifndef ZIP7_INC_ZSTD_DECODER_H
#define ZIP7_INC_ZSTD_DECODER_H
#include "../../../C/ZstdDec.h"
#include "../../Common/MyCom.h"
#include "../ICoder.h"
namespace NCompress {
namespace NZstd {
#ifdef Z7_NO_READ_FROM_CODER
#define Z7_NO_READ_FROM_CODER_ZSTD
#endif
#ifndef Z7_NO_READ_FROM_CODER_ZSTD
// #define Z7_NO_READ_FROM_CODER_ZSTD
#endif
class CDecoder Z7_final:
public ICompressCoder,
public ICompressSetDecoderProperties2,
public ICompressSetFinishMode,
public ICompressGetInStreamProcessedSize,
public ICompressReadUnusedFromInBuf,
public ICompressSetBufSize,
#ifndef Z7_NO_READ_FROM_CODER_ZSTD
public ICompressSetInStream,
public ICompressSetOutStreamSize,
public ISequentialInStream,
#endif
public CMyUnknownImp
{
Z7_COM_QI_BEGIN2(ICompressCoder)
Z7_COM_QI_ENTRY(ICompressSetDecoderProperties2)
Z7_COM_QI_ENTRY(ICompressSetFinishMode)
Z7_COM_QI_ENTRY(ICompressGetInStreamProcessedSize)
Z7_COM_QI_ENTRY(ICompressReadUnusedFromInBuf)
Z7_COM_QI_ENTRY(ICompressSetBufSize)
#ifndef Z7_NO_READ_FROM_CODER_ZSTD
Z7_COM_QI_ENTRY(ICompressSetInStream)
Z7_COM_QI_ENTRY(ICompressSetOutStreamSize)
Z7_COM_QI_ENTRY(ISequentialInStream)
#endif
Z7_COM_QI_END
Z7_COM_ADDREF_RELEASE
Z7_IFACE_COM7_IMP(ICompressCoder)
Z7_IFACE_COM7_IMP(ICompressSetDecoderProperties2)
Z7_IFACE_COM7_IMP(ICompressSetFinishMode)
Z7_IFACE_COM7_IMP(ICompressGetInStreamProcessedSize)
Z7_IFACE_COM7_IMP(ICompressReadUnusedFromInBuf)
Z7_IFACE_COM7_IMP(ICompressSetBufSize)
#ifndef Z7_NO_READ_FROM_CODER_ZSTD
Z7_IFACE_COM7_IMP(ICompressSetOutStreamSize)
Z7_IFACE_COM7_IMP(ICompressSetInStream)
Z7_IFACE_COM7_IMP(ISequentialInStream)
#endif
HRESULT Prepare(const UInt64 *outSize);
UInt32 _outStepMask;
CZstdDecHandle _dec;
public:
UInt64 _inProcessed;
CZstdDecState _state;
private:
UInt32 _inBufSize;
UInt32 _inBufSize_Allocated;
Byte *_inBuf;
size_t _afterDecoding_tempPos;
#ifndef Z7_NO_READ_FROM_CODER_ZSTD
CMyComPtr<ISequentialInStream> _inStream;
HRESULT _hres_Read;
HRESULT _hres_Decode;
UInt64 _writtenSize;
bool _readWasFinished;
bool _wasFinished;
#endif
public:
bool FinishMode;
Byte DisableHash;
CZstdDecResInfo ResInfo;
HRESULT GetFinishResult();
CDecoder();
~CDecoder();
};
}}
#endif