1*f6dc9357SAndroid Build Coastguard Worker // InStreamWithCRC.h 2*f6dc9357SAndroid Build Coastguard Worker 3*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_IN_STREAM_WITH_CRC_H 4*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_IN_STREAM_WITH_CRC_H 5*f6dc9357SAndroid Build Coastguard Worker 6*f6dc9357SAndroid Build Coastguard Worker #include "../../../../C/7zCrc.h" 7*f6dc9357SAndroid Build Coastguard Worker 8*f6dc9357SAndroid Build Coastguard Worker #include "../../../Common/MyCom.h" 9*f6dc9357SAndroid Build Coastguard Worker 10*f6dc9357SAndroid Build Coastguard Worker #include "../../IStream.h" 11*f6dc9357SAndroid Build Coastguard Worker 12*f6dc9357SAndroid Build Coastguard Worker Z7_CLASS_IMP_NOQIB_2( 13*f6dc9357SAndroid Build Coastguard Worker CSequentialInStreamWithCRC 14*f6dc9357SAndroid Build Coastguard Worker , ISequentialInStream 15*f6dc9357SAndroid Build Coastguard Worker , IStreamGetSize 16*f6dc9357SAndroid Build Coastguard Worker ) 17*f6dc9357SAndroid Build Coastguard Worker CMyComPtr<ISequentialInStream> _stream; 18*f6dc9357SAndroid Build Coastguard Worker UInt64 _size; 19*f6dc9357SAndroid Build Coastguard Worker UInt32 _crc; 20*f6dc9357SAndroid Build Coastguard Worker bool _wasFinished; 21*f6dc9357SAndroid Build Coastguard Worker UInt64 _fullSize; 22*f6dc9357SAndroid Build Coastguard Worker public: 23*f6dc9357SAndroid Build Coastguard Worker CSequentialInStreamWithCRC()24*f6dc9357SAndroid Build Coastguard Worker CSequentialInStreamWithCRC(): 25*f6dc9357SAndroid Build Coastguard Worker _fullSize((UInt64)(Int64)-1) 26*f6dc9357SAndroid Build Coastguard Worker {} 27*f6dc9357SAndroid Build Coastguard Worker SetStream(ISequentialInStream * stream)28*f6dc9357SAndroid Build Coastguard Worker void SetStream(ISequentialInStream *stream) { _stream = stream; } SetFullSize(UInt64 fullSize)29*f6dc9357SAndroid Build Coastguard Worker void SetFullSize(UInt64 fullSize) { _fullSize = fullSize; } Init()30*f6dc9357SAndroid Build Coastguard Worker void Init() 31*f6dc9357SAndroid Build Coastguard Worker { 32*f6dc9357SAndroid Build Coastguard Worker _size = 0; 33*f6dc9357SAndroid Build Coastguard Worker _crc = CRC_INIT_VAL; 34*f6dc9357SAndroid Build Coastguard Worker _wasFinished = false; 35*f6dc9357SAndroid Build Coastguard Worker } ReleaseStream()36*f6dc9357SAndroid Build Coastguard Worker void ReleaseStream() { _stream.Release(); } GetCRC()37*f6dc9357SAndroid Build Coastguard Worker UInt32 GetCRC() const { return CRC_GET_DIGEST(_crc); } GetSize()38*f6dc9357SAndroid Build Coastguard Worker UInt64 GetSize() const { return _size; } WasFinished()39*f6dc9357SAndroid Build Coastguard Worker bool WasFinished() const { return _wasFinished; } 40*f6dc9357SAndroid Build Coastguard Worker }; 41*f6dc9357SAndroid Build Coastguard Worker 42*f6dc9357SAndroid Build Coastguard Worker 43*f6dc9357SAndroid Build Coastguard Worker Z7_CLASS_IMP_IInStream( 44*f6dc9357SAndroid Build Coastguard Worker CInStreamWithCRC 45*f6dc9357SAndroid Build Coastguard Worker ) 46*f6dc9357SAndroid Build Coastguard Worker CMyComPtr<IInStream> _stream; 47*f6dc9357SAndroid Build Coastguard Worker UInt64 _size; 48*f6dc9357SAndroid Build Coastguard Worker UInt32 _crc; 49*f6dc9357SAndroid Build Coastguard Worker // bool _wasFinished; 50*f6dc9357SAndroid Build Coastguard Worker public: 51*f6dc9357SAndroid Build Coastguard Worker void SetStream(IInStream *stream) { _stream = stream; } 52*f6dc9357SAndroid Build Coastguard Worker void Init() 53*f6dc9357SAndroid Build Coastguard Worker { 54*f6dc9357SAndroid Build Coastguard Worker _size = 0; 55*f6dc9357SAndroid Build Coastguard Worker // _wasFinished = false; 56*f6dc9357SAndroid Build Coastguard Worker _crc = CRC_INIT_VAL; 57*f6dc9357SAndroid Build Coastguard Worker } 58*f6dc9357SAndroid Build Coastguard Worker void ReleaseStream() { _stream.Release(); } 59*f6dc9357SAndroid Build Coastguard Worker UInt32 GetCRC() const { return CRC_GET_DIGEST(_crc); } 60*f6dc9357SAndroid Build Coastguard Worker UInt64 GetSize() const { return _size; } 61*f6dc9357SAndroid Build Coastguard Worker // bool WasFinished() const { return _wasFinished; } 62*f6dc9357SAndroid Build Coastguard Worker }; 63*f6dc9357SAndroid Build Coastguard Worker 64*f6dc9357SAndroid Build Coastguard Worker #endif 65