| |
| |
|
|
| #pragma once |
|
|
| #include <memory> |
| #include <string> |
| #include <vector> |
| #include "common/common_types.h" |
| #include "core/loader/loader.h" |
|
|
| namespace Core { |
| class System; |
| } |
|
|
| namespace FileSys { |
| class NACP; |
| } |
|
|
| namespace Kernel { |
| class KProcess; |
| } |
|
|
| namespace Loader { |
|
|
| |
| class AppLoader_NRO final : public AppLoader { |
| public: |
| explicit AppLoader_NRO(FileSys::VirtualFile file_); |
| ~AppLoader_NRO() override; |
|
|
| |
| |
| |
| |
| |
| |
| |
| static FileType IdentifyType(const FileSys::VirtualFile& nro_file); |
|
|
| bool IsHomebrew(); |
|
|
| FileType GetFileType() const override { |
| return IdentifyType(file); |
| } |
|
|
| LoadResult Load(Kernel::KProcess& process, Core::System& system) override; |
|
|
| ResultStatus ReadIcon(std::vector<u8>& buffer) override; |
| ResultStatus ReadProgramId(u64& out_program_id) override; |
| ResultStatus ReadRomFS(FileSys::VirtualFile& dir) override; |
| ResultStatus ReadTitle(std::string& title) override; |
| ResultStatus ReadControlData(FileSys::NACP& control) override; |
| bool IsRomFSUpdatable() const override; |
|
|
| private: |
| bool LoadNro(Core::System& system, Kernel::KProcess& process, const FileSys::VfsFile& nro_file); |
|
|
| std::vector<u8> icon_data; |
| std::unique_ptr<FileSys::NACP> nacp; |
| FileSys::VirtualFile romfs; |
| }; |
|
|
| } |
|
|