Commit Graph

2246 Commits

Author SHA1 Message Date
Ralf W. Grosse-Kunstleve 1a0c65f753 Simplifying from_unique_ptr(): typename D = std::default_delete<T> is not needed. Factoring out is_std_default_delete<T>() for consistentcy between ensure_compatible_rtti_uqp_del() and from_unique_ptr(). 2021-02-09 06:47:45 -08:00
Ralf W. Grosse-Kunstleve 9c95dc4d8f Factoring out struct and class definitions into anonymous namespace. Preparation for building with PYBIND11_USE_SMART_HOLDER_AS_DEFAULT. 2021-02-09 06:47:45 -08:00
Ralf W. Grosse-Kunstleve 3134dfe779 Disabling shared_ptr&, shared_ptr* tests when building with PYBIND11_USE_SMART_HOLDER_AS_DEFAULT for now, pending work on smart_holder_type_caster<shared_ptr>. 2021-02-09 06:47:45 -08:00
Ralf W. Grosse-Kunstleve 70eb4ea6e9 Adding enable_if !is_smart_holder_type_caster to existing initimpl::construct(). With this test_factory_constructors.cpp builds with PYBIND11_USE_SMART_HOLDER_AS_DEFAULT. 2021-02-09 06:47:45 -08:00
Ralf W. Grosse-Kunstleve 8caf0f50df Adding initimpl::construct() overloads, resulting in test_class_sh_factory_constructors feature parity for py::class_ and py::classh. 2021-02-09 06:47:45 -08:00
Ralf W. Grosse-Kunstleve b69b4a9f55 Converting as many py::class_ to py::classh as possible, not breaking tests. 2021-02-09 06:47:45 -08:00
Ralf W. Grosse-Kunstleve 0228080a86 Adding // DANGER ZONE reminders. 2021-02-09 06:47:45 -08:00
Ralf W. Grosse-Kunstleve 1e4f0fdcaf Removing include/pybind11/detail/smart_holder_type_casters.h from CMakeLists.txt, test_files.py (since it does not exist in this branch). 2021-02-09 06:47:45 -08:00
Ralf W. Grosse-Kunstleve 3f5a9c9bf4 Adding test_class_sh_factory_constructors, reproducing test_factory_constructors failure. Using py::class_ in this commit, to be changed to py::classh for debugging. 2021-02-09 06:47:45 -08:00
Ralf W. Grosse-Kunstleve 6349531306 Commenting out const in def_buffer(... const). With this, test_buffers builds and runs with PYBIND11_USE_SMART_HOLDER_AS_DEFAULT. Explanation why the const needs to be removed, or fix elsewhere, is still needed, but left for later. 2021-02-09 06:47:45 -08:00
Ralf W. Grosse-Kunstleve 63abf87244 Removing detail/smart_holder_type_casters.h in separate commit. 2021-02-09 06:47:45 -08:00
Ralf W. Grosse-Kunstleve c8eb29c8f5 Fixing up cast.h and smart_holder.h after rebase. 2021-02-09 06:47:45 -08:00
Ralf W. Grosse-Kunstleve b9eb2a46c4 Setting record.default_holder correctly for PYBIND11_USE_SMART_HOLDER_AS_DEFAULT.
With this test_class.cpp builds and even mostly runs, except
`test_multiple_instances_with_same_pointer`, which segfaults because it is
using a `unique_ptr` holder but `smart_holder` `type_caster`.

