#pragma once #include #include "FileDefinition.h" #include "exports.h" namespace craftlab::fakeraid { class IEngine { public: virtual ~IEngine() {}; virtual void DirExistsOrThrow() const =0; virtual std::vector GetRootPaths() const = 0; virtual std::vector GetPaths() const = 0; virtual std::deque GetCurrentDir() const =0; virtual FileAndSumListByRepositoryIndex ListFiles() =0; virtual void Cd(const std::string& dirName) =0; }; class EngineManager { public: EngineManager() =delete; ENGINEAPI_EXPORT static IEngine* Open(const std::vector& paths); }; }