mirror of
https://github.com/pybind/pybind11.git
synced 2025-01-31 23:30:30 +00:00
Add smart_holder_from_unique_ptr()
specialization for std::unique_ptr<T const, D>
Enables removing: 4 BAKEIN_BREAK in test_class_sh_basic.cpp 2 BAKEIN_BREAK in test_class_sh_basic.py
This commit is contained in:
parent
7a6d30ca58
commit
5957133b6e
@ -82,6 +82,19 @@ handle smart_holder_from_unique_ptr(std::unique_ptr<T, D> &&src,
|
|||||||
return inst.release();
|
return inst.release();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename T, typename D>
|
||||||
|
handle smart_holder_from_unique_ptr(std::unique_ptr<T const, D> &&src,
|
||||||
|
return_value_policy policy,
|
||||||
|
handle parent,
|
||||||
|
const std::pair<const void *, const type_info *> &st) {
|
||||||
|
return smart_holder_from_unique_ptr(
|
||||||
|
std::unique_ptr<T, D>(const_cast<T *>(src.release()),
|
||||||
|
std::move(src.get_deleter())), // Const2Mutbl
|
||||||
|
policy,
|
||||||
|
parent,
|
||||||
|
st);
|
||||||
|
}
|
||||||
|
|
||||||
template <typename T, typename D>
|
template <typename T, typename D>
|
||||||
handle
|
handle
|
||||||
unique_ptr_to_python(std::unique_ptr<T, D> &&unq_ptr, return_value_policy policy, handle parent) {
|
unique_ptr_to_python(std::unique_ptr<T, D> &&unq_ptr, return_value_policy policy, handle parent) {
|
||||||
@ -101,6 +114,7 @@ unique_ptr_to_python(std::unique_ptr<T, D> &&unq_ptr, return_value_policy policy
|
|||||||
nullptr,
|
nullptr,
|
||||||
std::addressof(unq_ptr));
|
std::addressof(unq_ptr));
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
handle smart_holder_from_shared_ptr(const std::shared_ptr<T> &src,
|
handle smart_holder_from_shared_ptr(const std::shared_ptr<T> &src,
|
||||||
return_value_policy policy,
|
return_value_policy policy,
|
||||||
|
@ -173,25 +173,25 @@ TEST_SUBMODULE(class_sh_basic, m) {
|
|||||||
m.def("pass_shcp", pass_shcp);
|
m.def("pass_shcp", pass_shcp);
|
||||||
|
|
||||||
m.def("rtrn_uqmp", rtrn_uqmp);
|
m.def("rtrn_uqmp", rtrn_uqmp);
|
||||||
// BAKEIN_BREAK m.def("rtrn_uqcp", rtrn_uqcp);
|
m.def("rtrn_uqcp", rtrn_uqcp);
|
||||||
|
|
||||||
// BAKEIN_BREAK m.def("pass_uqmp", pass_uqmp);
|
// BAKEIN_BREAK m.def("pass_uqmp", pass_uqmp);
|
||||||
// BAKEIN_BREAK m.def("pass_uqcp", pass_uqcp);
|
// BAKEIN_BREAK m.def("pass_uqcp", pass_uqcp);
|
||||||
|
|
||||||
m.def("rtrn_udmp", rtrn_udmp);
|
m.def("rtrn_udmp", rtrn_udmp);
|
||||||
// BAKEIN_BREAK m.def("rtrn_udcp", rtrn_udcp);
|
m.def("rtrn_udcp", rtrn_udcp);
|
||||||
|
|
||||||
// BAKEIN_BREAK m.def("pass_udmp", pass_udmp);
|
// BAKEIN_BREAK m.def("pass_udmp", pass_udmp);
|
||||||
// BAKEIN_BREAK m.def("pass_udcp", pass_udcp);
|
// BAKEIN_BREAK m.def("pass_udcp", pass_udcp);
|
||||||
|
|
||||||
m.def("rtrn_udmp_del", rtrn_udmp_del);
|
m.def("rtrn_udmp_del", rtrn_udmp_del);
|
||||||
// BAKEIN_BREAK m.def("rtrn_udcp_del", rtrn_udcp_del);
|
m.def("rtrn_udcp_del", rtrn_udcp_del);
|
||||||
|
|
||||||
// BAKEIN_BREAK m.def("pass_udmp_del", pass_udmp_del);
|
// BAKEIN_BREAK m.def("pass_udmp_del", pass_udmp_del);
|
||||||
// BAKEIN_BREAK m.def("pass_udcp_del", pass_udcp_del);
|
// BAKEIN_BREAK m.def("pass_udcp_del", pass_udcp_del);
|
||||||
|
|
||||||
m.def("rtrn_udmp_del_nd", rtrn_udmp_del_nd);
|
m.def("rtrn_udmp_del_nd", rtrn_udmp_del_nd);
|
||||||
// BAKEIN_BREAK m.def("rtrn_udcp_del_nd", rtrn_udcp_del_nd);
|
m.def("rtrn_udcp_del_nd", rtrn_udcp_del_nd);
|
||||||
|
|
||||||
// BAKEIN_BREAK m.def("pass_udmp_del_nd", pass_udmp_del_nd);
|
// BAKEIN_BREAK m.def("pass_udmp_del_nd", pass_udmp_del_nd);
|
||||||
// BAKEIN_BREAK m.def("pass_udcp_del_nd", pass_udcp_del_nd);
|
// BAKEIN_BREAK m.def("pass_udcp_del_nd", pass_udcp_del_nd);
|
||||||
|
@ -29,9 +29,9 @@ def test_atyp_constructors():
|
|||||||
(m.rtrn_shmp, "rtrn_shmp"),
|
(m.rtrn_shmp, "rtrn_shmp"),
|
||||||
(m.rtrn_shcp, "rtrn_shcp"),
|
(m.rtrn_shcp, "rtrn_shcp"),
|
||||||
(m.rtrn_uqmp, "rtrn_uqmp"),
|
(m.rtrn_uqmp, "rtrn_uqmp"),
|
||||||
# BAKEIN_BREAK (m.rtrn_uqcp, "rtrn_uqcp"),
|
(m.rtrn_uqcp, "rtrn_uqcp"),
|
||||||
(m.rtrn_udmp, "rtrn_udmp"),
|
(m.rtrn_udmp, "rtrn_udmp"),
|
||||||
# BAKEIN_BREAK (m.rtrn_udcp, "rtrn_udcp"),
|
(m.rtrn_udcp, "rtrn_udcp"),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
def test_cast(rtrn_f, expected):
|
def test_cast(rtrn_f, expected):
|
||||||
|
Loading…
Reference in New Issue
Block a user