BehaviacFileManager.hpp 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  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. };
  22. class BEHAVIAC_API CCBehaviacFile : public behaviac::IFile
  23. {
  24. public:
  25. BEHAVIAC_DECLARE_MEMORY_OPERATORS(CCBehaviacFile);
  26. BEHAVIAC_DECLARE_DYNAMIC_TYPE(CCBehaviacFile, IFile);
  27. public:
  28. CCBehaviacFile(const char* filePath, uint32_t size, const uint8_t* data);
  29. ~CCBehaviacFile();
  30. virtual uint32_t Read(void* pBuffer, uint32_t numberOfBytesToRead) override;
  31. virtual uint32_t Write(const void* pBuffer, uint32_t numberOfBytesToWrite) override;
  32. virtual int64_t Seek(int64_t distanceToMove, behaviac::CFileSystem::ESeekMode moveMethod) override;
  33. virtual uint64_t GetSize() override;
  34. private:
  35. std::string _filePath;
  36. std::vector<uint8_t> _buffer;
  37. uint32_t _bufferSize = 0;
  38. uint32_t _currentPosition = 0;
  39. };
  40. };
  41. #endif /* BehaviacFileManager_hpp */