/* * Copyright (c) 2020, Andreas Kling * Copyright (c) 2022, the SerenityOS developers. * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include namespace IPC { class Dictionary { public: Dictionary() = default; Dictionary(HashMap const& initial_entries) : m_entries(initial_entries) { } bool is_empty() const { return m_entries.is_empty(); } size_t size() const { return m_entries.size(); } void add(DeprecatedString key, DeprecatedString value) { m_entries.set(move(key), move(value)); } template void for_each_entry(Callback callback) const { for (auto& it : m_entries) { callback(it.key, it.value); } } template Callback> ErrorOr try_for_each_entry(Callback&& callback) const { for (auto const& it : m_entries) TRY(callback(it.key, it.value)); return {}; } HashMap const& entries() const { return m_entries; } private: HashMap m_entries; }; }