1baa3858d3f5d128a5c8466b700098109edcad5f2repo sync// 7zDecode.h
2baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
3baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#ifndef __7Z_DECODE_H
4baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#define __7Z_DECODE_H
5baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
6baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#include "../../IStream.h"
7baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#include "../../IPassword.h"
8baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
9baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#include "../Common/CoderMixer2.h"
10baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#include "../Common/CoderMixer2MT.h"
11baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#ifdef _ST_MODE
12baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#include "../Common/CoderMixer2ST.h"
13baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#endif
14baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
15baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#include "../../Common/CreateCoder.h"
16baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
17baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#include "7zItem.h"
18baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
19baa3858d3f5d128a5c8466b700098109edcad5f2repo syncnamespace NArchive {
20baa3858d3f5d128a5c8466b700098109edcad5f2repo syncnamespace N7z {
21baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
22baa3858d3f5d128a5c8466b700098109edcad5f2repo syncstruct CBindInfoEx: public NCoderMixer::CBindInfo
23baa3858d3f5d128a5c8466b700098109edcad5f2repo sync{
24baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  CRecordVector<CMethodId> CoderMethodIDs;
25baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  void Clear()
26baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  {
27baa3858d3f5d128a5c8466b700098109edcad5f2repo sync    CBindInfo::Clear();
28baa3858d3f5d128a5c8466b700098109edcad5f2repo sync    CoderMethodIDs.Clear();
29baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  }
30baa3858d3f5d128a5c8466b700098109edcad5f2repo sync};
31baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
32baa3858d3f5d128a5c8466b700098109edcad5f2repo syncclass CDecoder
33baa3858d3f5d128a5c8466b700098109edcad5f2repo sync{
34baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  bool _bindInfoExPrevIsDefined;
35baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  CBindInfoEx _bindInfoExPrev;
36baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
37baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  bool _multiThread;
38baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  #ifdef _ST_MODE
39baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  NCoderMixer::CCoderMixer2ST *_mixerCoderSTSpec;
40baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  #endif
41baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  NCoderMixer::CCoderMixer2MT *_mixerCoderMTSpec;
42baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  NCoderMixer::CCoderMixer2 *_mixerCoderCommon;
43baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
44baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  CMyComPtr<ICompressCoder2> _mixerCoder;
45baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  CObjectVector<CMyComPtr<IUnknown> > _decoders;
46baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  // CObjectVector<CMyComPtr<ICompressCoder2> > _decoders2;
47baa3858d3f5d128a5c8466b700098109edcad5f2repo syncpublic:
48baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  CDecoder(bool multiThread);
49baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  HRESULT Decode(
50baa3858d3f5d128a5c8466b700098109edcad5f2repo sync      DECL_EXTERNAL_CODECS_LOC_VARS
51baa3858d3f5d128a5c8466b700098109edcad5f2repo sync      IInStream *inStream,
52baa3858d3f5d128a5c8466b700098109edcad5f2repo sync      UInt64 startPos,
53baa3858d3f5d128a5c8466b700098109edcad5f2repo sync      const UInt64 *packSizes,
54baa3858d3f5d128a5c8466b700098109edcad5f2repo sync      const CFolder &folder,
55baa3858d3f5d128a5c8466b700098109edcad5f2repo sync      ISequentialOutStream *outStream,
56baa3858d3f5d128a5c8466b700098109edcad5f2repo sync      ICompressProgressInfo *compressProgress
57baa3858d3f5d128a5c8466b700098109edcad5f2repo sync      #ifndef _NO_CRYPTO
58baa3858d3f5d128a5c8466b700098109edcad5f2repo sync      , ICryptoGetTextPassword *getTextPasswordSpec, bool &passwordIsDefined
59baa3858d3f5d128a5c8466b700098109edcad5f2repo sync      #endif
60baa3858d3f5d128a5c8466b700098109edcad5f2repo sync      #if !defined(_7ZIP_ST) && !defined(_SFX)
61baa3858d3f5d128a5c8466b700098109edcad5f2repo sync      , bool mtMode, UInt32 numThreads
62baa3858d3f5d128a5c8466b700098109edcad5f2repo sync      #endif
63baa3858d3f5d128a5c8466b700098109edcad5f2repo sync      );
64baa3858d3f5d128a5c8466b700098109edcad5f2repo sync};
65baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
66baa3858d3f5d128a5c8466b700098109edcad5f2repo sync}}
67baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
68baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#endif
69