Skip to content

Commit

Permalink
Add return value policy _clif_automatic (pybind#4343)
Browse files Browse the repository at this point in the history
  • Loading branch information
wangxf123456 authored Nov 18, 2022
1 parent fcdb9ba commit 6d3a0fc
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 1 deletion.
11 changes: 10 additions & 1 deletion include/pybind11/detail/common.h
Original file line number Diff line number Diff line change
Expand Up @@ -478,7 +478,16 @@ enum class return_value_policy : uint8_t {
but the purpose of _return_as_bytes is certain to be orthogonal, because
C++ strings are always copied to Python `bytes` or `str`.
NOTE: This policy is NOT available on master. */
_return_as_bytes
_return_as_bytes,

/** This policy should only be used by PyCLIF to automatically select a
return value policy. Legacy PyCLIF automatically decides object lifetime
management based on their properties:
https://github.com/google/clif/tree/main/clif/python#pointers-references-and-object-ownership
With this policy, the return value policy selection is consistent with
legacy PyCLIF.
NOTE: This policy is NOT available on master. */
_clif_automatic
};

PYBIND11_NAMESPACE_BEGIN(detail)
Expand Down
1 change: 1 addition & 0 deletions include/pybind11/detail/smart_holder_type_casters.h
Original file line number Diff line number Diff line change
Expand Up @@ -795,6 +795,7 @@ struct smart_holder_type_caster<std::shared_ptr<T>> : smart_holder_type_caster_l
break;
case return_value_policy::reference_internal:
case return_value_policy::_return_as_bytes:
case return_value_policy::_clif_automatic:
break;
}
if (!src) {
Expand Down

0 comments on commit 6d3a0fc

Please sign in to comment.