outbuffer.cpp
来自「proximap bootloader for study」· C++ 代码 · 共 71 行
CPP
71 行
// OutByte.cpp#include "StdAfx.h"#include "OutBuffer.h"#include "../../Common/Alloc.h"bool COutBuffer::Create(UInt32 bufferSize){ const UInt32 kMinBlockSize = 1; if (bufferSize < kMinBlockSize) bufferSize = kMinBlockSize; if (_buffer != 0 && _bufferSize == bufferSize) return true; Free(); _bufferSize = bufferSize; _buffer = (Byte *)::BigAlloc(bufferSize); return (_buffer != 0);}void COutBuffer::Free(){ BigFree(_buffer); _buffer = 0;}void COutBuffer::SetStream(ISequentialOutStream *stream){ _stream = stream;}void COutBuffer::Init(){ _processedSize = 0; _pos = 0; #ifdef _NO_EXCEPTIONS ErrorCode = S_OK; #endif}HRESULT COutBuffer::Flush(){ if (_pos == 0) return S_OK; UInt32 processedSize; HRESULT result = _stream->Write(_buffer, _pos, &processedSize); if (result != S_OK) return result; if (_pos != processedSize) return E_FAIL; _processedSize += processedSize; _pos = 0; return S_OK;}void COutBuffer::WriteBlock(){ #ifdef _NO_EXCEPTIONS if (ErrorCode != S_OK) return; #endif HRESULT result = Flush(); #ifdef _NO_EXCEPTIONS ErrorCode = result; #else if (result != S_OK) throw COutBufferException(result); #endif}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?