xref: /aosp_15_r20/external/lzma/CPP/7zip/Archive/Common/OutStreamWithCRC.h (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
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