Also adding `static_assert`s to generate build errors for such situations,
but guarding with `#if 0` to first pivot to test_factory_constructors.cpp.
2021-02-09 06:47:44 -08:00
Ralf W. Grosse-Kunstleve f373e3d619 Fixing oversight introduced with commit 95425f13d6. 2021-02-09 06:47:44 -08:00
Ralf W. Grosse-Kunstleve b69f9fed33 Removing test_type_caster_bare_interface, which was moved to the separate PR #2834. 2021-02-09 06:47:44 -08:00
Ralf W. Grosse-Kunstleve ce79f9126d Introducing PYBIND11_USE_SMART_HOLDER_AS_DEFAULT macro (tested only undefined; there are many errors with the macro defined). 2021-02-09 06:47:44 -08:00
Ralf W. Grosse-Kunstleve 0f316720f7 Adding comment, simplifying naming, cmake addition. 2021-02-09 06:47:44 -08:00
Ralf W. Grosse-Kunstleve 0dfd3a6b7d Copying files as-is from branch test_unique_ptr_member (PR #2672). 2021-02-09 06:47:44 -08:00
Ralf W. Grosse-Kunstleve 72f52be256 Unification of unique_ptr, unique_ptr_with_deleter code in smart_holder_poc.h. Leads to more fitting error messages. Enables use of unique_ptr<T, D> smart_holder_type_casters also for unique_ptr<T>. 2021-02-09 06:47:08 -08:00
Ralf W. Grosse-Kunstleve a9bfcbdcc3 Adding smart_holder_type_casters for unique_ptr with custom deleter. SEVERE CODE DUPLICATION. This commit is to establish a baseline for consolidating the unique_ptr code. 2021-02-09 06:47:08 -08:00
Ralf W. Grosse-Kunstleve 231bd84fa0 Moving up is_smart_holder_type_caster, to also use in cast_is_temporary_value_reference. 2021-02-09 06:47:08 -08:00
Ralf W. Grosse-Kunstleve 692270a017 Removing test_type_caster_bare_interface, which was moved to the separate PR #2834. 2021-02-09 06:47:08 -08:00
Ralf W. Grosse-Kunstleve c9d73aaa43 Giving up on idea to use legacy init_instance only if is_base_of<type_caster_generic, type_caster<T>. There are use cases in the wild that define both a custom type_caster and class_. 2021-02-09 06:47:08 -08:00
Ralf W. Grosse-Kunstleve 149e332b3e Adding classu alias for class_<U, std::unique_ptr<U>>. 2021-02-09 06:47:08 -08:00
Ralf W. Grosse-Kunstleve 1e4c2e04ae Fixing oversight. 2021-02-09 06:47:08 -08:00
Ralf W. Grosse-Kunstleve 742bc0eaf7 Replacing detail::is_smart_holder<H> in cast.h with detail::is_smart_holder_type_caster<T>.
Moving get_local_load_function_ptr, init_instance_for_type to smart_holder_type_caster_class_hooks.
Expanding static_assert in py::type::handle_of<> to accommodate smart_holder_type_casters.
2021-02-09 06:47:08 -08:00
Ralf W. Grosse-Kunstleve 87acc89b21 Reintroducing py::classh, this time as a simple alias for py::class_<U, py::smart_holder>. 2021-02-09 06:47:08 -08:00
Ralf W. Grosse-Kunstleve 4a4087fdd5 Moving define PYBIND11_SMART_HOLDER_TYPE_CASTERS(T) down in the file. NO functional changes. Preparation for follow-up work (to keep that diff smaller). 2021-02-09 06:47:08 -08:00
Ralf W. Grosse-Kunstleve d5b591d7f8 Making use of the new find_existing_python_instance() function factored out with PR #2822. 2021-02-09 06:47:08 -08:00
Ralf W. Grosse-Kunstleve c749d9b7fc Adding tests/pure_cpp/CMakeLists.txt. 2021-02-09 06:47:08 -08:00
Ralf W. Grosse-Kunstleve d91f2190ee Adding new header files to tests/extra_python_package/test_files.py. 2021-02-09 06:47:08 -08:00
Ralf W. Grosse-Kunstleve 9077bcd1fc Explicitly define copy/move constructors/assignments. 2021-02-09 06:47:08 -08:00
Ralf W. Grosse-Kunstleve 63fe989148 Adding copyright notices to new header files. 2021-02-09 06:47:08 -08:00
Ralf W. Grosse-Kunstleve a15797d50e CMake COMPARE NATURAL is not available with older versions. 2021-02-09 06:47:08 -08:00
Ralf W. Grosse-Kunstleve 94eeb34b01 Reusing type_caster_base make_copy_constructor, make_move_constructor with a trick. 2021-02-09 06:47:08 -08:00
Ralf W. Grosse-Kunstleve 56a71520b5 32-bit compatibility. 2021-02-09 06:47:08 -08:00
Ralf W. Grosse-Kunstleve eac5b49fe1 clang-tidy fixes. 2021-02-09 06:47:08 -08:00
Ralf W. Grosse-Kunstleve f19e80881c Changing CMake file so that test_class_sh_module_local.py actually runs. 2021-02-09 06:47:07 -08:00
Ralf W. Grosse-Kunstleve 505cd35c2b Adding new tests to CMake config, resetting CI config. 2021-02-09 06:47:07 -08:00
Ralf W. Grosse-Kunstleve e1ac502890 Renaming new tests/core subdirectory to tests/pure_cpp. 2021-02-09 06:47:07 -08:00
Ralf W. Grosse-Kunstleve ef8a13c280 Renaming test_type_caster_bare_interface_demo to test_type_caster_bare_interface. 2021-02-09 06:47:07 -08:00
Ralf W. Grosse-Kunstleve edfe8bfd71 Systematically renaming tests to use "class_sh" in the name. 2021-02-09 06:47:07 -08:00
Ralf W. Grosse-Kunstleve bda4178163 Renaming all "classh" to "smart_holder" in pybind11/detail/smart_holder_type_casters.h.
The user-facing macro is now PYBIND11_SMART_HOLDER_TYPE_CASTERS.
2021-02-09 06:47:07 -08:00
Ralf W. Grosse-Kunstleve e96c06e61a Renaming files in include directory, creating pybind11/smart_holder.h. 2021-02-09 06:47:07 -08:00
Ralf W. Grosse-Kunstleve 661eeb381c Adding py::smart_holder support to py::class_, purging py::classh completely. 2021-02-09 06:47:07 -08:00
Ralf W. Grosse-Kunstleve 23dc9b173c Moving several tests to github.com/rwgk/rwgk_tbx/tree/main/pybind11_tests
a2c2f88174

These tests are from experimenting, and for demonstrating UB in pybind11 multiple inheritance handling ("first_base"), to be fixed later.
2021-02-09 06:47:07 -08:00
Ralf W. Grosse-Kunstleve 2d463aa3b6 Purging obsolete pybind11/vptr_holder.h and associated test. 2021-02-09 06:47:07 -08:00
Ralf W. Grosse-Kunstleve d659a1411b Removing debugging comments (GET_STACK, GET_INT_STACK). cast.h is identical to current master again, pybind11.h only has the generic_type::initialize(..., &type_caster_generic::local_load) change. 2021-02-09 06:47:07 -08:00
Ralf W. Grosse-Kunstleve c9cb661fe3 Converting test_unique_ptr_member to using classh: fully working, ASAN, MSAN, UBSAN clean. 2021-02-09 06:47:07 -08:00
Ralf W. Grosse-Kunstleve 3d17f6f6a1 Using unique_ptr in local_load to replace static variable. Also adding local_load_safety_guard. 2021-02-09 06:47:07 -08:00