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