mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-30 21:30:04 +00:00 
			
		
		
		
	Merge pull request #4444 from FearlessTobi/port-1684
Port yuzu-emu/yuzu#1684: "common/string_util: Minor cleanup"
This commit is contained in:
		
						commit
						dc16ba009e
					
				
					 4 changed files with 17 additions and 96 deletions
				
			
		|  | @ -4,11 +4,10 @@ | |||
| 
 | ||||
| #include <algorithm> | ||||
| #include <cctype> | ||||
| #include <cerrno> | ||||
| #include <codecvt> | ||||
| #include <cstdio> | ||||
| #include <cstdlib> | ||||
| #include <cstring> | ||||
| #include <locale> | ||||
| #include <sstream> | ||||
| #include "common/common_paths.h" | ||||
| #include "common/logging/log.h" | ||||
| #include "common/string_util.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"); | ||||
|  | @ -71,40 +52,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<u32>(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"; | ||||
| } | ||||
|  |  | |||
|  | @ -5,8 +5,6 @@ | |||
| #pragma once | ||||
| 
 | ||||
| #include <cstddef> | ||||
| #include <iomanip> | ||||
| #include <sstream> | ||||
| #include <string> | ||||
| #include <vector> | ||||
| #include "common/common_types.h" | ||||
|  | @ -19,42 +17,11 @@ 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); | ||||
| 
 | ||||
| // Thousand separator. Turns 12345678 into 12,345,678
 | ||||
| template <typename I> | ||||
| 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); | ||||
| bool TryParse(const std::string& str, u32* output); | ||||
| 
 | ||||
| template <typename N> | ||||
| 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<std::string>& output); | ||||
|  |  | |||
|  | @ -165,8 +165,10 @@ void ExtraHID::OnDisconnect() { | |||
| 
 | ||||
| void ExtraHID::HandleConfigureHIDPollingRequest(const std::vector<u8>& 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<u8>& 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<u8>& 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; | ||||
|     } | ||||
| } | ||||
|  |  | |||
|  | @ -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); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue