xref: /aosp_15_r20/external/lzma/CPP/7zip/Compress/ZstdDecoder.h (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
1 // ZstdDecoder.h
2 
3 #ifndef ZIP7_INC_ZSTD_DECODER_H
4 #define ZIP7_INC_ZSTD_DECODER_H
5 
6 #include "../../../C/ZstdDec.h"
7 
8 #include "../../Common/MyCom.h"
9 #include "../ICoder.h"
10 
11 namespace NCompress {
12 namespace NZstd {
13 
14 #ifdef Z7_NO_READ_FROM_CODER
15 #define Z7_NO_READ_FROM_CODER_ZSTD
16 #endif
17 
18 #ifndef Z7_NO_READ_FROM_CODER_ZSTD
19 // #define Z7_NO_READ_FROM_CODER_ZSTD
20 #endif
21 
22 class CDecoder Z7_final:
23   public ICompressCoder,
24   public ICompressSetDecoderProperties2,
25   public ICompressSetFinishMode,
26   public ICompressGetInStreamProcessedSize,
27   public ICompressReadUnusedFromInBuf,
28   public ICompressSetBufSize,
29  #ifndef Z7_NO_READ_FROM_CODER_ZSTD
30   public ICompressSetInStream,
31   public ICompressSetOutStreamSize,
32   public ISequentialInStream,
33  #endif
34   public CMyUnknownImp
35 {
36   Z7_COM_QI_BEGIN2(ICompressCoder)
37   Z7_COM_QI_ENTRY(ICompressSetDecoderProperties2)
38   Z7_COM_QI_ENTRY(ICompressSetFinishMode)
39   Z7_COM_QI_ENTRY(ICompressGetInStreamProcessedSize)
40   Z7_COM_QI_ENTRY(ICompressReadUnusedFromInBuf)
41   Z7_COM_QI_ENTRY(ICompressSetBufSize)
42  #ifndef Z7_NO_READ_FROM_CODER_ZSTD
43   Z7_COM_QI_ENTRY(ICompressSetInStream)
44   Z7_COM_QI_ENTRY(ICompressSetOutStreamSize)
45   Z7_COM_QI_ENTRY(ISequentialInStream)
46  #endif
47   Z7_COM_QI_END
48   Z7_COM_ADDREF_RELEASE
49 
50   Z7_IFACE_COM7_IMP(ICompressCoder)
51   Z7_IFACE_COM7_IMP(ICompressSetDecoderProperties2)
52   Z7_IFACE_COM7_IMP(ICompressSetFinishMode)
53   Z7_IFACE_COM7_IMP(ICompressGetInStreamProcessedSize)
54   Z7_IFACE_COM7_IMP(ICompressReadUnusedFromInBuf)
55   Z7_IFACE_COM7_IMP(ICompressSetBufSize)
56  #ifndef Z7_NO_READ_FROM_CODER_ZSTD
57   Z7_IFACE_COM7_IMP(ICompressSetOutStreamSize)
58   Z7_IFACE_COM7_IMP(ICompressSetInStream)
59   Z7_IFACE_COM7_IMP(ISequentialInStream)
60  #endif
61 
62   HRESULT Prepare(const UInt64 *outSize);
63 
64   UInt32 _outStepMask;
65   CZstdDecHandle _dec;
66 public:
67   UInt64 _inProcessed;
68   CZstdDecState _state;
69 
70 private:
71   UInt32 _inBufSize;
72   UInt32 _inBufSize_Allocated;
73   Byte *_inBuf;
74   size_t _afterDecoding_tempPos;
75 
76  #ifndef Z7_NO_READ_FROM_CODER_ZSTD
77   CMyComPtr<ISequentialInStream> _inStream;
78   HRESULT _hres_Read;
79   HRESULT _hres_Decode;
80   UInt64 _writtenSize;
81   bool _readWasFinished;
82   bool _wasFinished;
83  #endif
84 
85 public:
86   bool FinishMode;
87   Byte DisableHash;
88   CZstdDecResInfo ResInfo;
89 
90   HRESULT GetFinishResult();
91 
92   CDecoder();
93   ~CDecoder();
94 };
95 
96 }}
97 
98 #endif
99