Config: Use unique_ptr instead of raw pointer
This commit is contained in:
parent
ba2a54a9dd
commit
48366b1071
|
@ -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;
|
|
||||||
}
|
|
||||||
|
|
|
@ -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();
|
||||||
};
|
};
|
||||||
|
|
Reference in New Issue