rlm@1
|
1 // LzmaDecoder.h
|
rlm@1
|
2
|
rlm@1
|
3 #ifndef __LZMA_DECODER_H
|
rlm@1
|
4 #define __LZMA_DECODER_H
|
rlm@1
|
5
|
rlm@1
|
6 extern "C"
|
rlm@1
|
7 {
|
rlm@1
|
8 #include "../../../C/LzmaDec.h"
|
rlm@1
|
9 }
|
rlm@1
|
10
|
rlm@1
|
11 #include "../../Common/MyCom.h"
|
rlm@1
|
12 #include "../ICoder.h"
|
rlm@1
|
13
|
rlm@1
|
14 namespace NCompress {
|
rlm@1
|
15 namespace NLzma {
|
rlm@1
|
16
|
rlm@1
|
17 class CDecoder:
|
rlm@1
|
18 public ICompressCoder,
|
rlm@1
|
19 public ICompressSetDecoderProperties2,
|
rlm@1
|
20 public ICompressGetInStreamProcessedSize,
|
rlm@1
|
21 #ifndef NO_READ_FROM_CODER
|
rlm@1
|
22 public ICompressSetInStream,
|
rlm@1
|
23 public ICompressSetOutStreamSize,
|
rlm@1
|
24 public ISequentialInStream,
|
rlm@1
|
25 #endif
|
rlm@1
|
26 public CMyUnknownImp
|
rlm@1
|
27 {
|
rlm@1
|
28 CMyComPtr<ISequentialInStream> _inStream;
|
rlm@1
|
29 Byte *_inBuf;
|
rlm@1
|
30 UInt32 _inPos;
|
rlm@1
|
31 UInt32 _inSize;
|
rlm@1
|
32 CLzmaDec _state;
|
rlm@1
|
33 bool _outSizeDefined;
|
rlm@1
|
34 UInt64 _outSize;
|
rlm@1
|
35 UInt64 _inSizeProcessed;
|
rlm@1
|
36 UInt64 _outSizeProcessed;
|
rlm@1
|
37 public:
|
rlm@1
|
38
|
rlm@1
|
39 #ifndef NO_READ_FROM_CODER
|
rlm@1
|
40 MY_UNKNOWN_IMP5(
|
rlm@1
|
41 ICompressSetDecoderProperties2,
|
rlm@1
|
42 ICompressGetInStreamProcessedSize,
|
rlm@1
|
43 ICompressSetInStream,
|
rlm@1
|
44 ICompressSetOutStreamSize,
|
rlm@1
|
45 ISequentialInStream)
|
rlm@1
|
46 #else
|
rlm@1
|
47 MY_UNKNOWN_IMP2(
|
rlm@1
|
48 ICompressSetDecoderProperties2,
|
rlm@1
|
49 ICompressGetInStreamProcessedSize)
|
rlm@1
|
50 #endif
|
rlm@1
|
51
|
rlm@1
|
52 STDMETHOD(Code)(ISequentialInStream *inStream, ISequentialOutStream *outStream,
|
rlm@1
|
53 const UInt64 *inSize, const UInt64 *outSize, ICompressProgressInfo *progress);
|
rlm@1
|
54 STDMETHOD(SetDecoderProperties2)(const Byte *data, UInt32 size);
|
rlm@1
|
55 STDMETHOD(GetInStreamProcessedSize)(UInt64 *value);
|
rlm@1
|
56 STDMETHOD(SetInStream)(ISequentialInStream *inStream);
|
rlm@1
|
57 STDMETHOD(ReleaseInStream)();
|
rlm@1
|
58 STDMETHOD(SetOutStreamSize)(const UInt64 *outSize);
|
rlm@1
|
59
|
rlm@1
|
60 #ifndef NO_READ_FROM_CODER
|
rlm@1
|
61 STDMETHOD(Read)(void *data, UInt32 size, UInt32 *processedSize);
|
rlm@1
|
62 #endif
|
rlm@1
|
63
|
rlm@1
|
64 bool FinishStream;
|
rlm@1
|
65
|
rlm@1
|
66 CDecoder();
|
rlm@1
|
67 virtual ~CDecoder();
|
rlm@1
|
68
|
rlm@1
|
69 };
|
rlm@1
|
70
|
rlm@1
|
71 }}
|
rlm@1
|
72
|
rlm@1
|
73 #endif
|