Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/kornelski/7z.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '7zip/Compress/PPMD/PPMDDecoder.h')
-rwxr-xr-x7zip/Compress/PPMD/PPMDDecoder.h35
1 files changed, 33 insertions, 2 deletions
diff --git a/7zip/Compress/PPMD/PPMDDecoder.h b/7zip/Compress/PPMD/PPMDDecoder.h
index a5c2d18e..bbb68ac5 100755
--- a/7zip/Compress/PPMD/PPMDDecoder.h
+++ b/7zip/Compress/PPMD/PPMDDecoder.h
@@ -17,6 +17,11 @@ namespace NPPMD {
class CDecoder :
public ICompressCoder,
public ICompressSetDecoderProperties2,
+ #ifdef _ST_MODE
+ public ICompressSetInStream,
+ public ICompressSetOutStreamSize,
+ public ISequentialInStream,
+ #endif
public CMyUnknownImp
{
NRangeCoder::CDecoder _rangeDecoder;
@@ -28,13 +33,28 @@ class CDecoder :
Byte _order;
UInt32 _usedMemorySize;
+ int _remainLen;
+ UInt64 _outSize;
+ bool _outSizeDefined;
+ UInt64 _processedSize;
+
+ HRESULT CodeSpec(UInt32 num, Byte *memStream);
public:
- MY_UNKNOWN_IMP1(ICompressSetDecoderProperties2)
+ #ifdef _ST_MODE
+ MY_UNKNOWN_IMP4(
+ ICompressSetDecoderProperties2,
+ ICompressSetInStream,
+ ICompressSetOutStreamSize,
+ ISequentialInStream)
+ #else
+ MY_UNKNOWN_IMP1(
+ ICompressSetDecoderProperties2)
+ #endif
void ReleaseStreams()
{
- _rangeDecoder.ReleaseStream();
+ ReleaseInStream();
_outStream.ReleaseStream();
}
@@ -51,6 +71,17 @@ public:
STDMETHOD(SetDecoderProperties2)(const Byte *data, UInt32 size);
+
+ STDMETHOD(SetInStream)(ISequentialInStream *inStream);
+ STDMETHOD(ReleaseInStream)();
+ STDMETHOD(SetOutStreamSize)(const UInt64 *outSize);
+
+ #ifdef _ST_MODE
+ STDMETHOD(Read)(void *data, UInt32 size, UInt32 *processedSize);
+ #endif
+
+ CDecoder(): _outSizeDefined(false) {}
+
};
}}