mirror of
https://github.com/Lime3DS/Lime3DS
synced 2024-12-27 17:42:40 -06: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…
Reference in a new issue