#include "FsFile.h" FsFile::FsFile() { m_file = nullptr; } FsFile::FsFile(const std::string& path, fsOpenMode mode) { Open(path, mode); } bool FsFile::Open(const std::string& path, fsOpenMode mode) { Close(); fopen_s(&m_file, path.c_str(), getOpenMode(mode)); return IsOpen(); } bool FsFile::Close() { if (!IsOpen() || std::fclose(m_file) != 0) { m_file = nullptr; return false; } m_file = nullptr; return true; } FsFile::~FsFile() { Close(); } bool FsFile::Write(const void* src, U64 size) { if (!IsOpen() || std::fwrite(src, 1, size, m_file) != size) { return false; } return true; } bool FsFile::Read(void* dst, U64 size) { if (!IsOpen() || std::fread(dst, 1, size, m_file) != size) { return false; } return true; } U32 FsFile::ReadBytes(void* dst, U64 size) { return std::fread(dst, 1, size, m_file); } bool FsFile::Seek(S64 offset, fsSeekMode mode) { if (!IsOpen() || _fseeki64(m_file, offset, getSeekMode(mode)) != 0) { return false; } return true; } U64 FsFile::Tell() const { if (IsOpen()) { return _ftelli64(m_file); } else { return -1; } } U64 FsFile::getFileSize() { U64 pos = _ftelli64(m_file); if (_fseeki64(m_file, 0, SEEK_END) != 0) { return 0; } U64 size = _ftelli64(m_file); if (_fseeki64(m_file, pos, SEEK_SET) != 0) { return 0; } return size; } bool FsFile::IsOpen() const { return m_file != nullptr; }