mirror of
https://github.com/pybind/pybind11.git
synced 2025-02-19 15:10:38 +00:00
Revert "cast.h return_value_policy_override _clif_automatic (#4364)"
This reverts commit 8720cf94d6
.
This commit is contained in:
parent
e9c6fe1a6e
commit
7a945d8f40
@ -1170,7 +1170,6 @@ struct return_value_policy_override<
|
|||||||
void>> {
|
void>> {
|
||||||
static return_value_policy policy(return_value_policy p) {
|
static return_value_policy policy(return_value_policy p) {
|
||||||
return !std::is_lvalue_reference<Return>::value && !std::is_pointer<Return>::value
|
return !std::is_lvalue_reference<Return>::value && !std::is_pointer<Return>::value
|
||||||
&& p != return_value_policy::_clif_automatic
|
|
||||||
? return_value_policy::move
|
? return_value_policy::move
|
||||||
: p;
|
: p;
|
||||||
}
|
}
|
||||||
|
@ -167,7 +167,6 @@ set(PYBIND11_TEST_FILES
|
|||||||
test_pickling
|
test_pickling
|
||||||
test_python_multiple_inheritance
|
test_python_multiple_inheritance
|
||||||
test_pytypes
|
test_pytypes
|
||||||
test_return_value_policy_override
|
|
||||||
test_sequences_and_iterators
|
test_sequences_and_iterators
|
||||||
test_smart_ptr
|
test_smart_ptr
|
||||||
test_stl
|
test_stl
|
||||||
|
@ -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);
|
|
||||||
}
|
|
@ -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"
|
|
Loading…
Reference in New Issue
Block a user