From 32a7ba982961f278a81a8bd032a78c683dc4ad86 Mon Sep 17 00:00:00 2001 From: JustinAJ Date: Fri, 6 Jun 2014 23:52:09 -0400 Subject: [PATCH] ReadableString & now accepted in place of C-Style string. --- Jupiter/File.cpp | 26 +++++++++++++++++++++++++- Jupiter/File.h | 3 +++ Jupiter/INIFile.cpp | 10 ++++++++++ Jupiter/INIFile.h | 2 ++ Release/Jupiter.lib | Bin 216542 -> 218526 bytes 5 files changed, 40 insertions(+), 1 deletion(-) diff --git a/Jupiter/File.cpp b/Jupiter/File.cpp index fe504bf..b672130 100644 --- a/Jupiter/File.cpp +++ b/Jupiter/File.cpp @@ -110,7 +110,20 @@ bool Jupiter::File::load(const char *file) { FILE *filePtr = fopen(file, "rb"); if (filePtr == nullptr) return false; - if (Jupiter::File::data_->fileName.size() == 0) Jupiter::File::data_->fileName = file; + if (Jupiter::File::data_->fileName.size() == 0) + Jupiter::File::data_->fileName = file; + bool r = Jupiter::File::load(filePtr); + fclose(filePtr); + return r; +} + +bool Jupiter::File::load(const Jupiter::ReadableString &file) +{ + Jupiter::CStringS fileName = file; + FILE *filePtr = fopen(fileName.c_str(), "rb"); + if (filePtr == nullptr) return false; + if (Jupiter::File::data_->fileName.size() == 0) + Jupiter::File::data_->fileName = file; bool r = Jupiter::File::load(filePtr); fclose(filePtr); return r; @@ -147,6 +160,12 @@ bool Jupiter::File::reload(const char *file) return Jupiter::File::load(file); } +bool Jupiter::File::reload(const Jupiter::ReadableString &file) +{ + Jupiter::File::unload(); + return Jupiter::File::load(file); +} + bool Jupiter::File::reload(FILE *file) { Jupiter::File::unload(); @@ -168,6 +187,11 @@ bool Jupiter::File::sync(const char *file) return true; } +bool Jupiter::File::sync(const Jupiter::ReadableString &file) +{ + return Jupiter::File::sync(Jupiter::CStringS(file).c_str()); +} + bool Jupiter::File::sync(FILE *file) { for (size_t i = 0; i != Jupiter::File::data_->lines.size(); i++) diff --git a/Jupiter/File.h b/Jupiter/File.h index 702eb68..50e9851 100644 --- a/Jupiter/File.h +++ b/Jupiter/File.h @@ -71,6 +71,7 @@ namespace Jupiter * @return True if a file was successfully loaded from the drive, false otherwise. */ bool load(const char *file); + bool load(const Jupiter::ReadableString &file); /** * @brief Loads a file from the drive into this file. @@ -99,6 +100,7 @@ namespace Jupiter * @return True if a file was successfully loaded from the drive, false otherwise. */ bool reload(const char *file); + bool reload(const Jupiter::ReadableString &file); /** * @brief Unloads all of a file's contents, and attempts to load from a specified file stream. @@ -122,6 +124,7 @@ namespace Jupiter * @return True if the file was successfully written to the drive, false otherwise. */ bool sync(const char *file); + bool sync(const Jupiter::ReadableString &file); /** * @brief Syncs data from the file to the drive. diff --git a/Jupiter/INIFile.cpp b/Jupiter/INIFile.cpp index d6659af..24ee397 100644 --- a/Jupiter/INIFile.cpp +++ b/Jupiter/INIFile.cpp @@ -288,6 +288,11 @@ unsigned int Jupiter::INIFile::readFile(const char *fileName) return total; } +unsigned int Jupiter::INIFile::readFile(const Jupiter::ReadableString &file) +{ + return Jupiter::INIFile::readFile(Jupiter::CStringS(file).c_str()); +} + unsigned int Jupiter::INIFile::reload() { Jupiter::CStringS fileName = Jupiter::INIFile::data_->fName; @@ -325,6 +330,11 @@ bool Jupiter::INIFile::sync(const char *fileName) return true; } +bool Jupiter::INIFile::sync(const Jupiter::ReadableString &file) +{ + return Jupiter::INIFile::sync(Jupiter::CStringS(file).c_str()); +} + bool Jupiter::INIFile::sync() { if (Jupiter::INIFile::data_->fName.size() == 0) return false; diff --git a/Jupiter/INIFile.h b/Jupiter/INIFile.h index 5f7d7cb..c4e7ae4 100644 --- a/Jupiter/INIFile.h +++ b/Jupiter/INIFile.h @@ -209,6 +209,7 @@ namespace Jupiter * @return The number of key-value pairs added on success, ERROR_INDICATOR (-1) otherwise. */ unsigned int readFile(const char *fileName); + unsigned int readFile(const Jupiter::ReadableString &file); /** * @brief Flushes all stored data and recollects from the last read file. @@ -224,6 +225,7 @@ namespace Jupiter * @return True on success, false otherwise. */ bool sync(const char *fileName); + bool sync(const Jupiter::ReadableString &file); /** * @brief Syncs data to the file that was last read from. diff --git a/Release/Jupiter.lib b/Release/Jupiter.lib index 386001223115ea6990411213877d309253a96083..f3a52e7c6464e58cd4d046bdecfd14643cd3cc2e 100644 GIT binary patch delta 28131 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