3 #ifndef __INSTREAMWITHCRC_H
4 #define __INSTREAMWITHCRC_H
6 #include "../../../Common/MyCom.h"
7 #include "../../IStream.h"
11 #include "../../../../C/7zCrc.h"
14 class CSequentialInStreamWithCRC:
15 public ISequentialInStream,
21 STDMETHOD(Read)(void *data, UInt32 size, UInt32 *processedSize);
23 CMyComPtr<ISequentialInStream> _stream;
28 void SetStream(ISequentialInStream *stream) { _stream = stream; }
35 void ReleaseStream() { _stream.Release(); }
36 UInt32 GetCRC() const { return CRC_GET_DIGEST(_crc); }
37 UInt64 GetSize() const { return _size; }
38 bool WasFinished() const { return _wasFinished; }
41 class CInStreamWithCRC:
46 MY_UNKNOWN_IMP1(IInStream)
48 STDMETHOD(Read)(void *data, UInt32 size, UInt32 *processedSize);
49 STDMETHOD(Seek)(Int64 offset, UInt32 seekOrigin, UInt64 *newPosition);
51 CMyComPtr<IInStream> _stream;
56 void SetStream(IInStream *stream) { _stream = stream; }
63 void ReleaseStream() { _stream.Release(); }
64 UInt32 GetCRC() const { return CRC_GET_DIGEST(_crc); }
65 UInt64 GetSize() const { return _size; }
66 bool WasFinished() const { return _wasFinished; }