3 #ifndef __IN_STREAM_WITH_CRC_H
\r
4 #define __IN_STREAM_WITH_CRC_H
\r
6 #include "../../../../C/7zCrc.h"
\r
8 #include "../../../Common/MyCom.h"
\r
10 #include "../../IStream.h"
\r
12 class CSequentialInStreamWithCRC:
\r
13 public ISequentialInStream,
\r
14 public CMyUnknownImp
\r
19 STDMETHOD(Read)(void *data, UInt32 size, UInt32 *processedSize);
\r
21 CMyComPtr<ISequentialInStream> _stream;
\r
26 void SetStream(ISequentialInStream *stream) { _stream = stream; }
\r
30 _wasFinished = false;
\r
31 _crc = CRC_INIT_VAL;
\r
33 void ReleaseStream() { _stream.Release(); }
\r
34 UInt32 GetCRC() const { return CRC_GET_DIGEST(_crc); }
\r
35 UInt64 GetSize() const { return _size; }
\r
36 bool WasFinished() const { return _wasFinished; }
\r
39 class CInStreamWithCRC:
\r
41 public CMyUnknownImp
\r
44 MY_UNKNOWN_IMP1(IInStream)
\r
46 STDMETHOD(Read)(void *data, UInt32 size, UInt32 *processedSize);
\r
47 STDMETHOD(Seek)(Int64 offset, UInt32 seekOrigin, UInt64 *newPosition);
\r
49 CMyComPtr<IInStream> _stream;
\r
52 // bool _wasFinished;
\r
54 void SetStream(IInStream *stream) { _stream = stream; }
\r
58 // _wasFinished = false;
\r
59 _crc = CRC_INIT_VAL;
\r
61 void ReleaseStream() { _stream.Release(); }
\r
62 UInt32 GetCRC() const { return CRC_GET_DIGEST(_crc); }
\r
63 UInt64 GetSize() const { return _size; }
\r
64 // bool WasFinished() const { return _wasFinished; }
\r