diff --git a/src/Utils/Utils/FileAPI.cpp b/src/Utils/Utils/FileAPI.cpp index 062ba0f2..44c8e506 100644 --- a/src/Utils/Utils/FileAPI.cpp +++ b/src/Utils/Utils/FileAPI.cpp @@ -77,12 +77,12 @@ FileAPI::File& FileAPI::File::operator=(File&& f) noexcept return *this; } -bool FileAPI::File::IsOpen() const +bool FileAPI::File::IsOpen() { return this->m_handle != nullptr; } -size_t FileAPI::File::Read(void* buffer, const size_t elementSize, const size_t elementCount) const +size_t FileAPI::File::Read(void* buffer, const size_t elementSize, const size_t elementCount) { if (!this->IsOpen()) return 0; @@ -90,7 +90,7 @@ size_t FileAPI::File::Read(void* buffer, const size_t elementSize, const size_t return fread(buffer, elementSize, elementCount, static_cast(m_handle)); } -size_t FileAPI::File::Write(const void* data, const size_t elementSize, const size_t elementCount) const +size_t FileAPI::File::Write(const void* data, const size_t elementSize, const size_t elementCount) { if (!this->IsOpen()) return 0; @@ -98,7 +98,7 @@ size_t FileAPI::File::Write(const void* data, const size_t elementSize, const si return fwrite(data, elementSize, elementCount, static_cast(m_handle)); } -void FileAPI::File::Skip(const size_t amount) const +void FileAPI::File::Skip(const size_t amount) { if(!this->IsOpen()) return; @@ -106,7 +106,7 @@ void FileAPI::File::Skip(const size_t amount) const fseek(static_cast(m_handle), amount, SEEK_CUR); } -size_t FileAPI::File::Printf(const char* fmt, ...) const +size_t FileAPI::File::Printf(const char* fmt, ...) { va_list ap; @@ -120,12 +120,12 @@ size_t FileAPI::File::Printf(const char* fmt, ...) const return result; } -int64_t FileAPI::File::Pos() const +int64_t FileAPI::File::Pos() { return _ftelli64(static_cast(m_handle)); } -void FileAPI::File::Goto(const int64_t pos) const +void FileAPI::File::Goto(const int64_t pos) { _fseeki64(static_cast(m_handle), pos, SEEK_SET); } diff --git a/src/Utils/Utils/FileAPI.h b/src/Utils/Utils/FileAPI.h index 14d9f784..121c2abb 100644 --- a/src/Utils/Utils/FileAPI.h +++ b/src/Utils/Utils/FileAPI.h @@ -12,7 +12,22 @@ public: MODE_WRITE = 1 }; - class File + class IFile + { + public: + virtual ~IFile() = default; + + virtual bool IsOpen() = 0; + virtual size_t Read(void* buffer, size_t elementSize, size_t elementCount) = 0; + virtual size_t Write(const void* data, size_t elementSize, size_t elementCount) = 0; + virtual void Skip(size_t amount) = 0; + virtual size_t Printf(const char* fmt, ...) = 0; + virtual int64_t Pos() = 0; + virtual void Goto(int64_t pos) = 0; + virtual void Close() = 0; + }; + + class File final : public IFile { void* m_handle; @@ -21,19 +36,19 @@ public: explicit File(void* handle); File(File&) = delete; File(File&& f) noexcept; - ~File(); + ~File() override; File& operator=(File&) = delete; File& operator=(File&& f) noexcept; - bool IsOpen() const; - size_t Read(void* buffer, size_t elementSize, size_t elementCount) const; - size_t Write(const void* data, size_t elementSize, size_t elementCount) const; - void Skip(size_t amount) const; - size_t Printf(const char* fmt, ...) const; - int64_t Pos() const; - void Goto(int64_t pos) const; - void Close(); + bool IsOpen() override; + size_t Read(void* buffer, size_t elementSize, size_t elementCount) override; + size_t Write(const void* data, size_t elementSize, size_t elementCount) override; + void Skip(size_t amount) override; + size_t Printf(const char* fmt, ...) override; + int64_t Pos() override; + void Goto(int64_t pos) override; + void Close() override; }; static bool FileExists(const std::string& fileName);