misc/libphysfs/lzma/CPP/7zip/Archive/7z/7zDecode.h
branchui-scaling
changeset 15283 c4fd2813b127
parent 13390 0135e64c6c66
parent 15279 7ab5cf405686
child 15663 d92eeb468dad
equal deleted inserted replaced
13390:0135e64c6c66 15283:c4fd2813b127
     1 // 7zDecode.h
       
     2 
       
     3 #ifndef __7Z_DECODE_H
       
     4 #define __7Z_DECODE_H
       
     5 
       
     6 #include "../../IStream.h"
       
     7 #include "../../IPassword.h"
       
     8 
       
     9 #include "../Common/CoderMixer2.h"
       
    10 #include "../Common/CoderMixer2MT.h"
       
    11 #ifdef _ST_MODE
       
    12 #include "../Common/CoderMixer2ST.h"
       
    13 #endif
       
    14 
       
    15 #include "../../Common/CreateCoder.h"
       
    16 
       
    17 #include "7zItem.h"
       
    18 
       
    19 namespace NArchive {
       
    20 namespace N7z {
       
    21 
       
    22 struct CBindInfoEx: public NCoderMixer::CBindInfo
       
    23 {
       
    24   CRecordVector<CMethodId> CoderMethodIDs;
       
    25   void Clear()
       
    26   {
       
    27     CBindInfo::Clear();
       
    28     CoderMethodIDs.Clear();
       
    29   }
       
    30 };
       
    31 
       
    32 class CDecoder
       
    33 {
       
    34   bool _bindInfoExPrevIsDefined;
       
    35   CBindInfoEx _bindInfoExPrev;
       
    36   
       
    37   bool _multiThread;
       
    38   #ifdef _ST_MODE
       
    39   NCoderMixer::CCoderMixer2ST *_mixerCoderSTSpec;
       
    40   #endif
       
    41   NCoderMixer::CCoderMixer2MT *_mixerCoderMTSpec;
       
    42   NCoderMixer::CCoderMixer2 *_mixerCoderCommon;
       
    43   
       
    44   CMyComPtr<ICompressCoder2> _mixerCoder;
       
    45   CObjectVector<CMyComPtr<IUnknown> > _decoders;
       
    46   // CObjectVector<CMyComPtr<ICompressCoder2> > _decoders2;
       
    47 public:
       
    48   CDecoder(bool multiThread);
       
    49   HRESULT Decode(
       
    50       DECL_EXTERNAL_CODECS_LOC_VARS
       
    51       IInStream *inStream,
       
    52       UInt64 startPos,
       
    53       const UInt64 *packSizes,
       
    54       const CFolder &folder, 
       
    55       ISequentialOutStream *outStream,
       
    56       ICompressProgressInfo *compressProgress
       
    57       #ifndef _NO_CRYPTO
       
    58       , ICryptoGetTextPassword *getTextPasswordSpec
       
    59       #endif
       
    60       #ifdef COMPRESS_MT
       
    61       , bool mtMode, UInt32 numThreads
       
    62       #endif
       
    63       );
       
    64 };
       
    65 
       
    66 }}
       
    67 
       
    68 #endif