diff --git a/src/core/loader/xc.h b/src/core/loader/xc.h new file mode 100644 index 0000000000..f12ffbc158 --- /dev/null +++ b/src/core/loader/xc.h @@ -0,0 +1,40 @@ +// Copyright 2018 yuzu emulator team +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include +#include "common/common_types.h" +#include "core/hle/kernel/kernel.h" +#include "core/loader/linker.h" +#include "core/loader/loader.h" + +namespace Loader { + +/// Loads an XCI file +class AppLoader_XCI final : public AppLoader, Linker { +public: + AppLoader_NRO(FileUtil::IOFile&& file, std::string filepath); + + /** + * Returns the type of the file + * @param file FileUtil::IOFile open file + * @param filepath Path of the file that we are opening. + * @return FileType found, or FileType::Error if this loader doesn't know it + */ + static FileType IdentifyType(FileUtil::IOFile& file, const std::string& filepath); + + FileType GetFileType() override { + return IdentifyType(file, filepath); + } + + ResultStatus Load(Kernel::SharedPtr& process) override; + +private: + bool LoadNro(const std::string& path, VAddr load_base); + + std::string filepath; +}; + +} // namespace Loader