aboutsummaryrefslogtreecommitdiff
path: root/common/substream.h
diff options
context:
space:
mode:
Diffstat (limited to 'common/substream.h')
-rw-r--r--common/substream.h30
1 files changed, 4 insertions, 26 deletions
diff --git a/common/substream.h b/common/substream.h
index cf794cfa7e..8c9c56165e 100644
--- a/common/substream.h
+++ b/common/substream.h
@@ -87,39 +87,17 @@ public:
};
/**
- * This is a wrapper around SeekableSubReadStream, but it adds non-endian
+ * This is a SeekableSubReadStream subclass which adds non-endian
* read methods whose endianness is set on the stream creation.
*
* Manipulating the parent stream directly /will/ mess up a substream.
* @see SubReadStream
*/
-class SeekableSubReadStreamEndian : public SeekableSubReadStream {
-private:
- const bool _bigEndian;
-
+class SeekableSubReadStreamEndian : public SeekableSubReadStream, public ReadStreamEndian {
public:
SeekableSubReadStreamEndian(SeekableReadStream *parentStream, uint32 begin, uint32 end, bool bigEndian = false, DisposeAfterUse::Flag disposeParentStream = DisposeAfterUse::NO)
- : SeekableSubReadStream(parentStream, begin, end, disposeParentStream), _bigEndian(bigEndian) {
- }
-
- uint16 readUint16() {
- uint16 val;
- read(&val, 2);
- return (_bigEndian) ? TO_BE_16(val) : TO_LE_16(val);
- }
-
- uint32 readUint32() {
- uint32 val;
- read(&val, 4);
- return (_bigEndian) ? TO_BE_32(val) : TO_LE_32(val);
- }
-
- FORCEINLINE int16 readSint16() {
- return (int16)readUint16();
- }
-
- FORCEINLINE int32 readSint32() {
- return (int32)readUint32();
+ : SeekableSubReadStream(parentStream, begin, end, disposeParentStream),
+ ReadStreamEndian(bigEndian) {
}
};