eigenpy 3.12.0
Bindings between Numpy and Eigen using Boost.Python
Loading...
Searching...
No Matches
copyable.hpp
1//
2// Copyright (c) 2016-2023 CNRS INRIA
3// Copyright (c) 2023 Heriot-Watt University
4//
5
6#ifndef __eigenpy_utils_copyable_hpp__
7#define __eigenpy_utils_copyable_hpp__
8
9#include <boost/python.hpp>
10
11namespace eigenpy {
12
17template <class C>
18struct CopyableVisitor : public bp::def_visitor<CopyableVisitor<C>> {
19 template <class PyClass>
20 void visit(PyClass& cl) const {
21 cl.def("copy", &copy, bp::arg("self"), "Returns a copy of *this.");
22 cl.def("__copy__", &copy, bp::arg("self"), "Returns a copy of *this.");
23 cl.def("__deepcopy__", &deepcopy, bp::args("self", "memo"),
24 "Returns a deep copy of *this.");
25 }
26
27 private:
28 static C copy(const C& self) { return C(self); }
29 static C deepcopy(const C& self, bp::dict) { return C(self); }
30};
31} // namespace eigenpy
32
33#endif // ifndef __eigenpy_utils_copyable_hpp__
Add the Python method copy to allow a copy of this by calling the copy constructor.
Definition copyable.hpp:18