WiiUPluginLoaderBackend/source/fs/CFile.hpp

69 lines
1.2 KiB
C++
Raw Normal View History

2021-09-25 14:26:18 +02:00
#pragma once
2021-09-25 14:26:18 +02:00
#include <cstdio>
#include <cstring>
#include <fcntl.h>
2022-02-04 16:25:44 +01:00
#include <string>
#include <unistd.h>
#include <wut_types.h>
class CFile {
public:
enum eOpenTypes {
ReadOnly,
WriteOnly,
ReadWrite,
Append
};
CFile();
CFile(const std::string &filepath, eOpenTypes mode);
CFile(const uint8_t *memory, int32_t memsize);
virtual ~CFile();
int32_t open(const std::string &filepath, eOpenTypes mode);
int32_t open(const uint8_t *memory, int32_t memsize);
2021-09-25 14:26:18 +02:00
[[nodiscard]] BOOL isOpen() const {
if (iFd >= 0)
return true;
if (mem_file)
return true;
return false;
}
void close();
int32_t read(uint8_t *ptr, size_t size);
int32_t write(const uint8_t *ptr, size_t size);
int32_t fwrite(const char *format, ...);
int32_t seek(long int offset, int32_t origin);
2021-09-25 14:26:18 +02:00
[[nodiscard]] uint64_t tell() const {
return pos;
};
2021-09-25 14:26:18 +02:00
[[nodiscard]] uint64_t size() const {
return filesize;
};
void rewind() {
this->seek(0, SEEK_SET);
};
protected:
int32_t iFd;
2021-09-25 14:26:18 +02:00
const uint8_t *mem_file{};
uint64_t filesize{};
uint64_t pos{};
};