From 6c14e7bead15448ade169480a9a2c7f95320e1f0 Mon Sep 17 00:00:00 2001 From: Alfred Burgess <aburgess@ucc.gu.uwa.edu.au> Date: Thu, 7 Dec 2023 17:02:05 +0800 Subject: [PATCH] Made config parser follow a factory design pattern --- include/config-parser.h | 8 +++++++- src/chunk.cpp | 2 +- src/config-parser.cpp | 28 ++++++++++++++++------------ src/main.cpp | 4 ++-- 4 files changed, 26 insertions(+), 16 deletions(-) diff --git a/include/config-parser.h b/include/config-parser.h index 0868867..41bef02 100644 --- a/include/config-parser.h +++ b/include/config-parser.h @@ -14,17 +14,23 @@ typedef std::map<std::string,std::string> ConfigMap; class ConfigParser { public: - ConfigParser(); + static ConfigParser UserSettings(); + ~ConfigParser(); ConfigMap userSettings(){ return this->readFile( "settings.cfg" ); } + std::string toString() const; + private: + ConfigParser( std::string path ); const std::string CONFIG_DIRECTORY = "config"; const char DELIMINATOR = ':'; const char COMMENT_CHAR = '#'; Logger& _logger; + ConfigMap _config; + ConfigMap readFile( std::string path ); // void writeConfigFile( std::map settings ); diff --git a/src/chunk.cpp b/src/chunk.cpp index b13330b..a3d355a 100644 --- a/src/chunk.cpp +++ b/src/chunk.cpp @@ -46,7 +46,7 @@ std::string Chunk::getRadiationString() const { return std::to_string(this->radi std::string Chunk::getAgeString() const { return std::to_string(this->age); } std::string Chunk::getString( ChunkQuery format ) const - {return "rest";} + { return "rest"; } void Chunk::visualise() const { std::cout << this->getString() << std::endl; } std::string Chunk::getString() const diff --git a/src/config-parser.cpp b/src/config-parser.cpp index 81c39be..58df3c1 100644 --- a/src/config-parser.cpp +++ b/src/config-parser.cpp @@ -1,24 +1,27 @@ #include "config-parser.h" -std::ostream& operator<<( std::ostream& os, const ConfigMap& obj ) +ConfigParser ConfigParser::UserSettings() { - for( const auto& [ key, value ] : obj ) - { - os << "[" << key.c_str() << "]" << value.c_str() << std::endl; - } - return os; + ConfigParser parser("settings.cfg"); + return parser; } -ConfigParser::ConfigParser() - : _logger( Logger::instance() ) + +std::string ConfigParser::toString() const { - this->_logger.info( "Creating config parser" ); + std::string str = ""; + for( const auto [key, value] : this->_config ) + { str += "["+key+"] "+value+"\n"; } + return str; } +std::ostream& operator<<( std::ostream& os, const ConfigParser& obj ) { return os << obj.toString(); } + +ConfigParser::ConfigParser( std::string path ) + : _logger( Logger::instance() ) +{ this->_logger.info( "Creating config parser" ); } ConfigParser::~ConfigParser() -{ - this->_logger.info( "Closing config parser" ); -} + { this->_logger.info( "Closing config parser" ); } ConfigMap ConfigParser::readFile( std::string path ) @@ -49,6 +52,7 @@ ConfigMap ConfigParser::readFile( std::string path ) } else { this->_logger.error( "Unable to load specified configuration file:\n"+path ); } + this->_config = confMap; return confMap; } diff --git a/src/main.cpp b/src/main.cpp index 5e11d8e..36a585e 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -12,8 +12,8 @@ int main() { SaveManager saveManager; state = Initialise; - ConfigParser configParser; - ConfigMap userSettings = configParser.userSettings(); + ConfigParser userSettings = ConfigParser::UserSettings(); + EntityManager entityManager; // Seed the random number generator -- GitLab