xref: /aosp_15_r20/external/lzma/CPP/7zip/Archive/7z/7zDecode.h (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
1*f6dc9357SAndroid Build Coastguard Worker // 7zDecode.h
2*f6dc9357SAndroid Build Coastguard Worker 
3*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_7Z_DECODE_H
4*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_7Z_DECODE_H
5*f6dc9357SAndroid Build Coastguard Worker 
6*f6dc9357SAndroid Build Coastguard Worker #include "../Common/CoderMixer2.h"
7*f6dc9357SAndroid Build Coastguard Worker 
8*f6dc9357SAndroid Build Coastguard Worker #include "7zIn.h"
9*f6dc9357SAndroid Build Coastguard Worker 
10*f6dc9357SAndroid Build Coastguard Worker namespace NArchive {
11*f6dc9357SAndroid Build Coastguard Worker namespace N7z {
12*f6dc9357SAndroid Build Coastguard Worker 
13*f6dc9357SAndroid Build Coastguard Worker struct CBindInfoEx: public NCoderMixer2::CBindInfo
14*f6dc9357SAndroid Build Coastguard Worker {
15*f6dc9357SAndroid Build Coastguard Worker   CRecordVector<CMethodId> CoderMethodIDs;
16*f6dc9357SAndroid Build Coastguard Worker 
ClearCBindInfoEx17*f6dc9357SAndroid Build Coastguard Worker   void Clear()
18*f6dc9357SAndroid Build Coastguard Worker   {
19*f6dc9357SAndroid Build Coastguard Worker     CBindInfo::Clear();
20*f6dc9357SAndroid Build Coastguard Worker     CoderMethodIDs.Clear();
21*f6dc9357SAndroid Build Coastguard Worker   }
22*f6dc9357SAndroid Build Coastguard Worker };
23*f6dc9357SAndroid Build Coastguard Worker 
24*f6dc9357SAndroid Build Coastguard Worker class CDecoder
25*f6dc9357SAndroid Build Coastguard Worker {
26*f6dc9357SAndroid Build Coastguard Worker   bool _bindInfoPrev_Defined;
27*f6dc9357SAndroid Build Coastguard Worker   #ifdef USE_MIXER_ST
28*f6dc9357SAndroid Build Coastguard Worker   #ifdef USE_MIXER_MT
29*f6dc9357SAndroid Build Coastguard Worker     bool _useMixerMT;
30*f6dc9357SAndroid Build Coastguard Worker   #endif
31*f6dc9357SAndroid Build Coastguard Worker   #endif
32*f6dc9357SAndroid Build Coastguard Worker   CBindInfoEx _bindInfoPrev;
33*f6dc9357SAndroid Build Coastguard Worker 
34*f6dc9357SAndroid Build Coastguard Worker   #ifdef USE_MIXER_ST
35*f6dc9357SAndroid Build Coastguard Worker     NCoderMixer2::CMixerST *_mixerST;
36*f6dc9357SAndroid Build Coastguard Worker   #endif
37*f6dc9357SAndroid Build Coastguard Worker 
38*f6dc9357SAndroid Build Coastguard Worker   #ifdef USE_MIXER_MT
39*f6dc9357SAndroid Build Coastguard Worker     NCoderMixer2::CMixerMT *_mixerMT;
40*f6dc9357SAndroid Build Coastguard Worker   #endif
41*f6dc9357SAndroid Build Coastguard Worker 
42*f6dc9357SAndroid Build Coastguard Worker   NCoderMixer2::CMixer *_mixer;
43*f6dc9357SAndroid Build Coastguard Worker   CMyComPtr<IUnknown> _mixerRef;
44*f6dc9357SAndroid Build Coastguard Worker 
45*f6dc9357SAndroid Build Coastguard Worker public:
46*f6dc9357SAndroid Build Coastguard Worker 
47*f6dc9357SAndroid Build Coastguard Worker   CDecoder(bool useMixerMT);
48*f6dc9357SAndroid Build Coastguard Worker 
49*f6dc9357SAndroid Build Coastguard Worker   HRESULT Decode(
50*f6dc9357SAndroid Build Coastguard Worker       DECL_EXTERNAL_CODECS_LOC_VARS
51*f6dc9357SAndroid Build Coastguard Worker       IInStream *inStream,
52*f6dc9357SAndroid Build Coastguard Worker       UInt64 startPos,
53*f6dc9357SAndroid Build Coastguard Worker       const CFolders &folders, unsigned folderIndex,
54*f6dc9357SAndroid Build Coastguard Worker       const UInt64 *unpackSize // if (!unpackSize), then full folder is required
55*f6dc9357SAndroid Build Coastguard Worker                                // if (unpackSize), then only *unpackSize bytes from folder are required
56*f6dc9357SAndroid Build Coastguard Worker 
57*f6dc9357SAndroid Build Coastguard Worker       , ISequentialOutStream *outStream
58*f6dc9357SAndroid Build Coastguard Worker       , ICompressProgressInfo *compressProgress
59*f6dc9357SAndroid Build Coastguard Worker 
60*f6dc9357SAndroid Build Coastguard Worker       , ISequentialInStream **inStreamMainRes
61*f6dc9357SAndroid Build Coastguard Worker       , bool &dataAfterEnd_Error
62*f6dc9357SAndroid Build Coastguard Worker 
63*f6dc9357SAndroid Build Coastguard Worker       Z7_7Z_DECODER_CRYPRO_VARS_DECL
64*f6dc9357SAndroid Build Coastguard Worker 
65*f6dc9357SAndroid Build Coastguard Worker       #if !defined(Z7_ST)
66*f6dc9357SAndroid Build Coastguard Worker       , bool mtMode, UInt32 numThreads, UInt64 memUsage
67*f6dc9357SAndroid Build Coastguard Worker       #endif
68*f6dc9357SAndroid Build Coastguard Worker       );
69*f6dc9357SAndroid Build Coastguard Worker };
70*f6dc9357SAndroid Build Coastguard Worker 
71*f6dc9357SAndroid Build Coastguard Worker }}
72*f6dc9357SAndroid Build Coastguard Worker 
73*f6dc9357SAndroid Build Coastguard Worker #endif
74