• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // PpmdDecoder.h
2 
3 #ifndef ZIP7_INC_COMPRESS_PPMD_DECODER_H
4 #define ZIP7_INC_COMPRESS_PPMD_DECODER_H
5 
6 #include "../../../C/Ppmd7.h"
7 
8 #include "../../Common/MyCom.h"
9 
10 #include "../ICoder.h"
11 
12 #include "../Common/CWrappers.h"
13 
14 namespace NCompress {
15 namespace NPpmd {
16 
17 class CDecoder Z7_final:
18   public ICompressCoder,
19   public ICompressSetDecoderProperties2,
20   public ICompressSetFinishMode,
21   public ICompressGetInStreamProcessedSize,
22  #ifndef Z7_NO_READ_FROM_CODER
23   public ICompressSetInStream,
24   public ICompressSetOutStreamSize,
25   public ISequentialInStream,
26  #endif
27   public CMyUnknownImp
28 {
29   Z7_COM_QI_BEGIN2(ICompressCoder)
30   Z7_COM_QI_ENTRY(ICompressSetDecoderProperties2)
31   Z7_COM_QI_ENTRY(ICompressSetFinishMode)
32   Z7_COM_QI_ENTRY(ICompressGetInStreamProcessedSize)
33  #ifndef Z7_NO_READ_FROM_CODER
34   Z7_COM_QI_ENTRY(ICompressSetInStream)
35   Z7_COM_QI_ENTRY(ICompressSetOutStreamSize)
36   Z7_COM_QI_ENTRY(ISequentialInStream)
37  #endif
38   Z7_COM_QI_END
39   Z7_COM_ADDREF_RELEASE
40 
41   Z7_IFACE_COM7_IMP(ICompressCoder)
42   Z7_IFACE_COM7_IMP(ICompressSetDecoderProperties2)
43   Z7_IFACE_COM7_IMP(ICompressSetFinishMode)
44   Z7_IFACE_COM7_IMP(ICompressGetInStreamProcessedSize)
45  #ifndef Z7_NO_READ_FROM_CODER
46   Z7_IFACE_COM7_IMP(ICompressSetOutStreamSize)
47   Z7_IFACE_COM7_IMP(ICompressSetInStream)
48   Z7_IFACE_COM7_IMP(ISequentialInStream)
49  #else
50   Z7_COM7F_IMF(SetOutStreamSize(const UInt64 *outSize));
51  #endif
52 
53   Byte *_outBuf;
54   CByteInBufWrap _inStream;
55   CPpmd7 _ppmd;
56 
57   Byte _order;
58   bool  FinishStream;
59   bool _outSizeDefined;
60   HRESULT _res;
61   int _status;
62   UInt64 _outSize;
63   UInt64 _processedSize;
64 
65   HRESULT CodeSpec(Byte *memStream, UInt32 size);
66 
67 public:
68 
69  #ifndef Z7_NO_READ_FROM_CODER
70   CMyComPtr<ISequentialInStream> InSeqStream;
71  #endif
72 
CDecoder()73   CDecoder():
74       _outBuf(NULL),
75       FinishStream(false),
76       _outSizeDefined(false)
77   {
78     Ppmd7_Construct(&_ppmd);
79     _ppmd.rc.dec.Stream = &_inStream.vt;
80   }
81 
82   ~CDecoder();
83 };
84 
85 }}
86 
87 #endif
88