72ec6baf79
* sys: Updated curl to latest version * sys: Fix macOS compilation * ui: Fix splash screen OpenGL init for macOS * sys: Fix std::min compile errors * git: Re-enabled macos workflow * sys: Remove includes of the range library * build: Find OpenGL using CMake * sys/build: Fix bundled plugins on macOS * build: Copy plugins to bundle when creating a bundle * build: Fixup bundled plugins * sys: Search for plugins in the bundle instead of in Application Support * sys: Allow resources to be placed in multiple directories on macOS * build: Output built plugins to the plugins/ directory when not creating a bundle on macOS * sys: Fix Application Support paths on macOS * sys: Define ftruncate64 on macOS * sys: Fix absolute value computation for std::string::at on macOS Co-authored-by: WerWolv <werwolv98@gmail.com>
61 lines
1.3 KiB
C++
61 lines
1.3 KiB
C++
#pragma once
|
|
|
|
#include <hex.hpp>
|
|
|
|
#include <cstdio>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
#if defined(OS_MACOS)
|
|
#define off64_t off_t
|
|
#define fopen64 fopen
|
|
#define fseeko64 fseek
|
|
#define ftello64 ftell
|
|
#define ftruncate64 ftruncate
|
|
#endif
|
|
|
|
namespace hex {
|
|
|
|
class File {
|
|
public:
|
|
enum class Mode {
|
|
Read,
|
|
Write,
|
|
Create
|
|
};
|
|
|
|
explicit File(const std::string &path, Mode mode);
|
|
File();
|
|
File(const File&) = delete;
|
|
File(File &&other) noexcept;
|
|
|
|
~File();
|
|
|
|
[[nodiscard]] bool isValid() const { return this->m_file != nullptr; }
|
|
|
|
void seek(u64 offset);
|
|
void close();
|
|
|
|
size_t readBuffer(u8 *buffer, size_t size);
|
|
std::vector<u8> readBytes(size_t numBytes = 0);
|
|
std::string readString(size_t numBytes = 0);
|
|
|
|
void write(const u8 *buffer, size_t size);
|
|
void write(const std::vector<u8> &bytes);
|
|
void write(const std::string &string);
|
|
|
|
[[nodiscard]] size_t getSize() const;
|
|
void setSize(u64 size);
|
|
|
|
void flush();
|
|
void remove();
|
|
|
|
auto getHandle() { return this->m_file; }
|
|
const std::string& getPath() { return this->m_path; }
|
|
|
|
private:
|
|
FILE *m_file;
|
|
std::string m_path;
|
|
};
|
|
|
|
} |