From 5d90501ce19872c4c7b4e4c1b657bf00d998e47c Mon Sep 17 00:00:00 2001 From: MihailRis Date: Wed, 8 Nov 2023 16:00:38 +0300 Subject: [PATCH] files module update --- src/files/WorldFiles.cpp | 4 ++-- src/files/files.cpp | 46 +++++++++++++++++++++++++--------------- src/files/files.h | 12 +++++++---- 3 files changed, 39 insertions(+), 23 deletions(-) diff --git a/src/files/WorldFiles.cpp b/src/files/WorldFiles.cpp index ea351360..d2f4d81f 100644 --- a/src/files/WorldFiles.cpp +++ b/src/files/WorldFiles.cpp @@ -224,12 +224,12 @@ void WorldFiles::writePlayer(Player* player){ dst[offset++] = player->flight * PLAYER_FLAG_FLIGHT | player->noclip * PLAYER_FLAG_NOCLIP; - write_binary_file(getPlayerFile(), (const char*)dst, sizeof(dst)); + files::write_binary_file(getPlayerFile(), (const char*)dst, sizeof(dst)); } bool WorldFiles::readPlayer(Player* player) { size_t length = 0; - ubyte* data = (ubyte*)read_binary_file(getPlayerFile(), length); + ubyte* data = (ubyte*)files::read_binary_file(getPlayerFile(), length); if (data == nullptr){ std::cerr << "could not to read player.bin (ignored)" << std::endl; return false; diff --git a/src/files/files.cpp b/src/files/files.cpp index 51e3b558..595ea936 100644 --- a/src/files/files.cpp +++ b/src/files/files.cpp @@ -5,17 +5,14 @@ #include #include -bool write_binary_file_part(std::string filename, const char* data, size_t offset, size_t size){ - std::ofstream output(filename, std::ios::out | std::ios::binary | std::ios::in); - if (!output.is_open()) - return false; - output.seekp(offset); - output.write(data, size); - return true; -} +using std::ios; +using std::string; +using std::unique_ptr; +using std::ifstream; +using std::ofstream; -bool write_binary_file(std::string filename, const char* data, size_t size) { - std::ofstream output(filename, std::ios::binary); +bool files::write_binary_file(string filename, const char* data, size_t size) { + ofstream output(filename, ios::binary); if (!output.is_open()) return false; output.write(data, size); @@ -23,8 +20,8 @@ bool write_binary_file(std::string filename, const char* data, size_t size) { return true; } -unsigned int append_binary_file(std::string filename, const char* data, size_t size) { - std::ofstream output(filename, std::ios::binary | std::ios::app); +unsigned int files::append_binary_file(string filename, const char* data, size_t size) { + ofstream output(filename, ios::binary | ios::app); if (!output.is_open()) return 0; unsigned int position = output.tellp(); @@ -33,8 +30,8 @@ unsigned int append_binary_file(std::string filename, const char* data, size_t s return position; } -bool read_binary_file(std::string filename, char* data, size_t size) { - std::ifstream output(filename, std::ios::binary); +bool files::read_binary_file(string filename, char* data, size_t size) { + ifstream output(filename, ios::binary); if (!output.is_open()) return false; output.read(data, size); @@ -42,16 +39,31 @@ bool read_binary_file(std::string filename, char* data, size_t size) { return true; } -char* read_binary_file(std::string filename, size_t& length) { - std::ifstream input(filename, std::ios::binary); +char* files::read_binary_file(string filename, size_t& length) { + ifstream input(filename, ios::binary); if (!input.is_open()) return nullptr; input.seekg(0, std::ios_base::end); length = input.tellg(); input.seekg(0, std::ios_base::beg); - std::unique_ptr data {new char[length]}; + unique_ptr data {new char[length]}; input.read(data.get(), length); input.close(); return data.release(); } + +std::string files::read_string(string filename) { + size_t size; + unique_ptr chars (read_binary_file(filename, size)); + return string(chars.get(), size); +} + +bool files::write_string(string filename, const string content) { + ofstream file(filename); + if (!file) { + return false; + } + file << content; + return true; +} \ No newline at end of file diff --git a/src/files/files.h b/src/files/files.h index 87ca7d4d..a11cd29f 100644 --- a/src/files/files.h +++ b/src/files/files.h @@ -4,9 +4,13 @@ #include #include "../typedefs.h" -extern bool write_binary_file(std::string filename, const char* data, size_t size); -extern unsigned int append_binary_file(std::string filename, const char* data, size_t size); -extern bool read_binary_file(std::string filename, char* data, size_t size); -extern char* read_binary_file(std::string filename, size_t& length); +namespace files { + extern bool write_binary_file(std::string filename, const char* data, size_t size); + extern unsigned int append_binary_file(std::string filename, const char* data, size_t size); + extern bool read_binary_file(std::string filename, char* data, size_t size); + extern char* read_binary_file(std::string filename, size_t& length); + extern std::string read_string(std::string filename); + extern bool write_string(std::string filename, const std::string content); +} #endif /* FILES_FILES_H_ */