52 lines
995 B
C
52 lines
995 B
C
|
#pragma once
|
||
|
#include "fs/VFS.h"
|
||
|
#include <luna/Badge.h>
|
||
|
#include <luna/Vector.h>
|
||
|
|
||
|
namespace TmpFS
|
||
|
{
|
||
|
class FileSystem : public VFS::FileSystem
|
||
|
{
|
||
|
public:
|
||
|
VFS::Inode& root() const override
|
||
|
{
|
||
|
return *m_root_inode;
|
||
|
}
|
||
|
|
||
|
static Result<SharedPtr<VFS::FileSystem>> create();
|
||
|
|
||
|
virtual ~FileSystem() = default;
|
||
|
|
||
|
private:
|
||
|
FileSystem();
|
||
|
|
||
|
Result<void> set_root(SharedPtr<VFS::Inode> root);
|
||
|
|
||
|
SharedPtr<VFS::Inode> m_root_inode;
|
||
|
Vector<SharedPtr<VFS::Inode>> m_inodes;
|
||
|
};
|
||
|
|
||
|
class Inode : public VFS::Inode
|
||
|
{
|
||
|
public:
|
||
|
Inode();
|
||
|
|
||
|
void set_fs(FileSystem& fs, Badge<FileSystem>);
|
||
|
|
||
|
Result<VFS::Inode*> find(const char*) const override
|
||
|
{
|
||
|
return err(ENOTSUP);
|
||
|
}
|
||
|
|
||
|
VFS::FileSystem& fs() const override
|
||
|
{
|
||
|
return *m_fs;
|
||
|
}
|
||
|
|
||
|
virtual ~Inode() = default;
|
||
|
|
||
|
private:
|
||
|
VFS::FileSystem* m_fs;
|
||
|
};
|
||
|
}
|