#pragma once #include #include "exports.h" #include "FileDefinition.h" namespace craftlab::fakeraid { struct DiffResult { std::map> missingDirs; std::map> missingFiles; std::map> differentFiles; // fileName -> { versionId, versionId, versionId } std::vector correctFiles; std::map FileList; }; class ENGINEAPI_EXPORT FileDiff { public: FileDiff(); ~FileDiff(); DiffResult Process(const FileAndSumListByRepositoryIndex& fileList); private: typedef std::optional OptionalFileAndSum; typedef std::vector ListOfOptionalFileAndSum; typedef std::map FileVersionList; FileVersionList GroupBy(const FileAndSumListByRepositoryIndex& fileList, size_t indexCount); std::vector computeVersionIds(const ListOfOptionalFileAndSum& versions); void CheckVersions(DiffResult& output, const std::string& fileName, const ListOfOptionalFileAndSum& versions); }; }