-// InBuffer.h\r
-\r
-#ifndef __INBUFFER_H\r
-#define __INBUFFER_H\r
-\r
-#include "../IStream.h"\r
-#include "../../Common/MyCom.h"\r
-\r
-#ifndef _NO_EXCEPTIONS\r
-class CInBufferException\r
-{\r
-public:\r
- HRESULT ErrorCode;\r
- CInBufferException(HRESULT errorCode): ErrorCode(errorCode) {}\r
-};\r
-#endif\r
-\r
-class CInBuffer\r
-{\r
- Byte *_buffer;\r
- Byte *_bufferLimit;\r
- Byte *_bufferBase;\r
- CMyComPtr<ISequentialInStream> _stream;\r
- UInt64 _processedSize;\r
- UInt32 _bufferSize;\r
- bool _wasFinished;\r
-\r
- bool ReadBlock();\r
- Byte ReadBlock2();\r
-\r
-public:\r
- #ifdef _NO_EXCEPTIONS\r
- HRESULT ErrorCode;\r
- #endif\r
-\r
- CInBuffer();\r
- ~CInBuffer() { Free(); }\r
-\r
- bool Create(UInt32 bufferSize);\r
- void Free();\r
- \r
- void SetStream(ISequentialInStream *stream);\r
- void Init();\r
- void ReleaseStream() { _stream.Release(); }\r
-\r
- bool ReadByte(Byte &b)\r
- {\r
- if(_buffer >= _bufferLimit)\r
- if(!ReadBlock())\r
- return false;\r
- b = *_buffer++;\r
- return true;\r
- }\r
- Byte ReadByte()\r
- {\r
- if(_buffer >= _bufferLimit)\r
- return ReadBlock2();\r
- return *_buffer++;\r
- }\r
- void ReadBytes(void *data, UInt32 size, UInt32 &processedSize)\r
- {\r
- for(processedSize = 0; processedSize < size; processedSize++)\r
- if (!ReadByte(((Byte *)data)[processedSize]))\r
- return;\r
- }\r
- bool ReadBytes(void *data, UInt32 size)\r
- {\r
- UInt32 processedSize;\r
- ReadBytes(data, size, processedSize);\r
- return (processedSize == size);\r
- }\r
- UInt64 GetProcessedSize() const { return _processedSize + (_buffer - _bufferBase); }\r
- bool WasFinished() const { return _wasFinished; }\r
-};\r
-\r
-#endif\r
+// InBuffer.h
+
+#ifndef __INBUFFER_H
+#define __INBUFFER_H
+
+#include "../IStream.h"
+#include "../../Common/MyCom.h"
+
+#ifndef _NO_EXCEPTIONS
+class CInBufferException
+{
+public:
+ HRESULT ErrorCode;
+ CInBufferException(HRESULT errorCode): ErrorCode(errorCode) {}
+};
+#endif
+
+class 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