aboutsummaryrefslogtreecommitdiff
path: root/common/memstream.h
diff options
context:
space:
mode:
Diffstat (limited to 'common/memstream.h')
-rw-r--r--common/memstream.h42
1 files changed, 23 insertions, 19 deletions
diff --git a/common/memstream.h b/common/memstream.h
index 8a8326e4a6..d7c59ffb99 100644
--- a/common/memstream.h
+++ b/common/memstream.h
@@ -88,7 +88,7 @@ public:
* Simple memory based 'stream', which implements the WriteStream interface for
* a plain memory block.
*/
-class MemoryWriteStream : public WriteStream {
+class MemoryWriteStream : public SeekableWriteStream {
private:
const uint32 _bufSize;
protected:
@@ -111,11 +111,13 @@ public:
return dataSize;
}
- int32 pos() const { return _pos; }
- uint32 size() const { return _bufSize; }
+ virtual int32 pos() const override { return _pos; }
+ virtual int32 size() const override { return _bufSize; }
+
+ virtual bool err() const override { return _err; }
+ virtual void clearErr() override { _err = false; }
- virtual bool err() const { return _err; }
- virtual void clearErr() { _err = false; }
+ virtual bool seek(int32 offset, int whence = SEEK_SET) override { return false; }
};
/**
@@ -126,7 +128,8 @@ private:
byte *_ptrOrig;
public:
SeekableMemoryWriteStream(byte *buf, uint32 len) : MemoryWriteStream(buf, len), _ptrOrig(buf) {}
- uint32 seek(uint32 offset, int whence = SEEK_SET) {
+
+ virtual bool seek(int32 offset, int whence = SEEK_SET) override {
switch (whence) {
case SEEK_END:
// SEEK_END works just like SEEK_SET, only 'reversed',
@@ -143,11 +146,12 @@ public:
break;
}
// Post-Condition
- if (_pos > size()) {
+ if ((int32)_pos > size()) {
_pos = size();
_ptr = _ptrOrig + _pos;
}
- return _pos;
+
+ return true;
}
};
@@ -156,7 +160,7 @@ public:
* A sort of hybrid between MemoryWriteStream and Array classes. A stream
* that grows as it's written to.
*/
-class MemoryWriteStreamDynamic : public WriteStream {
+class MemoryWriteStreamDynamic : public SeekableWriteStream {
protected:
uint32 _capacity;
uint32 _size;
@@ -201,18 +205,18 @@ public:
return dataSize;
}
- int32 pos() const { return _pos; }
- uint32 size() const { return _size; }
+ virtual int32 pos() const override { return _pos; }
+ virtual int32 size() const override { return _size; }
byte *getData() { return _data; }
- bool seek(int32 offset, int whence = SEEK_SET);
+ virtual bool seek(int32 offset, int whence = SEEK_SET) override;
};
/**
* MemoryStream based on RingBuffer. Grows if has insufficient buffer size.
*/
-class MemoryReadWriteStream : public SeekableReadStream, public WriteStream {
+class MemoryReadWriteStream : public SeekableReadStream, public SeekableWriteStream {
private:
uint32 _capacity;
uint32 _size;
@@ -271,7 +275,7 @@ public:
return dataSize;
}
- virtual uint32 read(void *dataPtr, uint32 dataSize) {
+ virtual uint32 read(void *dataPtr, uint32 dataSize) override {
if (_length < dataSize) {
dataSize = _length;
_eos = true;
@@ -289,11 +293,11 @@ public:
return dataSize;
}
- int32 pos() const { return _pos - _length; } // 'read' position in the stream
- int32 size() const { return _size; } // that's also 'write' position in the stream, as it's append-only
- bool seek(int32, int) { return false; }
- bool eos() const { return _eos; }
- void clearErr() { _eos = false; }
+ virtual int32 pos() const override { return _pos - _length; }
+ virtual int32 size() const override { return _size; }
+ virtual bool seek(int32, int) override { return false; }
+ virtual bool eos() const override { return _eos; }
+ virtual void clearErr() override { _eos = false; }
byte *getData() { return _data; }
};