Imported Upstream version 9.20
[platform/upstream/7zip.git] / CPP / 7zip / Compress / PpmdEncoder.h
1 // PpmdEncoder.h\r
2 // 2009-03-11 : Igor Pavlov : Public domain\r
3 \r
4 #ifndef __COMPRESS_PPMD_ENCODER_H\r
5 #define __COMPRESS_PPMD_ENCODER_H\r
6 \r
7 #include "../../../C/Ppmd7.h"\r
8 \r
9 #include "../../Common/MyCom.h"\r
10 \r
11 #include "../ICoder.h"\r
12 \r
13 #include "../Common/CWrappers.h"\r
14 \r
15 namespace NCompress {\r
16 namespace NPpmd {\r
17 \r
18 class CEncoder :\r
19   public ICompressCoder,\r
20   public ICompressSetCoderProperties,\r
21   public ICompressWriteCoderProperties,\r
22   public CMyUnknownImp\r
23 {\r
24   Byte *_inBuf;\r
25   CByteOutBufWrap _outStream;\r
26   CPpmd7z_RangeEnc _rangeEnc;\r
27   CPpmd7 _ppmd;\r
28 \r
29   UInt32 _usedMemSize;\r
30   Byte _order;\r
31 \r
32 public:\r
33   MY_UNKNOWN_IMP2(\r
34       ICompressSetCoderProperties,\r
35       ICompressWriteCoderProperties)\r
36 \r
37   STDMETHOD(Code)(ISequentialInStream *inStream, ISequentialOutStream *outStream,\r
38       const UInt64 *inSize, const UInt64 *outSize, ICompressProgressInfo *progress);\r
39   STDMETHOD(SetCoderProperties)(const PROPID *propIDs, const PROPVARIANT *props, UInt32 numProps);\r
40   STDMETHOD(WriteCoderProperties)(ISequentialOutStream *outStream);\r
41 \r
42   CEncoder();\r
43   ~CEncoder();\r
44 };\r
45 \r
46 }}\r
47 \r
48 #endif\r