xref: /aosp_15_r20/external/lzma/CPP/7zip/Common/InOutTempBuffer.h (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
1*f6dc9357SAndroid Build Coastguard Worker // InOutTempBuffer.h
2*f6dc9357SAndroid Build Coastguard Worker 
3*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_IN_OUT_TEMP_BUFFER_H
4*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_IN_OUT_TEMP_BUFFER_H
5*f6dc9357SAndroid Build Coastguard Worker 
6*f6dc9357SAndroid Build Coastguard Worker // #ifdef _WIN32
7*f6dc9357SAndroid Build Coastguard Worker #define USE_InOutTempBuffer_FILE
8*f6dc9357SAndroid Build Coastguard Worker // #endif
9*f6dc9357SAndroid Build Coastguard Worker 
10*f6dc9357SAndroid Build Coastguard Worker #ifdef USE_InOutTempBuffer_FILE
11*f6dc9357SAndroid Build Coastguard Worker #include "../../Windows/FileDir.h"
12*f6dc9357SAndroid Build Coastguard Worker #endif
13*f6dc9357SAndroid Build Coastguard Worker 
14*f6dc9357SAndroid Build Coastguard Worker #include "../IStream.h"
15*f6dc9357SAndroid Build Coastguard Worker 
16*f6dc9357SAndroid Build Coastguard Worker class CInOutTempBuffer
17*f6dc9357SAndroid Build Coastguard Worker {
18*f6dc9357SAndroid Build Coastguard Worker   UInt64 _size;
19*f6dc9357SAndroid Build Coastguard Worker   void **_bufs;
20*f6dc9357SAndroid Build Coastguard Worker   size_t _numBufs;
21*f6dc9357SAndroid Build Coastguard Worker   size_t _numFilled;
22*f6dc9357SAndroid Build Coastguard Worker 
23*f6dc9357SAndroid Build Coastguard Worker  #ifdef USE_InOutTempBuffer_FILE
24*f6dc9357SAndroid Build Coastguard Worker 
25*f6dc9357SAndroid Build Coastguard Worker   bool _tempFile_Created;
26*f6dc9357SAndroid Build Coastguard Worker   bool _useMemOnly;
27*f6dc9357SAndroid Build Coastguard Worker   UInt32 _crc;
28*f6dc9357SAndroid Build Coastguard Worker   // COutFile object must be declared after CTempFile object for correct destructor order
29*f6dc9357SAndroid Build Coastguard Worker   NWindows::NFile::NDir::CTempFile _tempFile;
30*f6dc9357SAndroid Build Coastguard Worker   NWindows::NFile::NIO::COutFile _outFile;
31*f6dc9357SAndroid Build Coastguard Worker 
32*f6dc9357SAndroid Build Coastguard Worker  #endif
33*f6dc9357SAndroid Build Coastguard Worker 
34*f6dc9357SAndroid Build Coastguard Worker   void *GetBuf(size_t index);
35*f6dc9357SAndroid Build Coastguard Worker 
36*f6dc9357SAndroid Build Coastguard Worker   Z7_CLASS_NO_COPY(CInOutTempBuffer)
37*f6dc9357SAndroid Build Coastguard Worker public:
38*f6dc9357SAndroid Build Coastguard Worker   CInOutTempBuffer();
39*f6dc9357SAndroid Build Coastguard Worker   ~CInOutTempBuffer();
40*f6dc9357SAndroid Build Coastguard Worker   HRESULT Write_HRESULT(const void *data, UInt32 size);
41*f6dc9357SAndroid Build Coastguard Worker   HRESULT WriteToStream(ISequentialOutStream *stream);
GetDataSize()42*f6dc9357SAndroid Build Coastguard Worker   UInt64 GetDataSize() const { return _size; }
43*f6dc9357SAndroid Build Coastguard Worker };
44*f6dc9357SAndroid Build Coastguard Worker 
45*f6dc9357SAndroid Build Coastguard Worker #endif
46