⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 inbuffer.h

📁 sleuthit-2.09 一个磁盘的工具集
💻 H
字号:
// InBuffer.h#ifndef __INBUFFER_H#define __INBUFFER_H#include "../IStream.h"#include "../../Common/MyCom.h"#ifndef _NO_EXCEPTIONSclass CInBufferException{public:  HRESULT ErrorCode;  CInBufferException(HRESULT errorCode): ErrorCode(errorCode) {}};#endifclass CInBuffer{  Byte *_buffer;  Byte *_bufferLimit;  Byte *_bufferBase;  CMyComPtr<ISequentialInStream> _stream;  UInt64 _processedSize;  UInt32 _bufferSize;  bool _wasFinished;  bool ReadBlock();  Byte ReadBlock2();public:  #ifdef _NO_EXCEPTIONS  HRESULT ErrorCode;  #endif  CInBuffer();  ~CInBuffer() { Free(); }  bool Create(UInt32 bufferSize);  void Free();    void SetStream(ISequentialInStream *stream);  void Init();  void ReleaseStream() { _stream.Release(); }  bool ReadByte(Byte &b)  {    if(_buffer >= _bufferLimit)      if(!ReadBlock())        return false;    b = *_buffer++;    return true;  }  Byte ReadByte()  {    if(_buffer >= _bufferLimit)      return ReadBlock2();    return *_buffer++;  }  void ReadBytes(void *data, UInt32 size, UInt32 &processedSize)  {    for(processedSize = 0; processedSize < size; processedSize++)      if (!ReadByte(((Byte *)data)[processedSize]))        return;  }  bool ReadBytes(void *data, UInt32 size)  {    UInt32 processedSize;    ReadBytes(data, size, processedSize);    return (processedSize == size);  }  UInt64 GetProcessedSize() const { return _processedSize + (_buffer - _bufferBase); }  bool WasFinished() const { return _wasFinished; }};#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -