/* * Copyright (c) 2024, Liav A. * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include #include #include #include #include #include namespace Kernel { class FileSystemSpecificOption { public: static ErrorOr> create_as_unsigned(unsigned); static ErrorOr> create_as_signed(signed); static ErrorOr> create_as_boolean(bool); Variant const& property_value() const { return m_value; } private: explicit FileSystemSpecificOption(unsigned); explicit FileSystemSpecificOption(signed); explicit FileSystemSpecificOption(bool); Variant const m_value; }; // NOTE: It's OK to use a StringView as a key because we are storing the actual string // in the FileSystemSpecificOption object. using FileSystemSpecificOptions = HashMap, NonnullOwnPtr>; Optional parse_unsigned_filesystem_specific_option(FileSystemSpecificOptions const&, StringView name); Optional parse_signed_filesystem_specific_option(FileSystemSpecificOptions const&, StringView name); Optional parse_bool_filesystem_specific_option(FileSystemSpecificOptions const&, StringView name); ErrorOr> parse_string_filesystem_specific_option(FileSystemSpecificOptions const&, StringView name); }