#include "filesystem.h"
#include "std/filesystem.h"
#include "../compile.h"

#include <memory>

namespace sleek
{
    namespace io
    {
        std::shared_ptr<archive> filesystem::load(const std::string &filename) const noexcept
        {
            for(auto e : loader)
                if(e->match(filename))
                    return e->load(filename);
            return nullptr;
        }
        std::shared_ptr<filesystem> createFilesystem(FILE_SYSTEM_TYPE e)
        {
            switch(e)
            {
                #ifdef std_filesystem_support
                    case FILE_SYSTEM_TYPE::FST_STD:
                        return std::make_shared<std_filesystem>();
                #endif // std_filesystem
            }
            return nullptr;
        }
    }
}