#include "config.h" #include #include #include Config::Config() { path = "aotenjou.conf"; load_conf(); } Config::Config(std::string path) { path = path; load_conf(); } Config::~Config() { save_conf(); } /* Adds a config-element to the list */ void Config::add_element(std::string keyword, std::string value) { config[keyword] = value; } void Config::add_element(std::string keyword, int value) { std::stringstream out; out << value; config[keyword] = out.str(); } /* Load a value from the config. */ std::string Config::get_element(std::string keyword) { return config[keyword]; } /* Initializes and loads the config from disk if it exists */ void Config::load_conf(){ std::ifstream config_file(path.c_str()); if(config_file.is_open()) { while(config_file.good()) { std::string config_line; std::getline(config_file, config_line); std::string id = config_line.substr(0, config_line.find("=") - 1); //Skip empty lines if (id != "") { std::string value = config_line.substr(config_line.find("=") + 2, config_line.length()-1); config[id] = value; } } config_file.close(); } else { std::cerr << "Unable to open configuration file..." << std::endl; } } /* Saves the current config to disk */ void Config::save_conf(){ std::ofstream config_file(path.c_str(), std::ios::out | std::ios::trunc); if(config_file.is_open()) { for(std::map::iterator it = config.begin(); it != config.end(); ++it) { config_file << it->first << " = " << it->second << std::endl; } config_file.close(); } else { std::cerr << "Unable to save to configuration file..." << std::endl; } }