Mercurial > vba-linux
view src/win32/7zip/7z/CPP/7zip/Common/OutBuffer.h @ 1:f9f4f1b99eed
importing src directory
author | Robert McIntyre <rlm@mit.edu> |
---|---|
date | Sat, 03 Mar 2012 10:31:27 -0600 |
parents | |
children |
line wrap: on
line source
1 // OutBuffer.h3 #ifndef __OUTBUFFER_H4 #define __OUTBUFFER_H6 #include "../IStream.h"7 #include "../../Common/MyCom.h"8 #include "../../Common/MyException.h"10 #ifndef _NO_EXCEPTIONS11 struct COutBufferException: public CSystemException12 {13 COutBufferException(HRESULT errorCode): CSystemException(errorCode) {}14 };15 #endif17 class COutBuffer18 {19 protected:20 Byte *_buffer;21 UInt32 _pos;22 UInt32 _limitPos;23 UInt32 _streamPos;24 UInt32 _bufferSize;25 CMyComPtr<ISequentialOutStream> _stream;26 UInt64 _processedSize;27 Byte *_buffer2;28 bool _overDict;30 HRESULT FlushPart();31 public:32 #ifdef _NO_EXCEPTIONS33 HRESULT ErrorCode;34 #endif36 COutBuffer(): _buffer(0), _pos(0), _stream(0), _buffer2(0) {}37 ~COutBuffer() { Free(); }39 bool Create(UInt32 bufferSize);40 void Free();42 void SetMemStream(Byte *buffer) { _buffer2 = buffer; }43 void SetStream(ISequentialOutStream *stream);44 void Init();45 HRESULT Flush();46 void FlushWithCheck();47 void ReleaseStream() { _stream.Release(); }49 void WriteByte(Byte b)50 {51 _buffer[_pos++] = b;52 if(_pos == _limitPos)53 FlushWithCheck();54 }55 void WriteBytes(const void *data, size_t size)56 {57 for (size_t i = 0; i < size; i++)58 WriteByte(((const Byte *)data)[i]);59 }61 UInt64 GetProcessedSize() const;62 };64 #endif