// 7zEncode.h | |
#ifndef __7Z_ENCODE_H | |
#define __7Z_ENCODE_H | |
// #include "../../Common/StreamObjects.h" | |
#include "7zCompressionMode.h" | |
#include "../Common/CoderMixer2.h" | |
#include "../Common/CoderMixer2MT.h" | |
#ifdef _ST_MODE | |
#include "../Common/CoderMixer2ST.h" | |
#endif | |
#include "7zItem.h" | |
#include "../../Common/CreateCoder.h" | |
namespace NArchive { | |
namespace N7z { | |
class CEncoder | |
{ | |
NCoderMixer::CCoderMixer2MT *_mixerCoderSpec; | |
CMyComPtr<ICompressCoder2> _mixerCoder; | |
CObjectVector<CCoderInfo> _codersInfo; | |
CCompressionMethodMode _options; | |
NCoderMixer::CBindInfo _bindInfo; | |
NCoderMixer::CBindInfo _decompressBindInfo; | |
NCoderMixer::CBindReverseConverter *_bindReverseConverter; | |
CRecordVector<CMethodId> _decompressionMethods; | |
HRESULT CreateMixerCoder(DECL_EXTERNAL_CODECS_LOC_VARS | |
const UInt64 *inSizeForReduce); | |
bool _constructed; | |
public: | |
CEncoder(const CCompressionMethodMode &options); | |
~CEncoder(); | |
HRESULT EncoderConstr(); | |
HRESULT Encode( | |
DECL_EXTERNAL_CODECS_LOC_VARS | |
ISequentialInStream *inStream, | |
const UInt64 *inStreamSize, const UInt64 *inSizeForReduce, | |
CFolder &folderItem, | |
CRecordVector<UInt64> &coderUnpackSizes, | |
UInt64 &unpackSize, | |
ISequentialOutStream *outStream, | |
CRecordVector<UInt64> &packSizes, | |
ICompressProgressInfo *compressProgress); | |
}; | |
}} | |
#endif |