misc/libphysfs/lzma/CPP/7zip/Archive/7z/7zEncode.h
branchui-scaling
changeset 15283 c4fd2813b127
parent 13390 0135e64c6c66
parent 15279 7ab5cf405686
child 15663 d92eeb468dad
equal deleted inserted replaced
13390:0135e64c6c66 15283:c4fd2813b127
     1 // 7zEncode.h
       
     2 
       
     3 #ifndef __7Z_ENCODE_H
       
     4 #define __7Z_ENCODE_H
       
     5 
       
     6 // #include "../../Common/StreamObjects.h"
       
     7 
       
     8 #include "7zCompressionMode.h"
       
     9 
       
    10 #include "../Common/CoderMixer2.h"
       
    11 #include "../Common/CoderMixer2MT.h"
       
    12 #ifdef _ST_MODE
       
    13 #include "../Common/CoderMixer2ST.h"
       
    14 #endif
       
    15 #include "7zItem.h"
       
    16 
       
    17 #include "../../Common/CreateCoder.h"
       
    18 
       
    19 namespace NArchive {
       
    20 namespace N7z {
       
    21 
       
    22 class CEncoder
       
    23 {
       
    24   NCoderMixer::CCoderMixer2MT *_mixerCoderSpec;
       
    25   CMyComPtr<ICompressCoder2> _mixerCoder;
       
    26 
       
    27   CObjectVector<CCoderInfo> _codersInfo;
       
    28 
       
    29   CCompressionMethodMode _options;
       
    30   NCoderMixer::CBindInfo _bindInfo;
       
    31   NCoderMixer::CBindInfo _decompressBindInfo;
       
    32   NCoderMixer::CBindReverseConverter *_bindReverseConverter;
       
    33   CRecordVector<CMethodId> _decompressionMethods;
       
    34 
       
    35   HRESULT CreateMixerCoder(DECL_EXTERNAL_CODECS_LOC_VARS
       
    36       const UInt64 *inSizeForReduce);
       
    37 
       
    38   bool _constructed;
       
    39 public:
       
    40   CEncoder(const CCompressionMethodMode &options);
       
    41   ~CEncoder();
       
    42   HRESULT EncoderConstr();
       
    43   HRESULT Encode(
       
    44       DECL_EXTERNAL_CODECS_LOC_VARS
       
    45       ISequentialInStream *inStream,
       
    46       const UInt64 *inStreamSize, const UInt64 *inSizeForReduce,
       
    47       CFolder &folderItem,
       
    48       ISequentialOutStream *outStream,
       
    49       CRecordVector<UInt64> &packSizes,
       
    50       ICompressProgressInfo *compressProgress);
       
    51 };
       
    52 
       
    53 }}
       
    54 
       
    55 #endif