#pragma once #include "fs/VFS.h" #include #include namespace TmpFS { class FileSystem : public VFS::FileSystem { public: VFS::Inode& root_inode() const override { return *m_root_inode; } Result> create_file_inode() override; static Result> create(); virtual ~FileSystem() = default; private: FileSystem() = default; void set_root(SharedPtr root); SharedPtr m_root_inode; Vector> m_inodes; usize m_next_inode_number { 2 }; }; class Inode : public VFS::FileInode { public: Inode() = default; void set_fs(FileSystem& fs, Badge) { m_fs = &fs; } void set_inode_number(usize inum, Badge) { m_inode_number = inum; } VFS::FileSystem& fs() const override { return *m_fs; } usize inode_number() const override { return m_inode_number; } virtual ~Inode() = default; private: VFS::FileSystem* m_fs; usize m_inode_number; }; }