Move Config ValueToString to StringUtil

An identical implementation is used by IniFile, so move those functions
to StringUtil. A future commit will modify IniFile to use them.
This commit is contained in:
Léo Lam 2018-06-03 14:10:52 +02:00
parent 66ee47c417
commit fc0193c4b1
6 changed files with 61 additions and 57 deletions

View File

@ -11,44 +11,6 @@
namespace Config namespace Config
{ {
namespace detail
{
std::string ValueToString(u16 value)
{
return StringFromFormat("0x%04x", value);
}
std::string ValueToString(u32 value)
{
return StringFromFormat("0x%08x", value);
}
std::string ValueToString(float value)
{
return StringFromFormat("%#.9g", value);
}
std::string ValueToString(double value)
{
return StringFromFormat("%#.17g", value);
}
std::string ValueToString(int value)
{
return std::to_string(value);
}
std::string ValueToString(bool value)
{
return StringFromBool(value);
}
std::string ValueToString(const std::string& value)
{
return value;
}
}
ConfigLayerLoader::ConfigLayerLoader(LayerType layer) : m_layer(layer) ConfigLayerLoader::ConfigLayerLoader(LayerType layer) : m_layer(layer)
{ {
} }

View File

@ -19,19 +19,6 @@ namespace Config
{ {
namespace detail namespace detail
{ {
std::string ValueToString(u16 value);
std::string ValueToString(u32 value);
std::string ValueToString(float value);
std::string ValueToString(double value);
std::string ValueToString(int value);
std::string ValueToString(bool value);
std::string ValueToString(const std::string& value);
template <typename T, std::enable_if_t<std::is_enum<T>::value>* = nullptr>
std::string ValueToString(T value)
{
return ValueToString(static_cast<std::underlying_type_t<T>>(value));
}
template <typename T, std::enable_if_t<!std::is_enum<T>::value>* = nullptr> template <typename T, std::enable_if_t<!std::is_enum<T>::value>* = nullptr>
std::optional<T> TryParse(const std::string& str_value) std::optional<T> TryParse(const std::string& str_value)
{ {
@ -139,7 +126,7 @@ public:
template <typename T> template <typename T>
void Set(const ConfigLocation& location, const T& value) void Set(const ConfigLocation& location, const T& value)
{ {
const std::string new_value = detail::ValueToString(value); const std::string new_value = ValueToString(value);
std::optional<std::string>& current_value = m_map[location]; std::optional<std::string>& current_value = m_map[location];
if (current_value == new_value) if (current_value == new_value)
return; return;

View File

@ -103,7 +103,7 @@ void IniFile::Section::Set(const std::string& key, s64 newValue)
void IniFile::Section::Set(const std::string& key, bool newValue) void IniFile::Section::Set(const std::string& key, bool newValue)
{ {
Set(key, StringFromBool(newValue)); Set(key, ValueToString(newValue));
} }
bool IniFile::Section::Get(const std::string& key, std::string* value, bool IniFile::Section::Get(const std::string& key, std::string* value,

View File

@ -3,6 +3,7 @@
// Refer to the license.txt file included. // Refer to the license.txt file included.
#include <algorithm> #include <algorithm>
#include <cinttypes>
#include <cstdarg> #include <cstdarg>
#include <cstddef> #include <cstddef>
#include <cstdio> #include <cstdio>
@ -291,11 +292,51 @@ bool TryParse(const std::string& str, bool* const output)
return true; return true;
} }
std::string StringFromBool(bool value) std::string ValueToString(u16 value)
{
return StringFromFormat("0x%04x", value);
}
std::string ValueToString(u32 value)
{
return StringFromFormat("0x%08x", value);
}
std::string ValueToString(u64 value)
{
return StringFromFormat("0x%016" PRIx64, value);
}
std::string ValueToString(float value)
{
return StringFromFormat("%#.9g", value);
}
std::string ValueToString(double value)
{
return StringFromFormat("%#.17g", value);
}
std::string ValueToString(int value)
{
return std::to_string(value);
}
std::string ValueToString(s64 value)
{
return StringFromFormat("%" PRId64, value);
}
std::string ValueToString(bool value)
{ {
return value ? "True" : "False"; return value ? "True" : "False";
} }
std::string ValueToString(const std::string& value)
{
return value;
}
bool SplitPath(const std::string& full_path, std::string* _pPath, std::string* _pFilename, bool SplitPath(const std::string& full_path, std::string* _pPath, std::string* _pFilename,
std::string* _pExtension) std::string* _pExtension)
{ {

View File

@ -9,6 +9,7 @@
#include <iomanip> #include <iomanip>
#include <sstream> #include <sstream>
#include <string> #include <string>
#include <type_traits>
#include <vector> #include <vector>
#include "Common/CommonTypes.h" #include "Common/CommonTypes.h"
@ -41,8 +42,6 @@ std::string ArrayToString(const u8* data, u32 size, int line_len = 20, bool spac
std::string StripSpaces(const std::string& s); std::string StripSpaces(const std::string& s);
std::string StripQuotes(const std::string& s); std::string StripQuotes(const std::string& s);
std::string StringFromBool(bool value);
bool TryParse(const std::string& str, bool* output); bool TryParse(const std::string& str, bool* output);
bool TryParse(const std::string& str, u16* output); bool TryParse(const std::string& str, u16* output);
bool TryParse(const std::string& str, u32* output); bool TryParse(const std::string& str, u32* output);
@ -83,6 +82,21 @@ bool TryParseVector(const std::string& str, std::vector<N>* output, const char d
return true; return true;
} }
std::string ValueToString(u16 value);
std::string ValueToString(u32 value);
std::string ValueToString(u64 value);
std::string ValueToString(float value);
std::string ValueToString(double value);
std::string ValueToString(int value);
std::string ValueToString(s64 value);
std::string ValueToString(bool value);
std::string ValueToString(const std::string& value);
template <typename T, std::enable_if_t<std::is_enum<T>::value>* = nullptr>
std::string ValueToString(T value)
{
return ValueToString(static_cast<std::underlying_type_t<T>>(value));
}
// Generates an hexdump-like representation of a binary data blob. // Generates an hexdump-like representation of a binary data blob.
std::string HexDump(const u8* data, size_t size); std::string HexDump(const u8* data, size_t size);

View File

@ -30,7 +30,7 @@ public:
if (audio_backend.size()) if (audio_backend.size())
m_values.emplace_back( m_values.emplace_back(
std::make_tuple(Config::MAIN_DSP_HLE.location, StringFromBool(audio_backend == "HLE"))); std::make_tuple(Config::MAIN_DSP_HLE.location, ValueToString(audio_backend == "HLE")));
// Arguments are in the format of <System>.<Section>.<Key>=Value // Arguments are in the format of <System>.<Section>.<Key>=Value
for (const auto& arg : args) for (const auto& arg : args)