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