Commit Graph

2194 Commits

Author SHA1 Message Date
Ralf W. Grosse-Kunstleve
59030f0155 static cast handle for rtrn_cptr works by simply dropping in code from type_caster_base (marked with comments). 2021-01-29 14:11:54 -08:00
Ralf W. Grosse-Kunstleve
bb1b3d17ad Systematically setting mtxt for all rtrn_mpty_* functions (preparation, the values are not actually used yet). 2021-01-29 14:11:54 -08:00
Ralf W. Grosse-Kunstleve
8b58e210db flake8 cleanup 2021-01-29 14:11:54 -08:00
Ralf W. Grosse-Kunstleve
8570bc0098 Fixing oversight (discovered by flake8). 2021-01-29 14:11:54 -08:00
Ralf W. Grosse-Kunstleve
cbef095cd5 Pure clang-format --style=file -i change, with two clang-format off directives. 2021-01-29 14:11:54 -08:00
Ralf W. Grosse-Kunstleve
788c80ff59 Pure clang-format --style=file -i change. 2021-01-29 14:11:54 -08:00
Ralf W. Grosse-Kunstleve
57b8fafc43 Retrieving smart_holder pointer in type_caster<std::unique_ptr<mpty[ const]>>::load, and using it cast_op operators. 2021-01-29 14:11:54 -08:00
Ralf W. Grosse-Kunstleve
74678a7cb1 Improved error messaging: Cannot disown nullptr (as_unique_ptr). 2021-01-29 14:11:54 -08:00
Ralf W. Grosse-Kunstleve
98e3c5abb9 Retrieving smart_holder pointer in type_caster<std::shared_ptr<mpty[ const]>>::load, and using it cast_op operators. 2021-01-29 14:11:54 -08:00
Ralf W. Grosse-Kunstleve
49994070d8 Factoring out smart_holder_type_caster_load. 2021-01-29 14:11:54 -08:00
Ralf W. Grosse-Kunstleve
ed6c890776 Retrieving smart_holder pointer in type_caster<mpty>::load, and using it cast_op operators. 2021-01-29 14:11:54 -08:00
Ralf W. Grosse-Kunstleve
bbca0142d8 Adding rvalue_ref, renaming const_value_ref to lvalue_ref & removing const. 2021-01-29 14:11:54 -08:00
Ralf W. Grosse-Kunstleve
36ebf1e7c5 Adding isinstance<mpty> in type_caster::load functions. 2021-01-29 14:11:54 -08:00
Ralf W. Grosse-Kunstleve
08fe834c4b Adding mpty::mtxt string member. 2021-01-29 14:11:54 -08:00
Ralf W. Grosse-Kunstleve
1a0dcf4695 Hard-coding smart_holder into classh. 2021-01-29 14:11:54 -08:00
Ralf W. Grosse-Kunstleve
32d2967b0c classh.h: renaming of class_ to classh + namespace; forking test_classh_wip from test_type_caster_bare_interface_demo. 2021-01-29 14:11:54 -08:00
Ralf W. Grosse-Kunstleve
5248494ba0 Pure copy of class class_ implementation in pybind11.h (master commit 98f1bbb800). 2021-01-29 14:11:54 -08:00
Ralf W. Grosse-Kunstleve
38e949880a Adding unique_ptr<mpty>, unique_ptr<mpty const> casters. 2021-01-29 14:11:54 -08:00
Ralf W. Grosse-Kunstleve
724a83e1d2 Adding shared_ptr<mpty>, shared_ptr<mpty const> casters. 2021-01-29 14:11:54 -08:00
Ralf W. Grosse-Kunstleve
2f53e85d6a Adding type_caster_bare_interface_demo. 2021-01-29 14:11:54 -08:00
Ralf W. Grosse-Kunstleve
abc5e2e9ff Removing stray file. 2021-01-29 14:11:54 -08:00
Ralf W. Grosse-Kunstleve
998c8c93d7 Removing obsolete and very incomplete test (replaced by Catch2-based test). 2021-01-29 14:11:53 -08:00
Ralf W. Grosse-Kunstleve
b63f4db0bc Converting from methods to factory functions (no functional change). 2021-01-29 14:11:53 -08:00
Ralf W. Grosse-Kunstleve
57429594c4 Adding top-level comment. 2021-01-29 14:11:53 -08:00
Ralf W. Grosse-Kunstleve
c919af3ade Testing of exceptions not covered by the from-as matrix. 2021-01-29 14:11:53 -08:00
Ralf W. Grosse-Kunstleve
94b14b87bc Implementing all [E]xception tests. 2021-01-29 14:11:53 -08:00
Ralf W. Grosse-Kunstleve
71d96afbdc Implementing all [S]uccess tests. 2021-01-29 14:11:53 -08:00
Ralf W. Grosse-Kunstleve
b0b55f2644 Shuffling existing TEST_CASEs into systematic matrix. 2021-01-29 14:11:53 -08:00
Ralf W. Grosse-Kunstleve
7d43a75226 Improved labeling of TEST_CASEs. 2021-01-29 14:11:53 -08:00
Ralf W. Grosse-Kunstleve
4144651c2c Adding in vptr_deleter_guard_flag. 2021-01-29 14:11:53 -08:00
Ralf W. Grosse-Kunstleve
80fe0d0d2f New tests/core/smart_holder_poc_test.cpp, using Catch2. 2021-01-29 14:11:53 -08:00
Ralf W. Grosse-Kunstleve
ebd334bf91 Adding from_shared_ptr. Some polishing. 2021-01-29 14:11:53 -08:00
Ralf W. Grosse-Kunstleve
f37a014005 Adding from/as unique_ptr<T> and unique_ptr<T, D>. 2021-01-29 14:11:53 -08:00
Ralf W. Grosse-Kunstleve
57132c49e2 Adding vptr_deleter. 2021-01-29 14:11:53 -08:00
Ralf W. Grosse-Kunstleve
3f7e522173 Snapshot of WIP, TODO: shared_ptr deleter with on/off switch 2021-01-29 14:11:53 -08:00
Ralf W. Grosse-Kunstleve
91543772fe pybind11 equivalent of Boost.Python test similar to reproducer under #1333 2021-01-29 14:11:53 -08:00
Ralf W. Grosse-Kunstleve
04a61f5121 minor test_private_first_base.cpp simplification (after discovering that this can be wrapped with Boost.Python, using boost::noncopyable) 2021-01-29 14:11:53 -08:00
Ralf W. Grosse-Kunstleve
cbf66e8881 Demonstration of Undefined Behavior in handling of polymorphic pointers.
(This demo does NOT involve smart pointers at all, unlike the otherwise similar test_smart_ptr_private_first_base.)
2021-01-29 14:11:53 -08:00
Ralf W. Grosse-Kunstleve
c29d8ca00d fixing up-down mixup in comment 2021-01-29 14:11:53 -08:00
Ralf W. Grosse-Kunstleve
02e0903522 Additional demonstration of Undefined Behavior in handling of shared_ptr holder. 2021-01-29 14:11:53 -08:00
Ralf W. Grosse-Kunstleve
d8796bb191 Demonstration of Undefined Behavior in handling of shared_ptr holder.
Based on https://godbolt.org/z/4fdjaW by jorgbrown@ (thanks Jorg!).
2021-01-29 14:11:53 -08:00
Ralf W. Grosse-Kunstleve
a61b8d5c0d Copying tests as-is from xxx_value_ptr_xxx_holder branch.
https://github.com/rwgk/pybind11/tree/xxx_value_ptr_xxx_holder

