mirror of
https://github.com/citra-mirror/citra.git
synced 2024-08-20 18:33:24 +02: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,11 +4,10 @@
|
|||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <cctype>
|
#include <cctype>
|
||||||
#include <cerrno>
|
|
||||||
#include <codecvt>
|
#include <codecvt>
|
||||||
#include <cstdio>
|
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include <cstring>
|
#include <locale>
|
||||||
|
#include <sstream>
|
||||||
#include "common/common_paths.h"
|
#include "common/common_paths.h"
|
||||||
#include "common/logging/log.h"
|
#include "common/logging/log.h"
|
||||||
#include "common/string_util.h"
|
#include "common/string_util.h"
|
||||||
@ -33,24 +32,6 @@ std::string ToUpper(std::string str) {
|
|||||||
return 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.
|
// Turns " hej " into "hej". Also handles tabs.
|
||||||
std::string StripSpaces(const std::string& str) {
|
std::string StripSpaces(const std::string& str) {
|
||||||
const std::size_t s = str.find_first_not_of(" \t\r\n");
|
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;
|
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) {
|
std::string StringFromBool(bool value) {
|
||||||
return value ? "True" : "False";
|
return value ? "True" : "False";
|
||||||
}
|
}
|
||||||
|
@ -5,8 +5,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <cstddef>
|
#include <cstddef>
|
||||||
#include <iomanip>
|
|
||||||
#include <sstream>
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include "common/common_types.h"
|
#include "common/common_types.h"
|
||||||
@ -19,42 +17,11 @@ std::string ToLower(std::string str);
|
|||||||
/// Make a string uppercase
|
/// Make a string uppercase
|
||||||
std::string ToUpper(std::string str);
|
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 StripSpaces(const std::string& s);
|
||||||
std::string StripQuotes(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);
|
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);
|
std::string TabsToSpaces(int tab_size, std::string in);
|
||||||
|
|
||||||
void SplitString(const std::string& str, char delim, std::vector<std::string>& output);
|
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) {
|
void ExtraHID::HandleConfigureHIDPollingRequest(const std::vector<u8>& request) {
|
||||||
if (request.size() != 3) {
|
if (request.size() != 3) {
|
||||||
LOG_ERROR(Service_IR, "Wrong request size ({}): {}", request.size(),
|
std::string request_string;
|
||||||
Common::ArrayToString(request.data(), request.size()));
|
for (auto request_part : request)
|
||||||
|
request_string += fmt::format("{:02x} ", request_part);
|
||||||
|
LOG_ERROR(Service_IR, "Wrong request size ({}): {}", request.size(), request_string);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -188,8 +190,11 @@ void ExtraHID::HandleReadCalibrationDataRequest(const std::vector<u8>& request_b
|
|||||||
"ReadCalibrationDataRequest has wrong size");
|
"ReadCalibrationDataRequest has wrong size");
|
||||||
|
|
||||||
if (request_buf.size() != sizeof(ReadCalibrationDataRequest)) {
|
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(),
|
LOG_ERROR(Service_IR, "Wrong request size ({}): {}", request_buf.size(),
|
||||||
Common::ArrayToString(request_buf.data(), request_buf.size()));
|
request_buf_string);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -223,8 +228,10 @@ void ExtraHID::OnReceive(const std::vector<u8>& data) {
|
|||||||
HandleReadCalibrationDataRequest(data);
|
HandleReadCalibrationDataRequest(data);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
LOG_ERROR(Service_IR, "Unknown request: {}",
|
std::string data_string;
|
||||||
Common::ArrayToString(data.data(), data.size()));
|
for (auto data_part : data)
|
||||||
|
data_string += fmt::format("{:02x} ", data_part);
|
||||||
|
LOG_ERROR(Service_IR, "Unknown request: {}", data_string);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -358,9 +358,9 @@ Movie::ValidationResult Movie::ValidateHeader(const CTMHeader& header, u64 progr
|
|||||||
return ValidationResult::Invalid;
|
return ValidationResult::Invalid;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string revision =
|
std::string revision;
|
||||||
Common::ArrayToString(header.revision.data(), header.revision.size(), 21, false);
|
for (auto header_part : header.revision)
|
||||||
revision = Common::ToLower(revision);
|
revision += fmt::format("{:02x}", header_part);
|
||||||
|
|
||||||
if (!program_id)
|
if (!program_id)
|
||||||
Core::System::GetInstance().GetAppLoader().ReadProgramId(program_id);
|
Core::System::GetInstance().GetAppLoader().ReadProgramId(program_id);
|
||||||
|
Loading…
Reference in New Issue
Block a user