#pragma once #if !defined(MIJIN_VIRTUAL_FILESYSTEM_STACKED_HPP_INCLUDED) #define MIJIN_VIRTUAL_FILESYSTEM_STACKED_HPP_INCLUDED 1 #include #include #include "./filesystem.hpp" namespace mijin { // // public defines // // // public constants // // // public types // class StackedFileSystemAdapter : public FileSystemAdapter { private: std::vector> adapters_; public: std::vector getRoots() override; fs::path getHomeFolder() override; std::vector listFiles(const fs::path& folder) override; FileInfo getFileInfo(const fs::path& file) override; StreamError open(const fs::path& path, FileOpenMode mode, std::unique_ptr& outStream) override; inline void addAdapter(std::unique_ptr&& adapter) { adapters_.push_back(std::move(adapter)); } template inline void emplaceAdapter(TArgs&&... args) { addAdapter(std::make_unique(std::forward(args)...)); } }; // // public functions // } // namespace mijin #endif // !defined(MIJIN_VIRTUAL_FILESYSTEM_STACKED_HPP_INCLUDED)