mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 13:50:03 +00:00 
			
		
		
		
	Port yuzu-emu/yuzu#2511: "common/file_util: Minor cleanup" (#4782)
* common/file_util: Make IOFile's WriteString take a std::string_view We don't need to force the usage of a std::string here, and can instead use a std::string_view, which allows writing out other forms of strings (e.g. C-style strings) without any unnecessary heap allocations. * common/file_util: Remove unnecessary c_str() calls The file stream open functions have supported std::string overloads since C++11, so we don't need to use c_str() here. Same behavior, less code. * common/file_util: Make ReadFileToString and WriteStringToFile consistent Makes the parameter ordering consistent, and also makes the filename parameter a std::string. A std::string would be constructed anyways with the previous code, as IOFile's only constructor with a filepath is one taking a std::string. We can also make WriteStringToFile's string parameter utilize a std::string_view for the string, making use of our previous changes to IOFile. * common/file_util: Remove duplicated documentation comments These are already present within the header, so they don't need to be repeated in the cpp file. * common/file_util: Make GetCurrentDir() return a std::optional nullptr was being returned in the error case, which, at a glance may seem perfectly OK... until you realize that std::string has the invariant that it may not be constructed from a null pointer. This means that if this error case was ever hit, then the application would most likely crash from a thrown exception in std::string's constructor. Instead, we can change the function to return an optional value, indicating if a failure occurred. * common/file_util: Remove unnecessary return at end of void StripTailDirSlashes() While we're at it, also invert the conditional into a guard clause.
This commit is contained in:
		
							parent
							
								
									49f6f11462
								
							
						
					
					
						commit
						ef73de9386
					
				
					 3 changed files with 24 additions and 45 deletions
				
			
		|  | @ -9,6 +9,7 @@ | |||
| #include <fstream> | ||||
| #include <functional> | ||||
| #include <limits> | ||||
| #include <optional> | ||||
| #include <string> | ||||
| #include <type_traits> | ||||
| #include <vector> | ||||
|  | @ -115,7 +116,7 @@ u64 ScanDirectoryTree(const std::string& directory, FSTEntry& parent_entry, | |||
| bool DeleteDirRecursively(const std::string& directory, unsigned int recursion = 256); | ||||
| 
 | ||||
| // Returns the current directory
 | ||||
| std::string GetCurrentDir(); | ||||
| std::optional<std::string> GetCurrentDir(); | ||||
| 
 | ||||
| // Create directory and copy contents (does not overwrite existing files)
 | ||||
| void CopyDir(const std::string& source_path, const std::string& dest_path); | ||||
|  | @ -141,8 +142,9 @@ const std::string& GetExeDirectory(); | |||
| std::string AppDataRoamingDirectory(); | ||||
| #endif | ||||
| 
 | ||||
| size_t WriteStringToFile(bool text_file, const std::string& str, const char* filename); | ||||
| size_t ReadFileToString(bool text_file, const char* filename, std::string& str); | ||||
| std::size_t WriteStringToFile(bool text_file, const std::string& filename, std::string_view str); | ||||
| 
 | ||||
| std::size_t ReadFileToString(bool text_file, const std::string& filename, std::string& str); | ||||
| 
 | ||||
| /**
 | ||||
|  * Splits the filename into 8.3 format | ||||
|  | @ -228,8 +230,8 @@ public: | |||
|         return WriteArray(&object, 1); | ||||
|     } | ||||
| 
 | ||||
|     std::size_t WriteString(const std::string& str) { | ||||
|         return WriteArray(str.c_str(), str.length()); | ||||
|     std::size_t WriteString(std::string_view str) { | ||||
|         return WriteArray(str.data(), str.length()); | ||||
|     } | ||||
| 
 | ||||
|     bool IsOpen() const { | ||||
|  | @ -267,8 +269,8 @@ private: | |||
| template <typename T> | ||||
| void OpenFStream(T& fstream, const std::string& filename, std::ios_base::openmode openmode) { | ||||
| #ifdef _MSC_VER | ||||
|     fstream.open(Common::UTF8ToUTF16W(filename).c_str(), openmode); | ||||
|     fstream.open(Common::UTF8ToUTF16W(filename), openmode); | ||||
| #else | ||||
|     fstream.open(filename.c_str(), openmode); | ||||
|     fstream.open(filename, openmode); | ||||
| #endif | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue