📄 outbuffer.h
字号:
// OutBuffer.h#ifndef __OUTBUFFER_H#define __OUTBUFFER_H#include "../IStream.h"#include "../../Common/MyCom.h"#ifndef _NO_EXCEPTIONSstruct COutBufferException{ HRESULT ErrorCode; COutBufferException(HRESULT errorCode): ErrorCode(errorCode) {}};#endifclass COutBuffer{protected: Byte *_buffer; UInt32 _pos; UInt32 _limitPos; UInt32 _streamPos; UInt32 _bufferSize; CMyComPtr<ISequentialOutStream> _stream; UInt64 _processedSize; Byte *_buffer2; bool _overDict; HRESULT FlushPart(); void FlushWithCheck();public: #ifdef _NO_EXCEPTIONS HRESULT ErrorCode; #endif COutBuffer(): _buffer(0), _pos(0), _stream(0), _buffer2(0) {} ~COutBuffer() { Free(); } bool Create(UInt32 bufferSize); void Free(); void SetMemStream(Byte *buffer) { _buffer2 = buffer; } void SetStream(ISequentialOutStream *stream); void Init(); HRESULT Flush(); void ReleaseStream() { _stream.Release(); } void WriteByte(Byte b) { _buffer[_pos++] = b; if(_pos == _limitPos) FlushWithCheck(); } void WriteBytes(const void *data, size_t size) { for (size_t i = 0; i < size; i++) WriteByte(((const Byte *)data)[i]); } UInt64 GetProcessedSize() const;};#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -