From 95dc7e43a23300b3eacbb7e1e0a9d4f31a8bd5a0 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Thu, 24 Apr 2025 20:12:26 +0200 Subject: adw: extract class definitions --- adw/include/adwaitamm/helpers/gobj_mixin.hpp | 32 +++++++++++++++++----------- 1 file changed, 20 insertions(+), 12 deletions(-) (limited to 'adw/include/adwaitamm/helpers') diff --git a/adw/include/adwaitamm/helpers/gobj_mixin.hpp b/adw/include/adwaitamm/helpers/gobj_mixin.hpp index fbdaa4e..762136e 100644 --- a/adw/include/adwaitamm/helpers/gobj_mixin.hpp +++ b/adw/include/adwaitamm/helpers/gobj_mixin.hpp @@ -8,27 +8,35 @@ namespace Adwaita::helpers { - template + template + struct copy_const + { + using type = TargetType; + }; + + template + struct copy_const + { + using type = std::add_const_t; + }; + + template + using copy_const_t = typename copy_const::type; + + template struct gobj_mixin { template auto gobj(this Self && self) noexcept { - using clean_type = std::remove_reference_t; - using gobj_type = std::conditional_t, std::add_const_t, Glib::Object>; - using cast_type = std::conditional_t, std::add_const_t, AdwType>; - - return reinterpret_cast(static_cast(self).gobj()); + using base_type = copy_const_t, BaseType>; + return reinterpret_cast(self.::Glib::Object::gobj()); } template - auto gobj_copy(this Self && self) noexcept -> AdwType * + auto gobj_copy(this Self && self) noexcept { - using clean_type = std::remove_reference_t; - using gobj_type = std::conditional_t, std::add_const_t, Glib::Object>; - - static_cast(self).reference(); - return const_cast(self.gobj()); + return reinterpret_cast(self.::Glib::Object::gobj_copy()); } }; -- cgit v1.2.3