Systematically exercising casting between shared_ptr<base>, shared_ptr<derived>.
2021-01-29 14:11:53 -08:00
Ralf W. Grosse-Kunstleve
47c606ded7 Copying tests as-is from xxx_value_ptr_xxx_holder branch.
https://github.com/rwgk/pybind11/tree/xxx_value_ptr_xxx_holder

Systematically exercising returning and passing unique_ptr<T>, shared_ptr<T>
with unique_ptr, shared_ptr holder.

Observations:

test_holder_unique_ptr:
  make_unique_pointee  OK
  pass_unique_pointee  BUILD_FAIL (as documented)
  make_shared_pointee  Abort free(): double free detected
  pass_shared_pointee  RuntimeError: Unable to load a custom holder type from a default-holder instance

test_holder_shared_ptr:
  make_unique_pointee  Segmentation fault (#1138)
  pass_unique_pointee  BUILD_FAIL (as documented)
  make_shared_pointee  OK
  pass_shared_pointee  OK
2021-01-29 14:11:53 -08:00
Ralf W. Grosse-Kunstleve
93162081ff adding test_promotion_of_disowned_to_shared 2021-01-29 14:11:53 -08:00
Ralf W. Grosse-Kunstleve
9ffa2067e2 TRIGGER_SEGSEV macro, annotations for GET_STACK (vptr::get), GET_INT_STACK (pointee) 2021-01-29 14:11:53 -08:00
Ralf W. Grosse-Kunstleve
041a387c9f disabling AppVeyor (for this PR) 2021-01-29 14:11:52 -08:00
Ralf W. Grosse-Kunstleve
787aaba545 disabling GitHub Actions on pull_request (for this PR) 2021-01-29 14:11:52 -08:00
Ralf W. Grosse-Kunstleve
dc3cfbf936 moving prototype code to pybind11/vptr_holder.h, adding type_caster specialization to make the bindings involving unique_ptr passing compile, but load and cast implementations are missing 2021-01-29 14:11:52 -08:00
Ralf W. Grosse-Kunstleve
1f5864467f new test_variant_unique_shared with vptr_holder prototype 2021-01-29 14:11:52 -08:00
Ralf W. Grosse-Kunstleve
ca35e7a84b unique_ptr or shared_ptr return 2021-01-29 14:11:52 -08:00