1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- #ifndef LOTRO_DAT_LIBRARY_DATFILEIO_H
- #define LOTRO_DAT_LIBRARY_DATFILEIO_H
- #include <fstream>
- #include <map>
- #include <unordered_map>
- #include <set>
- #include <vector>
- #include <yaml-cpp/node/node.h>
- #include <unordered_set>
- namespace LOTRO_DAT {
- class BinaryData;
- class DatFile;
- class DatOperationResult;
- class SubDirectory;
- class SubFile;
- class DatFileIO {
- public:
- DatFileIO() = delete;
- DatFileIO(const DatFileIO &other) = delete;
- explicit DatFileIO(DatFile &dat_ref);
- DatOperationResult Init(const std::string &filename);
- DatOperationResult
- ReadData(BinaryData &data, long long size, long long offset = 0, long long data_offset = 0) const;
- DatOperationResult
- WriteData(const BinaryData &data, long long size, long long offset = 0, long long data_offset = 0);
- std::shared_ptr<SubDirectory> GetRootDirectory();
- long long GetActualDatSize();
- DatOperationResult DeInit();
- private:
-
-
-
- DatOperationResult OpenDatFile();
- DatOperationResult ReadSuperBlock();
- DatOperationResult MakeDirectories();
-
-
-
- DatOperationResult ModifyFragmentationJournal();
- DatOperationResult UpdateHeader();
- private:
- DatFile &dat_file_ref;
- FILE *file_handler_;
- std::string filename_;
- std::shared_ptr<SubDirectory> root_directory_;
- public:
- long long constant1;
- long long constant2;
- long long file_size;
- long long version1;
- long long version2;
- long long fragmentation_journal_size;
- long long fragmentation_journal_end;
- long long root_directory_offset;
- long long fragmentation_journal_offset;
- long long free_dat_size;
- private:
- long long actual_dat_size_;
- };
- };
- #endif
|