1
// Util/InOutTempBuffer.h
3
#ifndef __IN_OUT_TEMP_BUFFER_H
4
#define __IN_OUT_TEMP_BUFFER_H
6
#include "../../Windows/FileIO.h"
7
#include "../../Windows/FileDir.h"
8
#include "../../Common/MyCom.h"
10
#include "../IStream.h"
12
class CInOutTempBuffer
14
NWindows::NFile::NDirectory::CTempFile _tempFile;
15
NWindows::NFile::NIO::COutFile _outFile;
16
NWindows::NFile::NIO::CInFile _inFile;
18
UInt32 _bufferPosition;
19
UInt32 _currentPositionInBuffer;
20
CSysString _tmpFileName;
25
bool WriteToFile(const void *data, UInt32 size);
32
bool Write(const void *data, UInt32 size);
33
UInt64 GetDataSize() const { return _fileSize; }
36
HRESULT WriteToStream(ISequentialOutStream *stream);
39
class CSequentialOutTempBufferImp:
40
public ISequentialOutStream,
43
CInOutTempBuffer *_buffer;
45
// CSequentialOutStreamImp(): _size(0) {}
47
void Init(CInOutTempBuffer *buffer) { _buffer = buffer; }
48
// UInt32 GetSize() const { return _size; }
52
STDMETHOD(Write)(const void *data, UInt32 size, UInt32 *processedSize);