Commit Graph

2246 Commits

Author SHA1 Message Date
Ralf W. Grosse-Kunstleve 631a288d69 Folding convert_type into lvalue_ref and rvalue_ref paths. Some smart_holder_type_caster_load cleanup. 2021-02-09 06:47:07 -08:00
Ralf W. Grosse-Kunstleve e7325dfc26 Factoring out convert_type and folding into loaded_as_unique_ptr. 2021-02-09 06:47:07 -08:00
Ralf W. Grosse-Kunstleve db9af62ad8 Cleaning up loaded_as_raw_ptr_unowned, loaded_as_shared_ptr. 2021-02-09 06:47:07 -08:00
Ralf W. Grosse-Kunstleve c30cc404c9 Removing rtti_held from smart_holder. See updated comment. 2021-02-09 06:47:07 -08:00
Ralf W. Grosse-Kunstleve 0f82a0b014 Adding smart_holder_type_caster_load::loaded_as_shared_ptr, currently bypassing smart_holder shared_ptr tracking completely, but the tests pass and are sanitizer clean. 2021-02-09 06:47:07 -08:00
Ralf W. Grosse-Kunstleve 11690b0b91 Moving const after type name, for functions that cover a systematic scheme. NO functional changes. 2021-02-09 06:47:07 -08:00
Ralf W. Grosse-Kunstleve de945f854a Adopting systematic naming scheme from test_classh_wip. NO functional changes. 2021-02-09 06:47:07 -08:00
Ralf W. Grosse-Kunstleve 235fa288b8 Pure renaming of function and variable names, for better generalization when convoluting with inheritance. NO functional changes. 2021-02-09 06:47:07 -08:00
Ralf W. Grosse-Kunstleve 54fa191f20 Pure renaming of function names in test_classh_inheritance, similar to the systematic approach used in test_class_wip. NO functional changes. 2021-02-09 06:47:07 -08:00
Ralf W. Grosse-Kunstleve cbebb6da1f Tests for classh py::module_local() feature. 2021-02-09 06:47:07 -08:00
Ralf W. Grosse-Kunstleve 5608b71e09 Removing stray isinstance<T>(src): it interferes with the py::module_local feature. Adding missing #includes. 2021-02-09 06:47:07 -08:00
Ralf W. Grosse-Kunstleve c362b91a80 Minimal test covering classh_type_casters load_impl Case 2b. 2021-02-09 06:47:07 -08:00
Ralf W. Grosse-Kunstleve 82f619bdb2 Changes and tests covering classh_type_casters try_implicit_casts. 2021-02-09 06:47:06 -08:00
Ralf W. Grosse-Kunstleve 3d4bf091f3 Decoupling generic_type from type_caster_generic. 2021-02-09 06:47:06 -08:00
Ralf W. Grosse-Kunstleve e345db05bd First pass adjusting try_implicit_casts and try_load_foreign_module_local to capture loaded_v_h, but untested and guarded with pybind11_failure("Untested"). This was done mainly to determine general feasibility. Note the TODO in pybind11.h, where type_caster_generic::local_load is currently hard-coded. test_classh_wip and test_classh_inheritance still pass, as before. 2021-02-09 06:47:06 -08:00
Ralf W. Grosse-Kunstleve 383f7e9b84 Minimal changes needed to pass test_classh_inheritance. 2021-02-09 06:47:06 -08:00
Ralf W. Grosse-Kunstleve dc537a0013 Folding in modified_type_caster_generic_load_impl, just enough to pass test_class_wip. test_classh_inheritance is still failing, but with a different error: [RuntimeError: Incompatible type (as_raw_ptr_unowned).] 2021-02-09 06:47:06 -08:00
Ralf W. Grosse-Kunstleve b568b354b7 Bringing back .clang-format, the previous rm was a bad idea. 2021-02-09 06:47:06 -08:00
Ralf W. Grosse-Kunstleve 61327a17bc Removing .clang-format before git rebase master (where the file was added). 2021-02-09 06:47:06 -08:00
Ralf W. Grosse-Kunstleve 4c7bb2612b Adding test_classh_inheritance, currently failing (passes with class_). 2021-02-09 06:47:06 -08:00
Ralf W. Grosse-Kunstleve d7efc9b8b1 Adding & using PYBIND11_CLASSH_TYPE_CASTERS define. 2021-02-09 06:47:06 -08:00
Ralf W. Grosse-Kunstleve 1ef19a1e04 Using pybind11/detail/classh_type_casters.h from test_classh_wip.cpp. 2021-02-09 06:47:06 -08:00
Ralf W. Grosse-Kunstleve 29414e6e95 Copying classh type_casters from test_classh_wip.cpp UNMODIFIED, as a baseline for generalizing the code. 2021-02-09 06:47:06 -08:00
Ralf W. Grosse-Kunstleve 2a7d41c193 Moving factored-out make_constructor to test_classh_wip.cpp, restoring previous version of cast.h. This is currently the most practical approach. See PR #2798 for background. 2021-02-09 06:47:06 -08:00
Ralf W. Grosse-Kunstleve bad7199a02 Factoring out find_existing_python_instance(). 2021-02-09 06:47:06 -08:00
Ralf W. Grosse-Kunstleve 2f8e01748b Adding minor comment (change to internals needed to distinguish uninitialized/disowned in error message). 2021-02-09 06:47:06 -08:00
Ralf W. Grosse-Kunstleve a72e5f0c8f Inserting additional assert to ensure a returned unique_ptr is always a new Python instance. 2021-02-09 06:47:06 -08:00
Ralf W. Grosse-Kunstleve ec86f10038 Using factored-out make_constructor (PR #2798), removing duplicate code. 2021-02-09 06:47:06 -08:00
Ralf W. Grosse-Kunstleve 8d18c1e121 Fixing clang-format oversight. 2021-02-09 06:47:06 -08:00
Ralf W. Grosse-Kunstleve f4c27c34e8 Using type_caster_base<mpty>::src_and_type directly, removing copy. Also renaming one cast to cast_const_raw_ptr, for clarity. 2021-02-09 06:47:06 -08:00
Ralf W. Grosse-Kunstleve 45df6826e6 Cosmetical change around helper functions. 2021-02-09 06:47:06 -08:00
Ralf W. Grosse-Kunstleve 86ba2081af Removing enable_shared_from_this stub, simplifying existing code, clang-format.
Open question, with respect to the original code:
76a160070b/include/pybind11/pybind11.h (L1510)
To me it looks like the exact situation marked as `std::shared_ptr<Good> gp1 = not_so_good.getptr();` here: https://en.cppreference.com/w/cpp/memory/enable_shared_from_this
The comment there is: `// undefined behavior (until C++17) and std::bad_weak_ptr thrown (since C++17)`
Does the existing code have UB pre C++17?

I'll leave handling of enable_shared_from_this for later, as the need arises.
2021-02-09 06:47:06 -08:00
Ralf W. Grosse-Kunstleve b41a0db1b1 Calling deregister_instance after disowning via unique_ptr. 2021-02-09 06:47:06 -08:00
Ralf W. Grosse-Kunstleve b85cc69714 Making test_type_caster_bare_interface_demo.cpp slightly more realistic, ASAN, MSAN, UBSAN clean. 2021-02-09 06:47:06 -08:00
Ralf W. Grosse-Kunstleve e4d6d860b6 Fixing bugs discovered by ASAN. The code is now ASAN, MSAN, UBSAN clean. 2021-02-09 06:47:06 -08:00
Ralf W. Grosse-Kunstleve 3bc50c57b4 Bug fix: vptr_deleter_armed_flag_ptr has to live on the heap.
See new bullet point in comment section near the top.

The variable was also renamed to reflect its function more accurately.
2021-02-09 06:47:06 -08:00
Ralf W. Grosse-Kunstleve 4ddd65de00 static handle cast implementations for rtrn_uqmp, rtrn_uqcp. 2021-02-09 06:47:06 -08:00
Ralf W. Grosse-Kunstleve 68bee938de Adding MISSING comments in operator std::unique_ptr<mpty[ const]>. 2021-02-09 06:47:06 -08:00
Ralf W. Grosse-Kunstleve 6601ec4ea7 static handle cast implementations for rtrn_shmp, rtrn_shcp. 2021-02-09 06:47:05 -08:00
Ralf W. Grosse-Kunstleve 649eb91f21 Adding comment re potential use_count data race. 2021-02-09 06:47:05 -08:00
Ralf W. Grosse-Kunstleve 6294eb26e5 Pure clang-format change (applied to original type_caster_generic::cast). 2021-02-09 06:47:05 -08:00
Ralf W. Grosse-Kunstleve ee6d15647d Copying type_caster_generic::cast into type_caster<mpty> as-is (preparation for handling smart pointers). 2021-02-09 06:47:05 -08:00
Ralf W. Grosse-Kunstleve 4359422d99 static cast handle for rtrn_valu works by simply dropping in code from type_caster_base (marked with comments). rtrn_rref raises a RuntimeError, to be investigated. 2021-02-09 06:47:05 -08:00
Ralf W. Grosse-Kunstleve 6dea65fe64 static cast handle for rtrn_cref works by simply dropping in code from type_caster_base (marked with comments). rtrn_mref and rtrn_mptr work via const_cast (to add const). 2021-02-09 06:47:05 -08:00
Ralf W. Grosse-Kunstleve e70a882718 static cast handle for rtrn_cptr works by simply dropping in code from type_caster_base (marked with comments). 2021-02-09 06:47:05 -08:00
Ralf W. Grosse-Kunstleve d88be00a7a Systematically setting mtxt for all rtrn_mpty_* functions (preparation, the values are not actually used yet). 2021-02-09 06:47:05 -08:00
Ralf W. Grosse-Kunstleve db529c805c flake8 cleanup 2021-02-09 06:47:05 -08:00
Ralf W. Grosse-Kunstleve d3833d2cbf Fixing oversight (discovered by flake8). 2021-02-09 06:47:05 -08:00
Ralf W. Grosse-Kunstleve ec8ebb766a Pure `clang-format --style=file -i` change, with two `clang-format off` directives. 2021-02-09 06:47:05 -08:00
Ralf W. Grosse-Kunstleve e7aea026bb Pure `clang-format --style=file -i` change. 2021-02-09 06:47:05 -08:00