Serenity Operating System
1/*
2 * Copyright (c) 2021, Liav A. <liavalb@hotmail.co.il>
3 *
4 * SPDX-License-Identifier: BSD-2-Clause
5 */
6
7#pragma once
8
9#include <Kernel/FileSystem/SysFS/Inode.h>
10
11namespace Kernel {
12
13class SysFSDirectoryInode : public SysFSInode {
14 friend class SysFS;
15
16public:
17 static ErrorOr<NonnullRefPtr<SysFSDirectoryInode>> try_create(SysFS const&, SysFSComponent const&);
18 virtual ~SysFSDirectoryInode() override;
19
20 SysFS& fs() { return static_cast<SysFS&>(Inode::fs()); }
21 SysFS const& fs() const { return static_cast<SysFS const&>(Inode::fs()); }
22
23protected:
24 SysFSDirectoryInode(SysFS const&, SysFSComponent const&);
25 // ^Inode
26 virtual InodeMetadata metadata() const override;
27 virtual ErrorOr<void> traverse_as_directory(Function<ErrorOr<void>(FileSystem::DirectoryEntryView const&)>) const override;
28 virtual ErrorOr<NonnullRefPtr<Inode>> lookup(StringView name) override;
29};
30
31}