7zSpecStream.h 841 B

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