| | |
| | |
| |
|
| | #pragma once |
| |
|
| | #include <memory> |
| | #include "common/common_types.h" |
| | #include "core/loader/loader.h" |
| |
|
| | namespace FileSys { |
| | class ContentProvider; |
| | class NACP; |
| | class XCI; |
| | } |
| |
|
| | namespace Service::FileSystem { |
| | class FileSystemController; |
| | } |
| |
|
| | namespace Loader { |
| |
|
| | class AppLoader_NCA; |
| |
|
| | |
| | class AppLoader_XCI final : public AppLoader { |
| | public: |
| | explicit AppLoader_XCI(FileSys::VirtualFile file_, |
| | const Service::FileSystem::FileSystemController& fsc, |
| | const FileSys::ContentProvider& content_provider, u64 program_id, |
| | std::size_t program_index); |
| | ~AppLoader_XCI() override; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | static FileType IdentifyType(const FileSys::VirtualFile& xci_file); |
| |
|
| | FileType GetFileType() const override { |
| | return IdentifyType(file); |
| | } |
| |
|
| | LoadResult Load(Kernel::KProcess& process, Core::System& system) override; |
| |
|
| | ResultStatus VerifyIntegrity(std::function<bool(size_t, size_t)> progress_callback) override; |
| |
|
| | ResultStatus ReadRomFS(FileSys::VirtualFile& out_file) override; |
| | ResultStatus ReadUpdateRaw(FileSys::VirtualFile& out_file) override; |
| | ResultStatus ReadProgramId(u64& out_program_id) override; |
| | ResultStatus ReadProgramIds(std::vector<u64>& out_program_ids) override; |
| | ResultStatus ReadIcon(std::vector<u8>& buffer) override; |
| | ResultStatus ReadTitle(std::string& title) override; |
| | ResultStatus ReadControlData(FileSys::NACP& control) override; |
| | ResultStatus ReadManualRomFS(FileSys::VirtualFile& out_file) override; |
| |
|
| | ResultStatus ReadBanner(std::vector<u8>& buffer) override; |
| | ResultStatus ReadLogo(std::vector<u8>& buffer) override; |
| |
|
| | ResultStatus ReadNSOModules(Modules& modules) override; |
| |
|
| | private: |
| | std::unique_ptr<FileSys::XCI> xci; |
| | std::unique_ptr<AppLoader_NCA> nca_loader; |
| |
|
| | FileSys::VirtualFile icon_file; |
| | std::unique_ptr<FileSys::NACP> nacp_file; |
| | }; |
| |
|
| | } |
| |
|