Imported Upstream version 9.20
[platform/upstream/7zip.git] / CPP / 7zip / Archive / 7z / 7zSpecStream.h
1 // 7zSpecStream.h\r
2 \r
3 #ifndef __7Z_SPEC_STREAM_H\r
4 #define __7Z_SPEC_STREAM_H\r
5 \r
6 #include "../../IStream.h"\r
7 #include "../../ICoder.h"\r
8 #include "../../../Common/MyCom.h"\r
9 \r
10 class CSequentialInStreamSizeCount2:\r
11   public ISequentialInStream,\r
12   public ICompressGetSubStreamSize,\r
13   public CMyUnknownImp\r
14 {\r
15   CMyComPtr<ISequentialInStream> _stream;\r
16   CMyComPtr<ICompressGetSubStreamSize> _getSubStreamSize;\r
17   UInt64 _size;\r
18 public:\r
19   void Init(ISequentialInStream *stream)\r
20   {\r
21     _stream = stream;\r
22     _getSubStreamSize = 0;\r
23     _stream.QueryInterface(IID_ICompressGetSubStreamSize, &_getSubStreamSize);\r
24     _size = 0;\r
25   }\r
26   UInt64 GetSize() const { return _size; }\r
27 \r
28   MY_UNKNOWN_IMP1(ICompressGetSubStreamSize)\r
29 \r
30   STDMETHOD(Read)(void *data, UInt32 size, UInt32 *processedSize);\r
31 \r
32   STDMETHOD(GetSubStreamSize)(UInt64 subStream, UInt64 *value);\r
33 };\r
34 \r
35 #endif\r