summaryrefslogtreecommitdiff
path: root/src/core/loader/nsp.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/loader/nsp.h')
-rw-r--r--src/core/loader/nsp.h54
1 files changed, 54 insertions, 0 deletions
diff --git a/src/core/loader/nsp.h b/src/core/loader/nsp.h
new file mode 100644
index 000000000..785feaf37
--- /dev/null
+++ b/src/core/loader/nsp.h
@@ -0,0 +1,54 @@
1// Copyright 2018 yuzu emulator team
2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included.
4
5#pragma once
6
7#include <memory>
8#include "common/common_types.h"
9#include "core/file_sys/vfs.h"
10#include "core/loader/loader.h"
11
12namespace FileSys {
13class NACP;
14class NSP;
15} // namespace FileSys
16
17namespace Loader {
18
19class AppLoader_NCA;
20
21/// Loads an XCI file
22class AppLoader_NSP final : public AppLoader {
23public:
24 explicit AppLoader_NSP(FileSys::VirtualFile file);
25 ~AppLoader_NSP();
26
27 /**
28 * Returns the type of the file
29 * @param file std::shared_ptr<VfsFile> open file
30 * @return FileType found, or FileType::Error if this loader doesn't know it
31 */
32 static FileType IdentifyType(const FileSys::VirtualFile& file);
33
34 FileType GetFileType() override {
35 return IdentifyType(file);
36 }
37
38 ResultStatus Load(Kernel::SharedPtr<Kernel::Process>& process) override;
39
40 ResultStatus ReadRomFS(FileSys::VirtualFile& dir) override;
41 ResultStatus ReadProgramId(u64& out_program_id) override;
42 ResultStatus ReadIcon(std::vector<u8>& buffer) override;
43 ResultStatus ReadTitle(std::string& title) override;
44
45private:
46 std::unique_ptr<FileSys::NSP> nsp;
47 std::unique_ptr<AppLoader> secondary_loader;
48
49 FileSys::VirtualFile icon_file;
50 std::shared_ptr<FileSys::NACP> nacp_file;
51 u64 title_id;
52};
53
54} // namespace Loader