athena/include/athena/PHYSFSFileReader.hpp

53 lines
1.0 KiB
C++

#ifdef ATHENA_ENABLE_PHYSFS
#ifndef PHYSFSSTREAM_HPP
#define PHYSFSSTREAM_HPP
#include "athena/Stream.hpp"
#include <physfs.h>
namespace athena::io {
class PHYSFSFileReader : public Stream {
public:
PHYSFSFileReader(const std::string& path);
void setEndian(Endian);
Endian endian() const;
bool isBigEndian() const;
bool isLittleEndian() const;
atUint8* data();
atUint64 length() const;
atUint64 position() const;
bool isOpen() const;
void seek(atInt64 position, SeekOrigin origin);
atInt8 readByte();
atUint8 readUByte();
atUint8* readUBytes(atUint64 length);
atInt8* readBytes(atUint64 length);
atUint16 readUint16();
atInt16 readInt16();
atUint32 readUint32();
atInt32 readInt32();
atUint64 readUint64();
atInt64 readInt64();
double readDouble();
float readFloat();
bool readBool();
bool atEnd() const;
// TODO: Strings
private:
Endian m_endian;
std::string m_path;
atUint64 m_length;
PHYSFS_File* m_handle;
};
} // namespace athena::io
#endif // PHYSFSSTREAM_HPP
#endif // ATHENA_ENABLE_PHYSFS