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