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