| // 7zDecode.h | |
| #ifndef __7Z_DECODE_H | |
| #define __7Z_DECODE_H | |
| #include "../../IStream.h" | |
| #include "../../IPassword.h" | |
| #include "../Common/CoderMixer2.h" | |
| #include "../Common/CoderMixer2MT.h" | |
| #ifdef _ST_MODE | |
| #include "../Common/CoderMixer2ST.h" | |
| #endif | |
| #include "../../Common/CreateCoder.h" | |
| #include "7zIn.h" | |
| namespace NArchive { | |
| namespace N7z { | |
| struct CBindInfoEx: public NCoderMixer::CBindInfo | |
| { | |
| CRecordVector<CMethodId> CoderMethodIDs; | |
| void Clear() | |
| { | |
| CBindInfo::Clear(); | |
| CoderMethodIDs.Clear(); | |
| } | |
| }; | |
| class CDecoder | |
| { | |
| bool _bindInfoExPrevIsDefined; | |
| CBindInfoEx _bindInfoExPrev; | |
| bool _multiThread; | |
| #ifdef _ST_MODE | |
| NCoderMixer::CCoderMixer2ST *_mixerCoderSTSpec; | |
| #endif | |
| NCoderMixer::CCoderMixer2MT *_mixerCoderMTSpec; | |
| NCoderMixer::CCoderMixer2 *_mixerCoderCommon; | |
| CMyComPtr<ICompressCoder2> _mixerCoder; | |
| CObjectVector<CMyComPtr<IUnknown> > _decoders; | |
| // CObjectVector<CMyComPtr<ICompressCoder2> > _decoders2; | |
| public: | |
| CDecoder(bool multiThread); | |
| HRESULT Decode( | |
| DECL_EXTERNAL_CODECS_LOC_VARS | |
| IInStream *inStream, | |
| UInt64 startPos, | |
| const CFolders &folders, int folderIndex, | |
| ISequentialOutStream *outStream, | |
| ICompressProgressInfo *compressProgress | |
| _7Z_DECODER_CRYPRO_VARS_DECL | |
| #if !defined(_7ZIP_ST) && !defined(_SFX) | |
| , bool mtMode, UInt32 numThreads | |
| #endif | |
| ); | |
| }; | |
| }} | |
| #endif |