Ralf W. Grosse-Kunstleve
10abe15052
Automatic clang-tidy fixes.
2021-06-30 07:04:31 -07:00
Ralf W. Grosse-Kunstleve
48eb78ae77
Simpler and safe implementation based on new requirement: C++ (outside of the Python object) needs to hold a shared_ptr before shared_from_this is called. This is more similar to the existing implementation on current smart_holder HEAD, but still uses a weak_ptr to always return the same shared_ptr as long as C++ does not let it expire.
2021-06-30 07:04:31 -07:00
Ralf W. Grosse-Kunstleve
3dd89f14df
smart_holder_poc.h: type-erase raw_ptr before passing to shared_ptr::reset, to not trigger populating the shared_from_this weak_ptr. This way the only way the weak_ptr is populated is through loaded_as_shared_ptr. Breaks all but one test in test_class_sh_trampoline_shared_from_this.py, now marked skip WIP to test everything else with the GitHub CI.
2021-06-30 07:04:31 -07:00
Ralf W. Grosse-Kunstleve
b1d9f0d28f
Applying clang-tidy suggested fixes.
2021-06-30 07:04:31 -07:00
Ralf W. Grosse-Kunstleve
adfd3e1700
Partial cleanup of tests. WIP. The cleanup uncovered a major problem.
2021-06-30 07:04:31 -07:00
Ralf W. Grosse-Kunstleve
bfd4c4893e
Leveraging new noop_deleter_acting_as_weak_ptr_owner
to retrieve released vptr
.
...
The placeholder `vptr` is never exposed anymore, therefore the externally visible `use_count`s are more intuitive.
2021-06-30 07:04:31 -07:00
Ralf W. Grosse-Kunstleve
0e4b38e34d
Minor clang-tidy fix.
2021-06-30 07:04:31 -07:00
Ralf W. Grosse-Kunstleve
4b872febcc
Adding test_pass_released_shared_ptr_as_unique_ptr
, exercising new guard in smart_holder_type_casters.h.
2021-06-30 07:04:31 -07:00
Ralf W. Grosse-Kunstleve
e04196e82b
Attempts to side-step various platform-specific issues.
2021-06-30 07:04:31 -07:00
Ralf W. Grosse-Kunstleve
6214137c8d
Resolving gcc warning-as-error (many versions, old and new).
2021-06-30 07:04:31 -07:00
Ralf W. Grosse-Kunstleve
553054b26b
Adding tests involving stashing shared_ptr
s. WIP.
2021-06-30 07:04:31 -07:00
Ralf W. Grosse-Kunstleve
4218213f29
nodiscard fix.
2021-06-30 07:04:31 -07:00
Ralf W. Grosse-Kunstleve
223283295f
Two minor platform-specific fixes. Using static_cast instead of reinterpret_cast.
2021-06-30 07:04:31 -07:00
Ralf W. Grosse-Kunstleve
bf8d6a2900
First fully successful attempt to make shared_from_this
and trampolines play nicely.
...
Now also passes the open_spiel iterated_prisoners_dilemma_test ASAN clean, in addition to all pybind11 and PyCLIF unit tests.
The problem was that calling `std::shared_ptr<void>::reset()` with a `void` pointer cannot possibly update the `shared_from_this` `weak_ptr`.
The solution is to store a `shd_ptr_reset` function pointer in `guarded_deleter` (similar in idea to the stored function pointer for calling `delete`).
This commit still includes all debugging code, i.e. is "dirty". The code will be cleaned up after the GitHub CI is fully successful.
2021-06-30 07:04:31 -07:00
Ralf W. Grosse-Kunstleve
5bb38c10b3
MSVC 2015 compatibility.
2021-06-30 07:04:31 -07:00
Ralf W. Grosse-Kunstleve
45ec61f419
Adding shared_ptr_reset_and_rescue_pointee_model_proof_of_concept.
2021-06-30 07:04:31 -07:00
Ralf W. Grosse-Kunstleve
b633bb5b84
Inserting #ifdef
to preempt Windows fatal exception.
2021-06-30 07:04:31 -07:00
Ralf W. Grosse-Kunstleve
e0b770d549
Explictly discarding [[nodiscard]] to avoid MSVC CI failures.
2021-06-30 07:04:31 -07:00
Ralf W. Grosse-Kunstleve
4f00ffdc69
Copying in shared_from_this_custom_deleters.cpp from github.com/rwgk, with adjustments.
...
Base version: e5318faa6a/shared_from_this_custom_deleters.cpp
2021-06-30 07:04:31 -07:00
Ralf W. Grosse-Kunstleve
28ed5ecce8
Revert "Experiment: commenting out test_class_sh_shared_from_this."
...
This reverts commit febf9ce949c0bc87a8bf7ab3ddae4deb28636c9d.
2021-06-30 07:04:31 -07:00
Ralf W. Grosse-Kunstleve
6989f174ac
Experiment: commenting out test_class_sh_shared_from_this.
2021-06-30 07:04:31 -07:00
Ralf W. Grosse-Kunstleve
05bd93543b
Fully emulating type_caster_base-related behavior: trying shared_from_this also for unowned pointees.
2021-06-30 07:04:31 -07:00
Ralf W. Grosse-Kunstleve
e1de4e88b8
Adding test_class_sh_shared_from_this.cpp to tests/CMakeLists.txt.
2021-06-30 07:04:31 -07:00
Ralf W. Grosse-Kunstleve
775873d0b6
Adding from_raw_pointer_take_ownership_or_shared_from_this().
2021-06-30 07:04:31 -07:00
Ralf W. Grosse-Kunstleve
2a265860a7
enable_shared_from_this_from_raw_ptr_take_ownership_guard: better static_assert that also triggers for derived classes.
2021-06-30 07:04:31 -07:00
Ralf W. Grosse-Kunstleve
24c223ad8e
static_assert in from_raw_ptr_take_ownership, to be tested.
2021-06-30 07:04:31 -07:00
Ralf W. Grosse-Kunstleve
7a74bfede7
Restoring init_holder overload for std::enable_shared_from_this and original tests/test_smart_ptr.py.
2021-06-30 07:04:31 -07:00
Ralf W. Grosse-Kunstleve
e5b38a4459
Breaking up test_shared_ptr_from_this_and_references into smaller subtests. Skipping the only test that generates an ASAN heap-use-after-free.
2021-06-30 07:04:31 -07:00
Ralf W. Grosse-Kunstleve
94523e8a02
Experiments: 1. disabling enable_shared_from_this, 2. using smart_holder in test_class_sh_shared_from_this.cpp
2021-06-30 07:04:31 -07:00
Ralf W. Grosse-Kunstleve
252b6aefb8
Isolating shared_from_this tests from test_smart_ptr (minimal changes).
2021-06-30 07:04:31 -07:00
Jakob Lykke Andersen
b9241c0330
SM, remove type annotations in test
2021-06-29 05:57:32 -07:00
Jakob Lykke Andersen
f39efb850b
SH, attribute and property tests
2021-06-29 05:57:32 -07:00
Ralf W. Grosse-Kunstleve
fa5ffc3d02
Automatic clang-format.
2021-06-29 05:57:32 -07:00
Ralf W. Grosse-Kunstleve
a428f5755d
Automatic clang-tidy fixes.
2021-06-29 05:57:32 -07:00
Jakob Lykke Andersen
f06f0927b3
SH, history tracking
2021-06-29 05:57:32 -07:00
Jakob Lykke Andersen
0337ed944d
SH, fix use of PYBIND11_TYPE_CASTER_BASE_HOLDER
2021-06-29 05:57:32 -07:00
Jakob Lykke Andersen
ee53a45ffd
SH, fix typo
2021-06-29 05:57:32 -07:00
Jakob Lykke Andersen
b735093fde
SH, shared_ptr copy/move, rename to 'history'
2021-06-29 05:57:32 -07:00
Jakob Lykke Andersen
ef6907c1ae
SH, shared_ptr copy/move, make MSVC happy
2021-06-29 05:57:32 -07:00
Jakob Lykke Andersen
abf11b9d9a
SH, shared_ptr copy/move, update after review
2021-06-29 05:57:32 -07:00
Jakob Lykke Andersen
660f83e81d
SH, test for shared_ptr move
2021-06-29 05:57:32 -07:00
Jakob Lykke Andersen
2934913761
SH, test update
2021-06-29 05:57:32 -07:00
Jakob Lykke Andersen
fc548c067f
SH, update shared_ptr copy tests
2021-06-29 05:57:32 -07:00
Jakob Lykke Andersen
1f98d74761
Initial test
2021-06-29 05:57:32 -07:00
Cris Luengo
57a36633c4
fix: enable py::implicitly_convertible<py::none, ...> for py::class_-wrapped types ( #3059 )
...
* Allow casting from None to a custom object, closes #2778
* ci.yml patch from the smart_holder branch for full CI coverage.
2021-06-25 21:57:45 -07:00
Ralf W. Grosse-Kunstleve
2c828ff552
More clang-tidy fixes. These escaped before because -DDOWNLOAD_EIGEN=ON -DDOWNLOAD_CATCH=ON -DCMAKE_CXX_STANDARD=17
, as used in the GitHub Actions, were missing in the interactive run.
2021-06-22 14:42:47 -07:00
Ralf W. Grosse-Kunstleve
2eeac0c369
Applying clang-tidy fixes needed after merging PR #3051 (mostly automatically).
2021-06-22 13:38:30 -07:00
Ralf W. Grosse-Kunstleve
898d5b301c
Manually fixing merge conflict.
2021-06-22 12:19:40 -07:00
Aaron Gokaslan
dac74ebdf5
fix(clang-tidy): performance fixes applied in tests and CI ( #3051 )
...
* Initial fixes
* Whoops
* Finish clang-tidy manual fixes
* Add two missing fixes
* Revert
* Update clang-tidy
* Try to fix unreachable code error
* Move nolint comment
* Apply missing fix
* Don't override clang-tidy config
* Does this fix clang-tidy?
* Make all clang-tidy errors visible
* Add comments about NOLINTs and remove a few
* Fix typo
2021-06-22 12:11:54 -04:00
Ralf W. Grosse-Kunstleve
8d1e0b3903
[smart_holder] clang-tidy fixes (related to recent clang-tidy changes on master). ( #3053 )
...
* clang-tidy fixes (related to recent clang-tidy changes on master).
* More clang-tidy fixes.
2021-06-21 12:40:10 -07:00