diff --git a/include/eigenpy/eigenpy.hpp b/include/eigenpy/eigenpy.hpp index f4edf090d36a2df10d71ad214ad0b73cfd1d8f8b..cfd2498c2555d8a93020fe522b4bcca684837983 100644 --- a/include/eigenpy/eigenpy.hpp +++ b/include/eigenpy/eigenpy.hpp @@ -10,6 +10,9 @@ #include "eigenpy/eigen-typedef.hpp" #include "eigenpy/expose.hpp" +/// Custom CallPolicies +#include "eigenpy/std_unique_ptr.hpp" + #define ENABLE_SPECIFIC_MATRIX_TYPE(TYPE) \ ::eigenpy::enableEigenPySpecific<TYPE>(); diff --git a/include/eigenpy/std_unique_ptr.hpp b/include/eigenpy/std_unique_ptr.hpp index 4c2185cbc9419f7d9151bf3513a5ab301f6661a2..2c1c7bdd95282750650e92c405f3c25bd193c339 100644 --- a/include/eigenpy/std_unique_ptr.hpp +++ b/include/eigenpy/std_unique_ptr.hpp @@ -130,4 +130,15 @@ struct ReturnInternalStdUniquePtr : bp::return_internal_reference<> { } // namespace eigenpy +namespace boost { +namespace python { + +template <typename T> +struct to_python_value<const std::unique_ptr<T>&> + : eigenpy::details::StdUniquePtrResultConverter::apply< + std::unique_ptr<T> >::type {}; + +} // namespace python +} // namespace boost + #endif // ifndef __eigenpy_utils_std_unique_ptr_hpp__ diff --git a/unittest/std_unique_ptr.cpp b/unittest/std_unique_ptr.cpp index f2419287f135982edeba50e0b1230f549d1c6abb..bbf8a3605ba9856f29e4a938d2484749f6551b0d 100644 --- a/unittest/std_unique_ptr.cpp +++ b/unittest/std_unique_ptr.cpp @@ -35,10 +35,8 @@ BOOST_PYTHON_MODULE(std_unique_ptr) { bp::class_<V1>("V1", bp::init<>()).def_readwrite("v", &V1::v); - bp::def("make_unique_int", make_unique_int, - eigenpy::StdUniquePtrCallPolicies()); - bp::def("make_unique_v1", make_unique_v1, - eigenpy::StdUniquePtrCallPolicies()); + bp::def("make_unique_int", make_unique_int); + bp::def("make_unique_v1", make_unique_v1); bp::def("make_unique_null", make_unique_null, eigenpy::StdUniquePtrCallPolicies());