Home | History | Annotate | Download | only in 7z
      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       CRecordVector<UInt64> &coderUnpackSizes,
     49       UInt64 &unpackSize,
     50       ISequentialOutStream *outStream,
     51       CRecordVector<UInt64> &packSizes,
     52       ICompressProgressInfo *compressProgress);
     53 };
     54 
     55 }}
     56 
     57 #endif
     58