mame/3rdparty/lzma/CPP/7zip/Common/InOutTempBuffer.h

67 lines
1.2 KiB
C++

// InOutTempBuffer.h
#ifndef __IN_OUT_TEMP_BUFFER_H
#define __IN_OUT_TEMP_BUFFER_H
#ifdef _WIN32
// #define USE_InOutTempBuffer_FILE
#endif
#ifdef USE_InOutTempBuffer_FILE
#include "../../Windows/FileDir.h"
#else
#include "StreamObjects.h"
#endif
#include "../IStream.h"
class CInOutTempBuffer
{
#ifdef USE_InOutTempBuffer_FILE
NWindows::NFile::NDir::CTempFile _tempFile;
NWindows::NFile::NIO::COutFile _outFile;
bool _tempFileCreated;
Byte *_buf;
size_t _bufPos;
UInt64 _size;
UInt32 _crc;
#else
CByteDynBuffer _dynBuffer;
size_t _size;
#endif
CLASS_NO_COPY(CInOutTempBuffer);
public:
CInOutTempBuffer();
void Create();
#ifdef USE_InOutTempBuffer_FILE
~CInOutTempBuffer();
#endif
void InitWriting();
HRESULT Write_HRESULT(const void *data, UInt32 size);
HRESULT WriteToStream(ISequentialOutStream *stream);
UInt64 GetDataSize() const { return _size; }
};
/*
class CSequentialOutTempBufferImp:
public ISequentialOutStream,
public CMyUnknownImp
{
CInOutTempBuffer *_buf;
public:
void Init(CInOutTempBuffer *buffer) { _buf = buffer; }
MY_UNKNOWN_IMP
STDMETHOD(Write)(const void *data, UInt32 size, UInt32 *processedSize);
};
*/
#endif