1baa3858d3f5d128a5c8466b700098109edcad5f2repo sync// 7zEncode.h
2baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
3baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#ifndef __7Z_ENCODE_H
4baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#define __7Z_ENCODE_H
5baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
6baa3858d3f5d128a5c8466b700098109edcad5f2repo sync// #include "../../Common/StreamObjects.h"
7baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
8baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#include "7zCompressionMode.h"
9baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
10baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#include "../Common/CoderMixer2.h"
11baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#include "../Common/CoderMixer2MT.h"
12baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#ifdef _ST_MODE
13baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#include "../Common/CoderMixer2ST.h"
14baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#endif
15baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#include "7zItem.h"
16baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
17baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#include "../../Common/CreateCoder.h"
18baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
19baa3858d3f5d128a5c8466b700098109edcad5f2repo syncnamespace NArchive {
20baa3858d3f5d128a5c8466b700098109edcad5f2repo syncnamespace N7z {
21baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
22baa3858d3f5d128a5c8466b700098109edcad5f2repo syncclass CEncoder
23baa3858d3f5d128a5c8466b700098109edcad5f2repo sync{
24baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  NCoderMixer::CCoderMixer2MT *_mixerCoderSpec;
25baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  CMyComPtr<ICompressCoder2> _mixerCoder;
26baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
27baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  CObjectVector<CCoderInfo> _codersInfo;
28baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
29baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  CCompressionMethodMode _options;
30baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  NCoderMixer::CBindInfo _bindInfo;
31baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  NCoderMixer::CBindInfo _decompressBindInfo;
32baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  NCoderMixer::CBindReverseConverter *_bindReverseConverter;
33baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  CRecordVector<CMethodId> _decompressionMethods;
34baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
35baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  HRESULT CreateMixerCoder(DECL_EXTERNAL_CODECS_LOC_VARS
36baa3858d3f5d128a5c8466b700098109edcad5f2repo sync      const UInt64 *inSizeForReduce);
37baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
38baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  bool _constructed;
39baa3858d3f5d128a5c8466b700098109edcad5f2repo syncpublic:
40baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  CEncoder(const CCompressionMethodMode &options);
41baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  ~CEncoder();
42baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  HRESULT EncoderConstr();
43baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  HRESULT Encode(
44baa3858d3f5d128a5c8466b700098109edcad5f2repo sync      DECL_EXTERNAL_CODECS_LOC_VARS
45baa3858d3f5d128a5c8466b700098109edcad5f2repo sync      ISequentialInStream *inStream,
46baa3858d3f5d128a5c8466b700098109edcad5f2repo sync      const UInt64 *inStreamSize, const UInt64 *inSizeForReduce,
47baa3858d3f5d128a5c8466b700098109edcad5f2repo sync      CFolder &folderItem,
48cd66d540cead3f8200b0c73bad9c276d67896c3dDavid Srbecky      CRecordVector<UInt64> &coderUnpackSizes,
49cd66d540cead3f8200b0c73bad9c276d67896c3dDavid Srbecky      UInt64 &unpackSize,
50baa3858d3f5d128a5c8466b700098109edcad5f2repo sync      ISequentialOutStream *outStream,
51baa3858d3f5d128a5c8466b700098109edcad5f2repo sync      CRecordVector<UInt64> &packSizes,
52baa3858d3f5d128a5c8466b700098109edcad5f2repo sync      ICompressProgressInfo *compressProgress);
53baa3858d3f5d128a5c8466b700098109edcad5f2repo sync};
54baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
55baa3858d3f5d128a5c8466b700098109edcad5f2repo sync}}
56baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
57baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#endif
58