diff --git a/AK/RefCountForwarder.h b/AK/RefCountForwarder.h new file mode 100644 index 00000000000..c52360747ff --- /dev/null +++ b/AK/RefCountForwarder.h @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2021, Andreas Kling + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +namespace AK { + +template +class RefCountForwarder { +public: + void ref() { m_ref_count_target.ref(); } + void unref() { m_ref_count_target.unref(); } + + T& ref_count_target() { return m_ref_count_target; } + T const& ref_count_target() const { return m_ref_count_target; } + +protected: + RefCountForwarder(T& target) + : m_ref_count_target(target) + { + } + +private: + T& m_ref_count_target; +}; + +} + +using AK::RefCountForwarder;