#pragma once #include "fs/VFS.h" namespace TmpFSImpl { ssize_t read(VFS::Node* node, size_t offset, size_t size, char* buffer); ssize_t write(VFS::Node* node, size_t offset, size_t size, char* buffer); } class TmpFS { public: VFS::Node* root() { return m_root; } static TmpFS* create(const char* name); static void release(TmpFS* fs); ssize_t read(VFS::Node* node, size_t offset, size_t size, char* buffer); ssize_t write(VFS::Node* node, size_t offset, size_t size, char* buffer); void purge(); private: struct File { char* buf; size_t len; int valid; }; struct Directory { VFS::Node* buf; size_t len; int valid; }; template struct Array { T* buf; size_t len; }; TmpFS(const char* name); Array m_files; Array m_dirs; VFS::Node* m_root; };