1370b324cSopenharmony_ci// 7zSpecStream.h
2370b324cSopenharmony_ci
3370b324cSopenharmony_ci#ifndef ZIP7_INC_7Z_SPEC_STREAM_H
4370b324cSopenharmony_ci#define ZIP7_INC_7Z_SPEC_STREAM_H
5370b324cSopenharmony_ci
6370b324cSopenharmony_ci#include "../../../Common/MyCom.h"
7370b324cSopenharmony_ci
8370b324cSopenharmony_ci#include "../../ICoder.h"
9370b324cSopenharmony_ci
10370b324cSopenharmony_ci/*
11370b324cSopenharmony_ci#define Z7_COM_QI_ENTRY_AG_2(i, sub0, sub) else if (iid == IID_ ## i) \
12370b324cSopenharmony_ci  { if (!sub) RINOK(sub0->QueryInterface(IID_ ## i, (void **)&sub)) \
13370b324cSopenharmony_ci    { i *ti = this;  *outObject = ti; }  }
14370b324cSopenharmony_ci
15370b324cSopenharmony_ciclass CSequentialInStreamSizeCount2 Z7_final:
16370b324cSopenharmony_ci  public ISequentialInStream,
17370b324cSopenharmony_ci  public ICompressGetSubStreamSize,
18370b324cSopenharmony_ci  public ICompressInSubStreams,
19370b324cSopenharmony_ci  public CMyUnknownImp
20370b324cSopenharmony_ci{
21370b324cSopenharmony_ci  Z7_COM_QI_BEGIN2(ISequentialInStream)
22370b324cSopenharmony_ci    Z7_COM_QI_ENTRY(ICompressGetSubStreamSize)
23370b324cSopenharmony_ci    Z7_COM_QI_ENTRY_AG_2(ISequentialInStream, _stream, _compressGetSubStreamSize)
24370b324cSopenharmony_ci  Z7_COM_QI_END
25370b324cSopenharmony_ci  Z7_COM_ADDREF_RELEASE
26370b324cSopenharmony_ci
27370b324cSopenharmony_ci  Z7_IFACE_COM7_IMP(ISequentialInStream)
28370b324cSopenharmony_ci  Z7_IFACE_COM7_IMP(ICompressGetSubStreamSize)
29370b324cSopenharmony_ci  Z7_IFACE_COM7_IMP(ICompressInSubStreams)
30370b324cSopenharmony_ci
31370b324cSopenharmony_ci  CMyComPtr<ISequentialInStream> _stream;
32370b324cSopenharmony_ci  CMyComPtr<ICompressGetSubStreamSize> _getSubStreamSize;
33370b324cSopenharmony_ci  CMyComPtr<ICompressInSubStreams> _compressGetSubStreamSize;
34370b324cSopenharmony_ci  UInt64 _size;
35370b324cSopenharmony_cipublic:
36370b324cSopenharmony_ci  void Init(ISequentialInStream *stream)
37370b324cSopenharmony_ci  {
38370b324cSopenharmony_ci    _size = 0;
39370b324cSopenharmony_ci    _getSubStreamSize.Release();
40370b324cSopenharmony_ci    _compressGetSubStreamSize.Release();
41370b324cSopenharmony_ci    _stream = stream;
42370b324cSopenharmony_ci    _stream.QueryInterface(IID_ICompressGetSubStreamSize, &_getSubStreamSize);
43370b324cSopenharmony_ci    _stream.QueryInterface(IID_ICompressInSubStreams, &_compressGetSubStreamSize);
44370b324cSopenharmony_ci  }
45370b324cSopenharmony_ci  UInt64 GetSize() const { return _size; }
46370b324cSopenharmony_ci};
47370b324cSopenharmony_ci*/
48370b324cSopenharmony_ci
49370b324cSopenharmony_ci#endif
50