mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 13:50:03 +00:00 
			
		
		
		
	string_util: Remove StringFromFormat() and related functions
Given we utilize fmt, we don't need to provide our own functions for formatting anymore
This commit is contained in:
		
							parent
							
								
									22e172946b
								
							
						
					
					
						commit
						3284bef360
					
				
					 16 changed files with 56 additions and 135 deletions
				
			
		|  | @ -2,6 +2,7 @@ | |||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
| #include <fmt/format.h> | ||||
| #include "common/logging/log.h" | ||||
| #include "common/memory_util.h" | ||||
| 
 | ||||
|  | @ -167,8 +168,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; | ||||
|  |  | |||
|  | @ -36,76 +36,6 @@ std::string ToUpper(std::string str) { | |||
|     return str; | ||||
| } | ||||
| 
 | ||||
| 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) | ||||
|         LOG_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; | ||||
|  |  | |||
|  | @ -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); | ||||
|  |  | |||
|  | @ -3,6 +3,9 @@ | |||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
| #include <ctime> | ||||
| 
 | ||||
| #include <fmt/format.h> | ||||
| 
 | ||||
| #include "common/common_types.h" | ||||
| #include "common/string_util.h" | ||||
| #include "common/timer.h" | ||||
|  | @ -91,9 +94,8 @@ std::string Timer::GetTimeElapsedFormatted() const { | |||
|     // Hours
 | ||||
|     std::chrono::hours Hours = std::chrono::duration_cast<std::chrono::hours>(Milliseconds); | ||||
| 
 | ||||
|     std::string TmpStr = | ||||
|         StringFromFormat("%02d:%02d:%02d:%03d", Hours.count(), Minutes.count() % 60, | ||||
|                          Seconds.count() % 60, Milliseconds.count() % 1000); | ||||
|     std::string TmpStr = fmt::format("{:02}:{:02}:{:02}:{:03}", Hours.count(), Minutes.count() % 60, | ||||
|                                      Seconds.count() % 60, Milliseconds.count() % 1000); | ||||
|     return TmpStr; | ||||
| } | ||||
| 
 | ||||
|  | @ -135,7 +137,7 @@ std::string Timer::GetTimeFormatted() { | |||
|     strftime(tmp, 6, "%M:%S", gmTime); | ||||
| 
 | ||||
|     u64 milliseconds = static_cast<u64>(GetTimeMs().count()) % 1000; | ||||
|     return StringFromFormat("%s:%03d", tmp, milliseconds); | ||||
|     return fmt::format("{}:{:03}", tmp, milliseconds); | ||||
| } | ||||
| 
 | ||||
| // Returns a timestamp with decimals for precise time comparisons
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue