diff options
author | bunnei <bunneidev@gmail.com> | 2018-04-30 03:49:13 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-04-30 03:49:13 +0200 |
commit | 81a0082f6bd4f2db9b09e56cce96351bb5084e46 (patch) | |
tree | 4309e2b742d485f9854bbe63de4393f7e8785f5c /src/common | |
parent | Merge pull request #422 from bunnei/shader-mov (diff) | |
parent | string_util: Remove StringFromFormat() and related functions (diff) | |
download | yuzu-81a0082f6bd4f2db9b09e56cce96351bb5084e46.tar yuzu-81a0082f6bd4f2db9b09e56cce96351bb5084e46.tar.gz yuzu-81a0082f6bd4f2db9b09e56cce96351bb5084e46.tar.bz2 yuzu-81a0082f6bd4f2db9b09e56cce96351bb5084e46.tar.lz yuzu-81a0082f6bd4f2db9b09e56cce96351bb5084e46.tar.xz yuzu-81a0082f6bd4f2db9b09e56cce96351bb5084e46.tar.zst yuzu-81a0082f6bd4f2db9b09e56cce96351bb5084e46.zip |
Diffstat (limited to 'src/common')
-rw-r--r-- | src/common/memory_util.cpp | 3 | ||||
-rw-r--r-- | src/common/string_util.cpp | 70 | ||||
-rw-r--r-- | src/common/string_util.h | 14 | ||||
-rw-r--r-- | src/common/timer.cpp | 13 |
4 files changed, 9 insertions, 91 deletions
diff --git a/src/common/memory_util.cpp b/src/common/memory_util.cpp index 79b7215d3..4d1ec8fb9 100644 --- a/src/common/memory_util.cpp +++ b/src/common/memory_util.cpp @@ -167,8 +167,7 @@ std::string MemUsage() { return "MemUsage Error"; if (GetProcessMemoryInfo(hProcess, &pmc, sizeof(pmc))) - Ret = Common::StringFromFormat( - "%s K", Common::ThousandSeparate(pmc.WorkingSetSize / 1024, 7).c_str()); + Ret = fmt::format("{} K", Common::ThousandSeparate(pmc.WorkingSetSize / 1024, 7)); CloseHandle(hProcess); return Ret; diff --git a/src/common/string_util.cpp b/src/common/string_util.cpp index 96c52e3ba..1d952874d 100644 --- a/src/common/string_util.cpp +++ b/src/common/string_util.cpp @@ -46,76 +46,6 @@ bool AsciiToHex(const char* _szValue, u32& result) { return true; } -bool CharArrayFromFormatV(char* out, int outsize, const char* format, va_list args) { - int writtenCount; - -#ifdef _MSC_VER - // You would think *printf are simple, right? Iterate on each character, - // if it's a format specifier handle it properly, etc. - // - // Nooooo. Not according to the C standard. - // - // According to the C99 standard (7.19.6.1 "The fprintf function") - // The format shall be a multibyte character sequence - // - // Because some character encodings might have '%' signs in the middle of - // a multibyte sequence (SJIS for example only specifies that the first - // byte of a 2 byte sequence is "high", the second byte can be anything), - // printf functions have to decode the multibyte sequences and try their - // best to not screw up. - // - // Unfortunately, on Windows, the locale for most languages is not UTF-8 - // as we would need. Notably, for zh_TW, Windows chooses EUC-CN as the - // locale, and completely fails when trying to decode UTF-8 as EUC-CN. - // - // On the other hand, the fix is simple: because we use UTF-8, no such - // multibyte handling is required as we can simply assume that no '%' char - // will be present in the middle of a multibyte sequence. - // - // This is why we lookup an ANSI (cp1252) locale here and use _vsnprintf_l. - static locale_t c_locale = nullptr; - if (!c_locale) - c_locale = _create_locale(LC_ALL, ".1252"); - writtenCount = _vsnprintf_l(out, outsize, format, c_locale, args); -#else - writtenCount = vsnprintf(out, outsize, format, args); -#endif - - if (writtenCount > 0 && writtenCount < outsize) { - out[writtenCount] = '\0'; - return true; - } else { - out[outsize - 1] = '\0'; - return false; - } -} - -std::string StringFromFormat(const char* format, ...) { - va_list args; - char* buf = nullptr; -#ifdef _WIN32 - int required = 0; - - va_start(args, format); - required = _vscprintf(format, args); - buf = new char[required + 1]; - CharArrayFromFormatV(buf, required + 1, format, args); - va_end(args); - - std::string temp = buf; - delete[] buf; -#else - va_start(args, format); - if (vasprintf(&buf, format, args) < 0) - NGLOG_ERROR(Common, "Unable to allocate memory for string"); - va_end(args); - - std::string temp = buf; - free(buf); -#endif - return temp; -} - // For Debugging. Read out an u8 array. std::string ArrayToString(const u8* data, size_t size, int line_len, bool spaces) { std::ostringstream oss; diff --git a/src/common/string_util.h b/src/common/string_util.h index ec0c31a24..65e4ea5d3 100644 --- a/src/common/string_util.h +++ b/src/common/string_util.h @@ -4,7 +4,6 @@ #pragma once -#include <cstdarg> #include <cstddef> #include <iomanip> #include <sstream> @@ -20,19 +19,6 @@ std::string ToLower(std::string str); /// Make a string uppercase std::string ToUpper(std::string str); -std::string StringFromFormat(const char* format, ...); -// Cheap! -bool CharArrayFromFormatV(char* out, int outsize, const char* format, va_list args); - -template <size_t Count> -inline void CharArrayFromFormat(char (&out)[Count], const char* format, ...) { - va_list args; - va_start(args, format); - CharArrayFromFormatV(out, Count, format, args); - va_end(args); -} - -// Good std::string ArrayToString(const u8* data, size_t size, int line_len = 20, bool spaces = true); std::string StripSpaces(const std::string& s); diff --git a/src/common/timer.cpp b/src/common/timer.cpp index c9803109e..f0c5b1a43 100644 --- a/src/common/timer.cpp +++ b/src/common/timer.cpp @@ -2,7 +2,10 @@ // Licensed under GPLv2 or any later version // Refer to the license.txt file included. -#include <time.h> +#include <ctime> + +#include <fmt/format.h> + #ifdef _WIN32 #include <windows.h> // windows.h needs to be included before other windows headers @@ -104,8 +107,8 @@ std::string Timer::GetTimeElapsedFormatted() const { // Hours u32 Hours = Minutes / 60; - std::string TmpStr = StringFromFormat("%02i:%02i:%02i:%03i", Hours, Minutes % 60, Seconds % 60, - Milliseconds % 1000); + std::string TmpStr = fmt::format("{:02}:{:02}:{:02}:{:03}", Hours, Minutes % 60, Seconds % 60, + Milliseconds % 1000); return TmpStr; } @@ -165,11 +168,11 @@ std::string Timer::GetTimeFormatted() { #ifdef _WIN32 struct timeb tp; (void)::ftime(&tp); - return StringFromFormat("%s:%03i", tmp, tp.millitm); + return fmt::format("{}:{:03}", tmp, tp.millitm); #else struct timeval t; (void)gettimeofday(&t, nullptr); - return StringFromFormat("%s:%03d", tmp, (int)(t.tv_usec / 1000)); + return fmt::format("{}:{:03}", tmp, static_cast<int>(t.tv_usec / 1000)); #endif } |