From 324f29df407b86eff3b22480a7124b5766a061a8 Mon Sep 17 00:00:00 2001 From: "Ralf W. Grosse-Kunstleve" Date: Tue, 18 Feb 2025 20:06:46 -0800 Subject: [PATCH] Remove all uses of PYBIND11_SMART_HOLDER_ENABLED under include/pybind11 --- include/pybind11/cast.h | 16 +++------------- include/pybind11/detail/init.h | 4 ---- include/pybind11/detail/type_caster_base.h | 6 ------ include/pybind11/detail/using_smart_holder.h | 13 +------------ include/pybind11/pybind11.h | 16 +--------------- include/pybind11/trampoline_self_life_support.h | 12 +++--------- 6 files changed, 8 insertions(+), 59 deletions(-) diff --git a/include/pybind11/cast.h b/include/pybind11/cast.h index 9ab547b6f..09c262afa 100644 --- a/include/pybind11/cast.h +++ b/include/pybind11/cast.h @@ -836,8 +836,6 @@ protected: holder_type holder; }; -#ifdef PYBIND11_SMART_HOLDER_ENABLED - template struct copyable_holder_caster_shared_ptr_with_smart_holder_support_enabled : std::true_type {}; @@ -928,13 +926,13 @@ protected: return; } throw cast_error("Unable to cast from non-held to held instance (T& to Holder) " -# if !defined(PYBIND11_DETAILED_ERROR_MESSAGES) +#if !defined(PYBIND11_DETAILED_ERROR_MESSAGES) "(#define PYBIND11_DETAILED_ERROR_MESSAGES or compile in debug mode for " "type information)"); -# else +#else "of type '" + type_id>() + "''"); -# endif +#endif } template , @@ -968,8 +966,6 @@ protected: std::shared_ptr shared_ptr_storage; }; -#endif // PYBIND11_SMART_HOLDER_ENABLED - /// Specialize for the common std::shared_ptr, so users don't need to template class type_caster> : public copyable_holder_caster> {}; @@ -990,8 +986,6 @@ struct move_only_holder_caster { static constexpr auto name = type_caster_base::name; }; -#ifdef PYBIND11_SMART_HOLDER_ENABLED - template struct move_only_holder_caster_unique_ptr_with_smart_holder_support_enabled : std::true_type {}; @@ -1129,8 +1123,6 @@ public: std::shared_ptr> unique_ptr_storage; }; -#endif // PYBIND11_SMART_HOLDER_ENABLED - template class type_caster> : public move_only_holder_caster> {}; @@ -1169,10 +1161,8 @@ struct is_holder_type template struct is_holder_type> : std::true_type {}; -#ifdef PYBIND11_SMART_HOLDER_ENABLED template struct is_holder_type : std::true_type {}; -#endif #ifdef PYBIND11_DISABLE_HANDLE_TYPE_NAME_DEFAULT_IMPLEMENTATION // See PR #4888 diff --git a/include/pybind11/detail/init.h b/include/pybind11/detail/init.h index 8fba2f8e7..ed95afe58 100644 --- a/include/pybind11/detail/init.h +++ b/include/pybind11/detail/init.h @@ -198,8 +198,6 @@ void construct(value_and_holder &v_h, Alias &&result, bool) { v_h.value_ptr() = new Alias(std::move(result)); } -#ifdef PYBIND11_SMART_HOLDER_ENABLED - template smart_holder init_smart_holder_from_unique_ptr(std::unique_ptr &&unq_ptr, bool void_cast_raw_ptr) { @@ -268,8 +266,6 @@ void construct(value_and_holder &v_h, v_h.type->init_instance(v_h.inst, &smhldr); } -#endif // PYBIND11_SMART_HOLDER_ENABLED - // Implementing class for py::init<...>() template struct constructor { diff --git a/include/pybind11/detail/type_caster_base.h b/include/pybind11/detail/type_caster_base.h index 097d176f6..9618b2181 100644 --- a/include/pybind11/detail/type_caster_base.h +++ b/include/pybind11/detail/type_caster_base.h @@ -511,8 +511,6 @@ inline PyThreadState *get_thread_state_unchecked() { void keep_alive_impl(handle nurse, handle patient); inline PyObject *make_new_instance(PyTypeObject *type); -#ifdef PYBIND11_SMART_HOLDER_ENABLED - // PYBIND11:REMINDER: Needs refactoring of existing pybind11 code. inline bool deregister_instance(instance *self, void *valptr, const type_info *tinfo); @@ -868,8 +866,6 @@ struct load_helper : value_and_holder_helper { PYBIND11_NAMESPACE_END(smart_holder_type_caster_support) -#endif // PYBIND11_SMART_HOLDER_ENABLED - class type_caster_generic { public: PYBIND11_NOINLINE explicit type_caster_generic(const std::type_info &type_info) @@ -974,7 +970,6 @@ public: // Base methods for generic caster; there are overridden in copyable_holder_caster void load_value(value_and_holder &&v_h) { -#ifdef PYBIND11_SMART_HOLDER_ENABLED if (typeinfo->holder_enum_v == detail::holder_enum_t::smart_holder) { smart_holder_type_caster_support::value_and_holder_helper v_h_helper; v_h_helper.loaded_v_h = v_h; @@ -984,7 +979,6 @@ public: return; } } -#endif auto *&vptr = v_h.value_ptr(); // Lazy allocation for unallocated values: if (vptr == nullptr) { diff --git a/include/pybind11/detail/using_smart_holder.h b/include/pybind11/detail/using_smart_holder.h index b2d2606af..57f99b95f 100644 --- a/include/pybind11/detail/using_smart_holder.h +++ b/include/pybind11/detail/using_smart_holder.h @@ -5,29 +5,18 @@ #pragma once #include "common.h" -#include "internals.h" +#include "struct_smart_holder.h" #include -#ifdef PYBIND11_SMART_HOLDER_ENABLED -# include "struct_smart_holder.h" -#endif - PYBIND11_NAMESPACE_BEGIN(PYBIND11_NAMESPACE) -#ifdef PYBIND11_SMART_HOLDER_ENABLED using pybindit::memory::smart_holder; -#endif PYBIND11_NAMESPACE_BEGIN(detail) -#ifdef PYBIND11_SMART_HOLDER_ENABLED template using is_smart_holder = std::is_same; -#else -template -struct is_smart_holder : std::false_type {}; -#endif PYBIND11_NAMESPACE_END(detail) PYBIND11_NAMESPACE_END(PYBIND11_NAMESPACE) diff --git a/include/pybind11/pybind11.h b/include/pybind11/pybind11.h index dfbcbcf0f..9d1af4622 100644 --- a/include/pybind11/pybind11.h +++ b/include/pybind11/pybind11.h @@ -1663,8 +1663,6 @@ PYBIND11_NAMESPACE_END(detail) template struct property_cpp_function : detail::property_cpp_function_classic {}; -#ifdef PYBIND11_SMART_HOLDER_ENABLED - PYBIND11_NAMESPACE_BEGIN(detail) template @@ -1842,9 +1840,7 @@ struct property_cpp_function< detail::both_t_and_d_use_type_caster_base>::value>> : detail::property_cpp_function_sh_unique_ptr_member {}; -#endif // PYBIND11_SMART_HOLDER_ENABLED - -#if defined(PYBIND11_USE_SMART_HOLDER_AS_DEFAULT) && defined(PYBIND11_SMART_HOLDER_ENABLED) +#if defined(PYBIND11_USE_SMART_HOLDER_AS_DEFAULT) // NOTE: THIS IS MEANT FOR STRESS-TESTING ONLY! // As of PR #5257, for production use, there is no longer a strong reason to make // smart_holder the default holder: @@ -1911,7 +1907,6 @@ public: // A more fitting name would be uses_unique_ptr_holder. record.default_holder = detail::is_instantiation::value; -#ifdef PYBIND11_SMART_HOLDER_ENABLED if (detail::is_instantiation::value) { record.holder_enum_v = detail::holder_enum_t::std_unique_ptr; } else if (detail::is_instantiation::value) { @@ -1921,7 +1916,6 @@ public: } else { record.holder_enum_v = detail::holder_enum_t::custom_holder; } -#endif set_operator_new(&record); @@ -2263,8 +2257,6 @@ private: init_holder(inst, v_h, (const holder_type *) holder_ptr, v_h.value_ptr()); } -#ifdef PYBIND11_SMART_HOLDER_ENABLED - template static bool try_initialization_using_shared_from_this(holder_type *, WrappedType *, ...) { return false; @@ -2324,8 +2316,6 @@ private: v_h.set_holder_constructed(); } -#endif // PYBIND11_SMART_HOLDER_ENABLED - // Deallocates an instance; via holder, if constructed; otherwise via operator delete. // NOTE: The Python error indicator needs to cleared BEFORE this function is called. // This is because we could be deallocating while cleaning up after a Python exception. @@ -2391,8 +2381,6 @@ private: } }; -#ifdef PYBIND11_SMART_HOLDER_ENABLED - // Supports easier switching between py::class_ and py::class_: // users can simply replace the `_` in `class_` with `h` or vice versa. template @@ -2401,8 +2389,6 @@ public: using class_::class_; }; -#endif - /// Binds an existing constructor taking arguments Args... template detail::initimpl::constructor init() { diff --git a/include/pybind11/trampoline_self_life_support.h b/include/pybind11/trampoline_self_life_support.h index d988e75a3..484045bb1 100644 --- a/include/pybind11/trampoline_self_life_support.h +++ b/include/pybind11/trampoline_self_life_support.h @@ -4,13 +4,9 @@ #pragma once -#include "detail/internals.h" - -#ifdef PYBIND11_SMART_HOLDER_ENABLED - -# include "detail/common.h" -# include "detail/using_smart_holder.h" -# include "detail/value_and_holder.h" +#include "detail/common.h" +#include "detail/using_smart_holder.h" +#include "detail/value_and_holder.h" PYBIND11_NAMESPACE_BEGIN(PYBIND11_NAMESPACE) @@ -62,5 +58,3 @@ struct trampoline_self_life_support { }; PYBIND11_NAMESPACE_END(PYBIND11_NAMESPACE) - -#endif // PYBIND11_SMART_HOLDER_ENABLED