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