Revert "cast.h return_value_policy_override _clif_automatic (#4364)"

This reverts commit 8720cf94d6.
This commit is contained in:
Ralf W. Grosse-Kunstleve 2024-06-10 19:05:21 -07:00 committed by Ralf W. Grosse-Kunstleve
parent e9c6fe1a6e
commit 7a945d8f40
4 changed files with 0 additions and 97 deletions

View File

@ -1170,7 +1170,6 @@ struct return_value_policy_override<
void>> {
static return_value_policy policy(return_value_policy p) {
return !std::is_lvalue_reference<Return>::value && !std::is_pointer<Return>::value
&& p != return_value_policy::_clif_automatic
? return_value_policy::move
: p;
}

View File

@ -167,7 +167,6 @@ set(PYBIND11_TEST_FILES
test_pickling
test_python_multiple_inheritance
test_pytypes
test_return_value_policy_override
test_sequences_and_iterators
test_smart_ptr
test_stl

View File

@ -1,82 +0,0 @@
#include "pybind11_tests.h"
namespace test_return_value_policy_override {
struct some_type {};
} // namespace test_return_value_policy_override
using test_return_value_policy_override::some_type;
namespace pybind11 {
namespace detail {
const char *return_value_policy_name(return_value_policy policy) {
switch (policy) {
case return_value_policy::automatic:
return "automatic";
case return_value_policy::automatic_reference:
return "automatic_reference";
case return_value_policy::take_ownership:
return "take_ownership";
case return_value_policy::copy:
return "copy";
case return_value_policy::move:
return "move";
case return_value_policy::reference:
return "reference";
case return_value_policy::reference_internal:
return "reference_internal";
case return_value_policy::_return_as_bytes:
return "_return_as_bytes";
case return_value_policy::_clif_automatic:
return "_clif_automatic";
default:
return "Expected to be unreachable.";
}
};
template <>
struct type_caster<some_type> : type_caster_base<some_type> {
static handle cast(some_type &&, return_value_policy policy, handle /*parent*/) {
return str(std::string(return_value_policy_name(policy))).release().ptr();
}
static handle cast(some_type *, return_value_policy policy, handle /*parent*/) {
return str(std::string(return_value_policy_name(policy))).release().ptr();
}
};
} // namespace detail
} // namespace pybind11
TEST_SUBMODULE(return_value_policy_override, m) {
m.def("return_value_with_default_policy", []() { return some_type(); });
m.def(
"return_value_with_policy_copy",
[]() { return some_type(); },
py::return_value_policy::copy);
m.def(
"return_value_with_policy_clif_automatic",
[]() { return some_type(); },
py::return_value_policy::_clif_automatic);
m.def("return_pointer_with_default_policy", []() {
static some_type value;
return &value;
});
m.def(
"return_pointer_with_policy_move",
[]() {
static some_type value;
return &value;
},
py::return_value_policy::move);
m.def(
"return_pointer_with_policy_clif_automatic",
[]() {
static some_type value;
return &value;
},
py::return_value_policy::_clif_automatic);
}

View File

@ -1,13 +0,0 @@
from pybind11_tests import return_value_policy_override as m
def test_return_value():
assert m.return_value_with_default_policy() == "move"
assert m.return_value_with_policy_copy() == "move"
assert m.return_value_with_policy_clif_automatic() == "_clif_automatic"
def test_return_pointer():
assert m.return_pointer_with_default_policy() == "automatic"
assert m.return_pointer_with_policy_move() == "move"
assert m.return_pointer_with_policy_clif_automatic() == "_clif_automatic"