#ifndef ISTREAMREADER_HPP #define ISTREAMREADER_HPP #include "IStream.hpp" namespace Athena { namespace io { class IStreamReader : public IStream { public: virtual ~IStreamReader() {} virtual void setEndian(Endian) = 0; virtual Endian endian() const = 0; virtual bool isBigEndian() const = 0; virtual bool isLittleEndian()const = 0; virtual bool isOpen() const = 0; virtual void seek(atInt64, SeekOrigin) = 0; virtual void seekAlign32() = 0; virtual bool atEnd() const = 0; virtual atUint64 position() const = 0; virtual atUint64 length() const = 0; virtual void seekBit(int) = 0; virtual bool readBit() = 0; virtual atUint8 readUByte() = 0; virtual atInt8 readByte() = 0; virtual atUint8* readUBytes(atUint64) = 0; virtual atInt8* readBytes(atUint64) = 0; virtual atUint64 readUBytesToBuf(void*, atUint64) = 0; virtual atUint64 readBytesToBuf(void*, atUint64) = 0; virtual atUint16 readUint16() = 0; virtual atInt16 readInt16() = 0; virtual atUint32 readUint32() = 0; virtual atInt32 readInt32() = 0; virtual atUint64 readUint64() = 0; virtual atInt64 readInt64() = 0; virtual double readDouble() = 0; virtual float readFloat() = 0; virtual bool readBool() = 0; virtual std::string readUnicode(atInt32 = -1) = 0; virtual std::string readString(atInt32 = -1) = 0; }; } } #endif // ISTREAMREADER