Config: Use unique_ptr instead of raw pointer

This commit is contained in:
MerryMage 2016-03-02 12:49:30 +00:00
parent ba2a54a9dd
commit 48366b1071
2 changed files with 12 additions and 14 deletions

View file

@ -10,6 +10,7 @@
#include "common/file_util.h" #include "common/file_util.h"
#include "common/logging/log.h" #include "common/logging/log.h"
#include "common/make_unique.h"
#include "core/settings.h" #include "core/settings.h"
@ -18,20 +19,21 @@
Config::Config() { Config::Config() {
// TODO: Don't hardcode the path; let the frontend decide where to put the config files. // TODO: Don't hardcode the path; let the frontend decide where to put the config files.
sdl2_config_loc = FileUtil::GetUserPath(D_CONFIG_IDX) + "sdl2-config.ini"; sdl2_config_loc = FileUtil::GetUserPath(D_CONFIG_IDX) + "sdl2-config.ini";
sdl2_config = new INIReader(sdl2_config_loc); sdl2_config = Common::make_unique<INIReader>(sdl2_config_loc);
Reload(); Reload();
} }
bool Config::LoadINI(INIReader* config, const char* location, const std::string& default_contents, bool retry) { bool Config::LoadINI(const std::string& default_contents, bool retry) {
if (config->ParseError() < 0) { const char* location = this->sdl2_config_loc.c_str();
if (sdl2_config->ParseError() < 0) {
if (retry) { if (retry) {
LOG_WARNING(Config, "Failed to load %s. Creating file from defaults...", location); LOG_WARNING(Config, "Failed to load %s. Creating file from defaults...", location);
FileUtil::CreateFullPath(location); FileUtil::CreateFullPath(location);
FileUtil::WriteStringToFile(true, default_contents, location); FileUtil::WriteStringToFile(true, default_contents, location);
*config = INIReader(location); // Reopen file sdl2_config = Common::make_unique<INIReader>(location); // Reopen file
return LoadINI(config, location, default_contents, false); return LoadINI(default_contents, false);
} }
LOG_ERROR(Config, "Failed."); LOG_ERROR(Config, "Failed.");
return false; return false;
@ -82,10 +84,6 @@ void Config::ReadValues() {
} }
void Config::Reload() { void Config::Reload() {
LoadINI(sdl2_config, sdl2_config_loc.c_str(), DefaultINI::sdl2_config_file); LoadINI(DefaultINI::sdl2_config_file);
ReadValues(); ReadValues();
} }
Config::~Config() {
delete sdl2_config;
}

View file

@ -4,19 +4,19 @@
#pragma once #pragma once
#include <memory>
#include <string> #include <string>
class INIReader; #include <inih/cpp/INIReader.h>
class Config { class Config {
INIReader* sdl2_config; std::unique_ptr<INIReader> sdl2_config;
std::string sdl2_config_loc; std::string sdl2_config_loc;
bool LoadINI(INIReader* config, const char* location, const std::string& default_contents="", bool retry=true); bool LoadINI(const std::string& default_contents="", bool retry=true);
void ReadValues(); void ReadValues();
public: public:
Config(); Config();
~Config();
void Reload(); void Reload();
}; };