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
Ralf W. Grosse-Kunstleve
cfc848a137
Retrieving smart_holder pointer in type_caster<std::unique_ptr<mpty[ const]>>::load, and using it cast_op operators.
2021-02-09 06:47:05 -08:00
Ralf W. Grosse-Kunstleve
6277910abd
Improved error messaging: Cannot disown nullptr (as_unique_ptr).
2021-02-09 06:47:05 -08:00
Ralf W. Grosse-Kunstleve
4a879cfdcb
Retrieving smart_holder pointer in type_caster<std::shared_ptr<mpty[ const]>>::load, and using it cast_op operators.
2021-02-09 06:47:05 -08:00
Ralf W. Grosse-Kunstleve
3f7a1a1b30
Factoring out smart_holder_type_caster_load.
2021-02-09 06:47:05 -08:00
Ralf W. Grosse-Kunstleve
4b35955a12
Retrieving smart_holder pointer in type_caster<mpty>::load, and using it cast_op operators.
2021-02-09 06:47:05 -08:00
Ralf W. Grosse-Kunstleve
fe5427fc23
Adding rvalue_ref, renaming const_value_ref to lvalue_ref & removing const.
2021-02-09 06:47:05 -08:00
Ralf W. Grosse-Kunstleve
6bdd58a115
Adding isinstance<mpty> in type_caster::load functions.
2021-02-09 06:47:05 -08:00
Ralf W. Grosse-Kunstleve
1ce4256921
Adding mpty::mtxt string member.
2021-02-09 06:47:05 -08:00
Ralf W. Grosse-Kunstleve
c8d19f9599
Hard-coding smart_holder into classh.
2021-02-09 06:47:05 -08:00
Ralf W. Grosse-Kunstleve
03f304e419
classh.h: renaming of class_ to classh + namespace; forking test_classh_wip from test_type_caster_bare_interface_demo.
2021-02-09 06:47:05 -08:00
Ralf W. Grosse-Kunstleve
a5818bdf4a
Pure copy of class class_
implementation in pybind11.h (master commit 98f1bbb800
).
2021-02-09 06:47:05 -08:00
Ralf W. Grosse-Kunstleve
b3ad3ac43f
Adding unique_ptr<mpty>, unique_ptr<mpty const> casters.
2021-02-09 06:47:05 -08:00
Ralf W. Grosse-Kunstleve
d36a7488ae
Adding shared_ptr<mpty>, shared_ptr<mpty const> casters.
2021-02-09 06:47:05 -08:00