1*f6dc9357SAndroid Build Coastguard Worker // OutStreamWithCRC.h 2*f6dc9357SAndroid Build Coastguard Worker 3*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_OUT_STREAM_WITH_CRC_H 4*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_OUT_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_1( 13*f6dc9357SAndroid Build Coastguard Worker COutStreamWithCRC 14*f6dc9357SAndroid Build Coastguard Worker , ISequentialOutStream 15*f6dc9357SAndroid Build Coastguard Worker ) 16*f6dc9357SAndroid Build Coastguard Worker CMyComPtr<ISequentialOutStream> _stream; 17*f6dc9357SAndroid Build Coastguard Worker UInt64 _size; 18*f6dc9357SAndroid Build Coastguard Worker UInt32 _crc; 19*f6dc9357SAndroid Build Coastguard Worker bool _calculate; 20*f6dc9357SAndroid Build Coastguard Worker public: SetStream(ISequentialOutStream * stream)21*f6dc9357SAndroid Build Coastguard Worker void SetStream(ISequentialOutStream *stream) { _stream = stream; } ReleaseStream()22*f6dc9357SAndroid Build Coastguard Worker void ReleaseStream() { _stream.Release(); } 23*f6dc9357SAndroid Build Coastguard Worker void Init(bool calculate = true) 24*f6dc9357SAndroid Build Coastguard Worker { 25*f6dc9357SAndroid Build Coastguard Worker _size = 0; 26*f6dc9357SAndroid Build Coastguard Worker _calculate = calculate; 27*f6dc9357SAndroid Build Coastguard Worker _crc = CRC_INIT_VAL; 28*f6dc9357SAndroid Build Coastguard Worker } EnableCalc(bool calculate)29*f6dc9357SAndroid Build Coastguard Worker void EnableCalc(bool calculate) { _calculate = calculate; } InitCRC()30*f6dc9357SAndroid Build Coastguard Worker void InitCRC() { _crc = CRC_INIT_VAL; } GetSize()31*f6dc9357SAndroid Build Coastguard Worker UInt64 GetSize() const { return _size; } GetCRC()32*f6dc9357SAndroid Build Coastguard Worker UInt32 GetCRC() const { return CRC_GET_DIGEST(_crc); } 33*f6dc9357SAndroid Build Coastguard Worker }; 34*f6dc9357SAndroid Build Coastguard Worker 35*f6dc9357SAndroid Build Coastguard Worker #endif 36