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