From 3d0339659ad882c62176d8f07b2b774289798375 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Tue, 13 Nov 2018 14:04:24 -0500 Subject: [PATCH 1/4] string_util: Remove ThousandSeparate() This is currently unused and doesn't really provide much value to keep around either. --- src/common/string_util.h | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/src/common/string_util.h b/src/common/string_util.h index 091735d5f..43e73528d 100644 --- a/src/common/string_util.h +++ b/src/common/string_util.h @@ -24,20 +24,6 @@ std::string ArrayToString(const u8* data, std::size_t size, int line_len = 20, b std::string StripSpaces(const std::string& s); std::string StripQuotes(const std::string& s); -// Thousand separator. Turns 12345678 into 12,345,678 -template -std::string ThousandSeparate(I value, int spaces = 0) { - std::ostringstream oss; - -// std::locale("") seems to be broken on many platforms -#if defined _WIN32 || (defined __linux__ && !defined __clang__) - oss.imbue(std::locale("")); -#endif - oss << std::setw(spaces) << value; - - return oss.str(); -} - std::string StringFromBool(bool value); bool TryParse(const std::string& str, bool* output); From cab8dc38240f17eb539555aa8a5b0396fc18f8b8 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Tue, 13 Nov 2018 14:09:05 -0500 Subject: [PATCH 2/4] string_util: Remove TryParse() This is an unused hold-over from Dolphin that was primarily used to parse values out of the .ini files. Given we already have libraries that do this for us, we don't need to keep this around. --- src/common/string_util.cpp | 40 +++----------------------------------- src/common/string_util.h | 17 ---------------- 2 files changed, 3 insertions(+), 54 deletions(-) diff --git a/src/common/string_util.cpp b/src/common/string_util.cpp index c556d5040..c93418dbb 100644 --- a/src/common/string_util.cpp +++ b/src/common/string_util.cpp @@ -4,11 +4,11 @@ #include #include -#include #include -#include #include -#include +#include +#include +#include #include "common/common_paths.h" #include "common/logging/log.h" #include "common/string_util.h" @@ -71,40 +71,6 @@ std::string StripQuotes(const std::string& s) { return s; } -bool TryParse(const std::string& str, u32* const output) { - char* endptr = nullptr; - - // Reset errno to a value other than ERANGE - errno = 0; - - unsigned long value = strtoul(str.c_str(), &endptr, 0); - - if (!endptr || *endptr) - return false; - - if (errno == ERANGE) - return false; - -#if ULONG_MAX > UINT_MAX - if (value >= 0x100000000ull && value <= 0xFFFFFFFF00000000ull) - return false; -#endif - - *output = static_cast(value); - return true; -} - -bool TryParse(const std::string& str, bool* const output) { - if ("1" == str || "true" == ToLower(str)) - *output = true; - else if ("0" == str || "false" == ToLower(str)) - *output = false; - else - return false; - - return true; -} - std::string StringFromBool(bool value) { return value ? "True" : "False"; } diff --git a/src/common/string_util.h b/src/common/string_util.h index 43e73528d..38e457ae9 100644 --- a/src/common/string_util.h +++ b/src/common/string_util.h @@ -5,8 +5,6 @@ #pragma once #include -#include -#include #include #include #include "common/common_types.h" @@ -26,21 +24,6 @@ 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, u32* output); - -template -static bool TryParse(const std::string& str, N* const output) { - std::istringstream iss(str); - - N tmp = 0; - if (iss >> tmp) { - *output = tmp; - return true; - } else - return false; -} - std::string TabsToSpaces(int tab_size, std::string in); void SplitString(const std::string& str, char delim, std::vector& output); From 41376cfa2667c10241f479a59cd40058823779f3 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Tue, 13 Nov 2018 14:11:34 -0500 Subject: [PATCH 3/4] string_util: Remove ArrayToString() An old function from Dolphin. This is also unused, and pretty inflexible when it comes to printing out different data types (for example, one might not want to print out an array of u8s but a different type instead. Given we use fmt, there's no need to keep this implementation of the function around. --- src/common/string_util.cpp | 19 ------------------- src/common/string_util.h | 2 -- 2 files changed, 21 deletions(-) diff --git a/src/common/string_util.cpp b/src/common/string_util.cpp index c93418dbb..541a2bf4e 100644 --- a/src/common/string_util.cpp +++ b/src/common/string_util.cpp @@ -6,7 +6,6 @@ #include #include #include -#include #include #include #include "common/common_paths.h" @@ -33,24 +32,6 @@ std::string ToUpper(std::string str) { return str; } -// For Debugging. Read out an u8 array. -std::string ArrayToString(const u8* data, std::size_t size, int line_len, bool spaces) { - std::ostringstream oss; - oss << std::setfill('0') << std::hex; - - for (int line = 0; size; ++data, --size) { - oss << std::setw(2) << (int)*data; - - if (line_len == ++line) { - oss << '\n'; - line = 0; - } else if (spaces) - oss << ' '; - } - - return oss.str(); -} - // Turns " hej " into "hej". Also handles tabs. std::string StripSpaces(const std::string& str) { const std::size_t s = str.find_first_not_of(" \t\r\n"); diff --git a/src/common/string_util.h b/src/common/string_util.h index 38e457ae9..d8fa4053e 100644 --- a/src/common/string_util.h +++ b/src/common/string_util.h @@ -17,8 +17,6 @@ std::string ToLower(std::string str); /// Make a string uppercase std::string ToUpper(std::string str); -std::string ArrayToString(const u8* data, std::size_t size, int line_len = 20, bool spaces = true); - std::string StripSpaces(const std::string& s); std::string StripQuotes(const std::string& s); From fc51a6fd0817f4f85f1210834b1f2d4ec6cc3ec9 Mon Sep 17 00:00:00 2001 From: fearlessTobi Date: Sun, 18 Nov 2018 00:51:14 +0100 Subject: [PATCH 4/4] Fix functions which used Common::ArrayToString --- src/core/hle/service/ir/extra_hid.cpp | 17 ++++++++++++----- src/core/movie.cpp | 6 +++--- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/core/hle/service/ir/extra_hid.cpp b/src/core/hle/service/ir/extra_hid.cpp index 31b63257e..2a00ac08f 100644 --- a/src/core/hle/service/ir/extra_hid.cpp +++ b/src/core/hle/service/ir/extra_hid.cpp @@ -165,8 +165,10 @@ void ExtraHID::OnDisconnect() { void ExtraHID::HandleConfigureHIDPollingRequest(const std::vector& request) { if (request.size() != 3) { - LOG_ERROR(Service_IR, "Wrong request size ({}): {}", request.size(), - Common::ArrayToString(request.data(), request.size())); + std::string request_string; + for (auto request_part : request) + request_string += fmt::format("{:02x} ", request_part); + LOG_ERROR(Service_IR, "Wrong request size ({}): {}", request.size(), request_string); return; } @@ -188,8 +190,11 @@ void ExtraHID::HandleReadCalibrationDataRequest(const std::vector& request_b "ReadCalibrationDataRequest has wrong size"); if (request_buf.size() != sizeof(ReadCalibrationDataRequest)) { + std::string request_buf_string; + for (auto request_buf_part : request_buf) + request_buf_string += fmt::format("{:02x} ", request_buf_part); LOG_ERROR(Service_IR, "Wrong request size ({}): {}", request_buf.size(), - Common::ArrayToString(request_buf.data(), request_buf.size())); + request_buf_string); return; } @@ -223,8 +228,10 @@ void ExtraHID::OnReceive(const std::vector& data) { HandleReadCalibrationDataRequest(data); break; default: - LOG_ERROR(Service_IR, "Unknown request: {}", - Common::ArrayToString(data.data(), data.size())); + std::string data_string; + for (auto data_part : data) + data_string += fmt::format("{:02x} ", data_part); + LOG_ERROR(Service_IR, "Unknown request: {}", data_string); break; } } diff --git a/src/core/movie.cpp b/src/core/movie.cpp index a0f237cf3..1374349f6 100644 --- a/src/core/movie.cpp +++ b/src/core/movie.cpp @@ -358,9 +358,9 @@ Movie::ValidationResult Movie::ValidateHeader(const CTMHeader& header, u64 progr return ValidationResult::Invalid; } - std::string revision = - Common::ArrayToString(header.revision.data(), header.revision.size(), 21, false); - revision = Common::ToLower(revision); + std::string revision; + for (auto header_part : header.revision) + revision += fmt::format("{:02x}", header_part); if (!program_id) Core::System::GetInstance().GetAppLoader().ReadProgramId(program_id);