FileSystemGCWii.h 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. // Copyright 2008 Dolphin Emulator Project
  2. // Licensed under GPLv2+
  3. // Refer to the license.txt file included.
  4. #pragma once
  5. #include <cstddef>
  6. #include <string>
  7. #include <vector>
  8. #include "Common/CommonTypes.h"
  9. #include "DiscIO/Filesystem.h"
  10. namespace DiscIO
  11. {
  12. class IVolume;
  13. class CFileSystemGCWii : public IFileSystem
  14. {
  15. public:
  16. CFileSystemGCWii(const IVolume* _rVolume);
  17. virtual ~CFileSystemGCWii();
  18. virtual bool IsValid() const override { return m_Valid; }
  19. virtual u64 GetFileSize(const std::string& _rFullPath) override;
  20. virtual const std::vector<SFileInfo>& GetFileList() override;
  21. virtual const std::string GetFileName(u64 _Address) override;
  22. virtual u64 ReadFile(const std::string& _rFullPath, u8* _pBuffer, u64 _MaxBufferSize, u64 _OffsetInFile) override;
  23. virtual bool ExportFile(const std::string& _rFullPath, const std::string&_rExportFilename) override;
  24. virtual bool ExportApploader(const std::string& _rExportFolder) const override;
  25. virtual bool ExportDOL(const std::string& _rExportFolder) const override;
  26. virtual bool GetBootDOL(u8* &buffer, u32 DolSize) const override;
  27. virtual u32 GetBootDOLSize() const override;
  28. private:
  29. bool m_Initialized;
  30. bool m_Valid;
  31. bool m_Wii;
  32. std::vector<SFileInfo> m_FileInfoVector;
  33. std::string GetStringFromOffset(u64 _Offset) const;
  34. const SFileInfo* FindFileInfo(const std::string& _rFullPath);
  35. bool DetectFileSystem();
  36. void InitFileSystem();
  37. size_t BuildFilenames(const size_t _FirstIndex, const size_t _LastIndex, const std::string& _szDirectory, u64 _NameTableOffset);
  38. u32 GetOffsetShift() const;
  39. };
  40. } // namespace