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 19namespace NArchive { 20namespace N7z { 21 22class 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; 39public: 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 56