#ifndef TURNS_ADW_HELPERS_GOBJ_CAST_HPP #define TURNS_ADW_HELPERS_GOBJ_CAST_HPP #include #include namespace turns::adw::helpers { 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()); } template auto gobj_copy(this Self && self) noexcept -> AdwType * { using clean_type = std::remove_reference_t; using gobj_type = std::conditional_t, std::add_const_t, Glib::Object>; static_cast(self).reference(); return self.gobj(); } }; } // namespace turns::adw::helpers #endif