1 // 7zSpecStream.h 2 3 #ifndef ZIP7_INC_7Z_SPEC_STREAM_H 4 #define ZIP7_INC_7Z_SPEC_STREAM_H 5 6 #include "../../../Common/MyCom.h" 7 8 #include "../../ICoder.h" 9 10 /* 11 #define Z7_COM_QI_ENTRY_AG_2(i, sub0, sub) else if (iid == IID_ ## i) \ 12 { if (!sub) RINOK(sub0->QueryInterface(IID_ ## i, (void **)&sub)) \ 13 { i *ti = this; *outObject = ti; } } 14 15 class CSequentialInStreamSizeCount2 Z7_final: 16 public ISequentialInStream, 17 public ICompressGetSubStreamSize, 18 public ICompressInSubStreams, 19 public CMyUnknownImp 20 { 21 Z7_COM_QI_BEGIN2(ISequentialInStream) 22 Z7_COM_QI_ENTRY(ICompressGetSubStreamSize) 23 Z7_COM_QI_ENTRY_AG_2(ISequentialInStream, _stream, _compressGetSubStreamSize) 24 Z7_COM_QI_END 25 Z7_COM_ADDREF_RELEASE 26 27 Z7_IFACE_COM7_IMP(ISequentialInStream) 28 Z7_IFACE_COM7_IMP(ICompressGetSubStreamSize) 29 Z7_IFACE_COM7_IMP(ICompressInSubStreams) 30 31 CMyComPtr<ISequentialInStream> _stream; 32 CMyComPtr<ICompressGetSubStreamSize> _getSubStreamSize; 33 CMyComPtr<ICompressInSubStreams> _compressGetSubStreamSize; 34 UInt64 _size; 35 public: 36 void Init(ISequentialInStream *stream) 37 { 38 _size = 0; 39 _getSubStreamSize.Release(); 40 _compressGetSubStreamSize.Release(); 41 _stream = stream; 42 _stream.QueryInterface(IID_ICompressGetSubStreamSize, &_getSubStreamSize); 43 _stream.QueryInterface(IID_ICompressInSubStreams, &_compressGetSubStreamSize); 44 } 45 UInt64 GetSize() const { return _size; } 46 }; 47 */ 48 49 #endif 50