| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- // InStreamWithCRC.h
- #ifndef __INSTREAMWITHCRC_H
- #define __INSTREAMWITHCRC_H
- #include "../../../Common/MyCom.h"
- #include "../../IStream.h"
- extern "C"
- {
- #include "../../../../C/7zCrc.h"
- }
- class CSequentialInStreamWithCRC:
- public ISequentialInStream,
- public CMyUnknownImp
- {
- public:
- MY_UNKNOWN_IMP
- STDMETHOD(Read)(void *data, UInt32 size, UInt32 *processedSize);
- private:
- CMyComPtr<ISequentialInStream> _stream;
- UInt64 _size;
- UInt32 _crc;
- bool _wasFinished;
- public:
- void SetStream(ISequentialInStream *stream) { _stream = stream; }
- void Init()
- {
- _size = 0;
- _wasFinished = false;
- _crc = CRC_INIT_VAL;
- }
- void ReleaseStream() { _stream.Release(); }
- UInt32 GetCRC() const { return CRC_GET_DIGEST(_crc); }
- UInt64 GetSize() const { return _size; }
- bool WasFinished() const { return _wasFinished; }
- };
- class CInStreamWithCRC:
- public IInStream,
- public CMyUnknownImp
- {
- public:
- MY_UNKNOWN_IMP1(IInStream)
- STDMETHOD(Read)(void *data, UInt32 size, UInt32 *processedSize);
- STDMETHOD(Seek)(Int64 offset, UInt32 seekOrigin, UInt64 *newPosition);
- private:
- CMyComPtr<IInStream> _stream;
- UInt64 _size;
- UInt32 _crc;
- bool _wasFinished;
- public:
- void SetStream(IInStream *stream) { _stream = stream; }
- void Init()
- {
- _size = 0;
- _wasFinished = false;
- _crc = CRC_INIT_VAL;
- }
- void ReleaseStream() { _stream.Release(); }
- UInt32 GetCRC() const { return CRC_GET_DIGEST(_crc); }
- UInt64 GetSize() const { return _size; }
- bool WasFinished() const { return _wasFinished; }
- };
- #endif
|