| 
									
										
										
										
											2014-12-17 23:44:32 -05:00
										 |  |  | // Copyright 2014 Citra Emulator Project
 | 
					
						
							| 
									
										
										
										
											2014-12-16 21:38:14 -08:00
										 |  |  | // Licensed under GPLv2 or any later version
 | 
					
						
							| 
									
										
										
										
											2014-12-17 23:44:32 -05:00
										 |  |  | // Refer to the license.txt file included.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #pragma once
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-21 15:44:11 +01:00
										 |  |  | #include <memory>
 | 
					
						
							|  |  |  | #include <string>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-17 23:44:32 -05:00
										 |  |  | #include "common/common_types.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-21 15:44:11 +01:00
										 |  |  | #include "core/file_sys/archive_backend.h"
 | 
					
						
							|  |  |  | #include "core/hle/result.h"
 | 
					
						
							| 
									
										
										
										
											2014-12-17 23:44:32 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | ////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					
						
							|  |  |  | // FileSys namespace
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace FileSys { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-18 16:58:42 -05:00
										 |  |  | /// File system interface to the SystemSaveData archive
 | 
					
						
							| 
									
										
										
										
											2015-02-24 18:02:40 -05:00
										 |  |  | class ArchiveFactory_SystemSaveData final : public ArchiveFactory { | 
					
						
							| 
									
										
										
										
											2014-12-17 23:44:32 -05:00
										 |  |  | public: | 
					
						
							| 
									
										
										
										
											2015-02-24 18:02:40 -05:00
										 |  |  |     ArchiveFactory_SystemSaveData(const std::string& mount_point); | 
					
						
							| 
									
										
										
										
											2014-12-17 23:44:32 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-24 18:02:40 -05:00
										 |  |  |     ResultVal<std::unique_ptr<ArchiveBackend>> Open(const Path& path) override; | 
					
						
							| 
									
										
										
										
											2015-12-28 13:51:44 -05:00
										 |  |  |     ResultCode Format(const Path& path, const FileSys::ArchiveFormatInfo& format_info) override; | 
					
						
							|  |  |  |     ResultVal<ArchiveFormatInfo> GetFormatInfo(const Path& path) const override; | 
					
						
							| 
									
										
										
										
											2014-12-17 23:44:32 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |     std::string GetName() const override { return "SystemSaveData"; } | 
					
						
							| 
									
										
										
										
											2015-02-24 18:02:40 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | private: | 
					
						
							|  |  |  |     std::string base_path; | 
					
						
							| 
									
										
										
										
											2014-12-17 23:44:32 -05:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-03-14 12:00:01 -05:00
										 |  |  | /**
 | 
					
						
							|  |  |  |  * Constructs a path to the concrete SystemSaveData archive in the host filesystem based on the | 
					
						
							|  |  |  |  * input Path and base mount point. | 
					
						
							|  |  |  |  * @param mount_point The base mount point of the SystemSaveData archives. | 
					
						
							|  |  |  |  * @param path The path that identifies the requested concrete SystemSaveData archive. | 
					
						
							|  |  |  |  * @returns The complete path to the specified SystemSaveData archive in the host filesystem | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | std::string GetSystemSaveDataPath(const std::string& mount_point, const Path& path); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /**
 | 
					
						
							|  |  |  |  * Constructs a path to the base folder to hold concrete SystemSaveData archives in the host file system. | 
					
						
							|  |  |  |  * @param mount_point The base folder where this folder resides, ie. SDMC or NAND. | 
					
						
							|  |  |  |  * @returns The path to the base SystemSaveData archives' folder in the host file system | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | std::string GetSystemSaveDataContainerPath(const std::string& mount_point); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /**
 | 
					
						
							|  |  |  |  * Constructs a FileSys::Path object that refers to the SystemSaveData archive identified by | 
					
						
							|  |  |  |  * the specified high save id and low save id. | 
					
						
							|  |  |  |  * @param high The high word of the save id for the archive | 
					
						
							|  |  |  |  * @param low The low word of the save id for the archive | 
					
						
							|  |  |  |  * @returns A FileSys::Path to the wanted archive | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | Path ConstructSystemSaveDataBinaryPath(u32 high, u32 low); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-17 23:44:32 -05:00
										 |  |  | } // namespace FileSys
 |