From 7e79bf97abf57130d21d635d908ff3ca12e89fb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Lam?= Date: Sun, 3 Jun 2018 14:39:38 +0200 Subject: [PATCH] IniFile: Use templates for Get() Gets rid of duplicated code. --- Source/Core/Common/IniFile.cpp | 84 ---------------------------------- Source/Core/Common/IniFile.h | 18 +++++--- 2 files changed, 11 insertions(+), 91 deletions(-) diff --git a/Source/Core/Common/IniFile.cpp b/Source/Core/Common/IniFile.cpp index d24149b6da..604c4b0fc9 100644 --- a/Source/Core/Common/IniFile.cpp +++ b/Source/Core/Common/IniFile.cpp @@ -110,90 +110,6 @@ bool IniFile::Section::Get(const std::string& key, std::vector* out return true; } -bool IniFile::Section::Get(const std::string& key, int* value, int defaultValue) const -{ - std::string temp; - bool retval = Get(key, &temp); - - if (retval && TryParse(temp, value)) - return true; - - *value = defaultValue; - return false; -} - -bool IniFile::Section::Get(const std::string& key, s64* value, s64 default_value) const -{ - std::string temp; - bool retval = Get(key, &temp); - - if (retval && TryParse(temp, value)) - return true; - - *value = default_value; - return false; -} - -bool IniFile::Section::Get(const std::string& key, u32* value, u32 defaultValue) const -{ - std::string temp; - bool retval = Get(key, &temp); - - if (retval && TryParse(temp, value)) - return true; - - *value = defaultValue; - return false; -} - -bool IniFile::Section::Get(const std::string& key, u64* value, u64 default_value) const -{ - std::string temp; - bool retval = Get(key, &temp); - - if (retval && TryParse(temp, value)) - return true; - - *value = default_value; - return false; -} - -bool IniFile::Section::Get(const std::string& key, bool* value, bool defaultValue) const -{ - std::string temp; - bool retval = Get(key, &temp); - - if (retval && TryParse(temp, value)) - return true; - - *value = defaultValue; - return false; -} - -bool IniFile::Section::Get(const std::string& key, float* value, float defaultValue) const -{ - std::string temp; - bool retval = Get(key, &temp); - - if (retval && TryParse(temp, value)) - return true; - - *value = defaultValue; - return false; -} - -bool IniFile::Section::Get(const std::string& key, double* value, double defaultValue) const -{ - std::string temp; - bool retval = Get(key, &temp); - - if (retval && TryParse(temp, value)) - return true; - - *value = defaultValue; - return false; -} - bool IniFile::Section::Exists(const std::string& key) const { return values.find(key) != values.end(); diff --git a/Source/Core/Common/IniFile.h b/Source/Core/Common/IniFile.h index 4830422ea3..f11a4b9d32 100644 --- a/Source/Core/Common/IniFile.h +++ b/Source/Core/Common/IniFile.h @@ -55,13 +55,17 @@ public: bool Get(const std::string& key, std::string* value, const std::string& defaultValue = NULL_STRING) const; - bool Get(const std::string& key, int* value, int defaultValue = 0) const; - bool Get(const std::string& key, s64* value, s64 default_value = 0) const; - bool Get(const std::string& key, u32* value, u32 defaultValue = 0) const; - bool Get(const std::string& key, u64* value, u64 default_value = 0) const; - bool Get(const std::string& key, bool* value, bool defaultValue = false) const; - bool Get(const std::string& key, float* value, float defaultValue = 0.0f) const; - bool Get(const std::string& key, double* value, double defaultValue = 0.0) const; + template + bool Get(const std::string& key, T* value, + const std::common_type_t& default_value = {}) const + { + std::string temp; + bool retval = Get(key, &temp); + if (retval && TryParse(temp, value)) + return true; + *value = default_value; + return false; + } bool Get(const std::string& key, std::vector* values) const; void SetLines(const std::vector& lines);