DatExporter.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #ifndef LOTRO_DAT_LIBRARY_DATEXPORTER_H
  2. #define LOTRO_DAT_LIBRARY_DATEXPORTER_H
  3. #include "../DatOperationResult.h"
  4. #include "../Database.h"
  5. extern "C++" {
  6. namespace LOTRO_DAT {
  7. enum FILE_TYPE : int;
  8. /*!
  9. * \brief Модуль экспорта файлов
  10. * \author Gi1dor
  11. * \date 30.06.2018
  12. * Класс для экспорта файлов из dat контейнера. Позволяет извлекать файлы по их типам в базу данных или в папку.
  13. * Также позволяет извлекать отдельные файлы по их id.
  14. * \warning Объекты этого класса не должны создаваться отдельно! Созданием и управлением ими занимается класс DatFile
  15. */
  16. class DatExporter {
  17. public:
  18. DatExporter() = delete;
  19. DatExporter(const DatExporter &other) = delete;
  20. DatExporter &operator=(const DatExporter &other) = delete;
  21. ~DatExporter() = default;
  22. explicit DatExporter(DatFile *datFilePtr);
  23. DatOperationResult<int> ExtractAllFilesByType(const FILE_TYPE &type, std::string output_directory_path);
  24. DatOperationResult<> ExtractFileById(long long file_id, std::string output_filename);
  25. DatOperationResult<int> ExtractAllFilesByType(const FILE_TYPE &type, Database *db);
  26. DatOperationResult<> ExtractFileById(long long file_id, Database *db);
  27. private:
  28. DatOperationResult<> WriteStringToFile(const std::u16string &str, const std::string &path);
  29. DatFile *dat;
  30. };
  31. }
  32. };
  33. #endif //LOTRO_DAT_LIBRARY_DATEXPORTER_H