// // Created by kikab on 04.06.2018. // #ifndef LOTRO_DAT_LIBRARY_DATFILESYSTEM_H #define LOTRO_DAT_LIBRARY_DATFILESYSTEM_H #include #include #include #include #include "DatOperationResult.h" extern "C++" { namespace LOTRO_DAT { class DatFile; class BinaryData; class SubFile; class DatFileSystem { public: DatFileSystem() = delete; DatFileSystem(const DatFileSystem &other) = delete; DatFileSystem& operator=(const DatFileSystem &other) = delete; ~DatFileSystem() = default; explicit DatFileSystem(DatFile *datFilePtr); DatOperationResult<> Init(); DatOperationResult GetFileData(long long file_id, long long int offset); DatOperationResult GetFile(long long file_id); DatOperationResult<> UpdateFile(const SubFile& file); DatOperationResult<> DeInit(); private: //------------------------------------------------// // PRIVATE INIT SECTION //------------------------------------------------// DatOperationResult<> MakeDirectories(); DatOperationResult<> MakeDictionary(); //------------------------------------------------// // PRIVATE DEINIT SECTION //------------------------------------------------// DatOperationResult<> CommitDirectories(); private: DatFile *dat; std::set subfile_pending_update; std::map > dictionary_; }; } }; #endif //LOTRO_DAT_LIBRARY_DATFILESYSTEM_H