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