// Copyright 2016 Citra Emulator Project // Licensed under GPLv2 or any later version // Refer to the license.txt file included. #pragma once #include #include #include "core/file_sys/archive_source_sd_savedata.h" //////////////////////////////////////////////////////////////////////////////////////////////////// // FileSys namespace namespace FileSys { /// File system interface to the OtherSaveDataPermitted archive class ArchiveFactory_OtherSaveDataPermitted final : public ArchiveFactory { public: explicit ArchiveFactory_OtherSaveDataPermitted( std::shared_ptr sd_savedata_source); std::string GetName() const override { return "OtherSaveDataPermitted"; } ResultVal> Open(const Path& path, u64 program_id) override; ResultCode Format(const Path& path, const FileSys::ArchiveFormatInfo& format_info, u64 program_id) override; ResultVal GetFormatInfo(const Path& path, u64 program_id) const override; private: std::shared_ptr sd_savedata_source; ArchiveFactory_OtherSaveDataPermitted() = default; template void serialize(Archive& ar, const unsigned int) { ar& boost::serialization::base_object(*this); ar& sd_savedata_source; } friend class boost::serialization::access; }; /// File system interface to the OtherSaveDataGeneral archive class ArchiveFactory_OtherSaveDataGeneral final : public ArchiveFactory { public: explicit ArchiveFactory_OtherSaveDataGeneral( std::shared_ptr sd_savedata_source); std::string GetName() const override { return "OtherSaveDataGeneral"; } ResultVal> Open(const Path& path, u64 program_id) override; ResultCode Format(const Path& path, const FileSys::ArchiveFormatInfo& format_info, u64 program_id) override; ResultVal GetFormatInfo(const Path& path, u64 program_id) const override; private: std::shared_ptr sd_savedata_source; ArchiveFactory_OtherSaveDataGeneral() = default; template void serialize(Archive& ar, const unsigned int) { ar& boost::serialization::base_object(*this); ar& sd_savedata_source; } friend class boost::serialization::access; }; } // namespace FileSys BOOST_CLASS_EXPORT_KEY(FileSys::ArchiveFactory_OtherSaveDataPermitted) BOOST_CLASS_EXPORT_KEY(FileSys::ArchiveFactory_OtherSaveDataGeneral)