BehaviacFileManager.hpp 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. //
  2. // BehaviacFileManager.hpp
  3. // redream_runtime_mac
  4. //
  5. // Created by zhu on 2023/2/14.
  6. //
  7. #ifndef BehaviacFileManager_hpp
  8. #define BehaviacFileManager_hpp
  9. #include "behaviac/common/file/filemanager.h"
  10. namespace behaviac {
  11. class BEHAVIAC_API BehaviacFileManager : public behaviac::CFileManager
  12. {
  13. public:
  14. BEHAVIAC_DECLARE_MEMORY_OPERATORS(BehaviacFileManager);
  15. BehaviacFileManager();
  16. virtual ~BehaviacFileManager();
  17. virtual behaviac::IFile* FileOpen(const char* fileName, behaviac::CFileSystem::EOpenMode iOpenAccess = behaviac::CFileSystem::EOpenMode_Read);
  18. virtual void FileClose(behaviac::IFile* file);
  19. virtual bool FileExists(const char* fileName);
  20. virtual uint64_t FileGetSize(const char* fileName);
  21. void setRootPath(std::string path);
  22. private:
  23. std::string _rootPath;
  24. };
  25. class BEHAVIAC_API CCBehaviacFile : public behaviac::IFile
  26. {
  27. public:
  28. BEHAVIAC_DECLARE_MEMORY_OPERATORS(CCBehaviacFile);
  29. BEHAVIAC_DECLARE_DYNAMIC_TYPE(CCBehaviacFile, IFile);
  30. public:
  31. CCBehaviacFile(const char* filePath, uint32_t size, const uint8_t* data);
  32. ~CCBehaviacFile();
  33. virtual uint32_t Read(void* pBuffer, uint32_t numberOfBytesToRead) override;
  34. virtual uint32_t Write(const void* pBuffer, uint32_t numberOfBytesToWrite) override;
  35. virtual int64_t Seek(int64_t distanceToMove, behaviac::CFileSystem::ESeekMode moveMethod) override;
  36. virtual uint64_t GetSize() override;
  37. private:
  38. std::string _filePath;
  39. std::vector<uint8_t> _buffer;
  40. uint32_t _bufferSize = 0;
  41. uint32_t _currentPosition = 0;
  42. };
  43. };
  44. #endif /* BehaviacFileManager_hpp */