diff --git a/inc/kernel/filesystem/filesystem.h b/inc/kernel/filesystem/filesystem.h new file mode 100644 index 0000000..c43547e --- /dev/null +++ b/inc/kernel/filesystem/filesystem.h @@ -0,0 +1,33 @@ +#pragma once +#include +#include +#include + +/************************ + *** Team Kitty, 2021 *** + *** Chroma *** + ***********************/ + +/** + * @brief Abstract base class for filesystem implementations. + * ! Do not instantiate! + */ + +class FileSystem { +public: + virtual void Init(size_t Sector, size_t Size) = 0; + virtual const char* GetName() = 0; + + /*********** File Manipulation***********/ + virtual size_t GetFileSize(const char* FilePath) = 0; + virtual bool FileExists(const char* FilePath) = 0; + + virtual uint8_t* Read(const char* FilePath) = 0; + virtual size_t ReadIntoBuffer(const char* FilePath, size_t Offset, size_t Length, uint8_t* Target) = 0; + + virtual size_t Write(const char* FilePath, uint8_t* Data) = 0; + virtual size_t WriteFromBuffer(const char* FilePath, size_t Offset, size_t Length, uint8_t* Buffer) = 0; + +private: + ticketlock_t Lock; +}; \ No newline at end of file