Просмотр исходного кода

Config: Use unique_ptr instead of raw pointer

MerryMage 10 лет назад
Родитель
Сommit
48366b1071
2 измененных файлов с 12 добавлено и 14 удалено
  1. 8 10
      src/citra/config.cpp
  2. 4 4
      src/citra/config.h

+ 8 - 10
src/citra/config.cpp

@@ -10,6 +10,7 @@
 
 #include "common/file_util.h"
 #include "common/logging/log.h"
+#include "common/make_unique.h"
 
 #include "core/settings.h"
 
@@ -18,20 +19,21 @@
 Config::Config() {
     // 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 = new INIReader(sdl2_config_loc);
+    sdl2_config = Common::make_unique<INIReader>(sdl2_config_loc);
 
     Reload();
 }
 
-bool Config::LoadINI(INIReader* config, const char* location, const std::string& default_contents, bool retry) {
-    if (config->ParseError() < 0) {
+bool Config::LoadINI(const std::string& default_contents, bool retry) {
+    const char* location = this->sdl2_config_loc.c_str();
+    if (sdl2_config->ParseError() < 0) {
         if (retry) {
             LOG_WARNING(Config, "Failed to load %s. Creating file from defaults...", location);
             FileUtil::CreateFullPath(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.");
         return false;
@@ -82,10 +84,6 @@ void Config::ReadValues() {
 }
 
 void Config::Reload() {
-    LoadINI(sdl2_config, sdl2_config_loc.c_str(), DefaultINI::sdl2_config_file);
+    LoadINI(DefaultINI::sdl2_config_file);
     ReadValues();
 }
-
-Config::~Config() {
-    delete sdl2_config;
-}

+ 4 - 4
src/citra/config.h

@@ -4,19 +4,19 @@
 
 #pragma once
 
+#include <memory>
 #include <string>
 
-class INIReader;
+#include <inih/cpp/INIReader.h>
 
 class Config {
-    INIReader* sdl2_config;
+    std::unique_ptr<INIReader> sdl2_config;
     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();
 public:
     Config();
-    ~Config();
 
     void Reload();
 };