std_unique_ptr.cpp
Go to the documentation of this file.
1 
4 #include <eigenpy/eigenpy.hpp>
6 
7 #include <memory>
8 #include <string>
9 #include <complex>
10 
11 namespace bp = boost::python;
12 
13 struct V1 {
14  V1() = default;
15  V1(double p_v) : v(p_v) {}
16 
17  double v = 100;
18 };
19 
20 std::unique_ptr<int> make_unique_int() { return std::make_unique<int>(10); }
21 
22 std::unique_ptr<V1> make_unique_v1() { return std::make_unique<V1>(10); }
23 
24 std::unique_ptr<V1> make_unique_null() { return nullptr; }
25 
26 std::unique_ptr<std::string> make_unique_str() {
27  return std::make_unique<std::string>("str");
28 }
29 
30 std::unique_ptr<std::complex<double> > make_unique_complex() {
31  return std::make_unique<std::complex<double> >(1., 0.);
32 }
33 
36  : int_ptr(std::make_unique<int>(20)),
37  v1_ptr(std::make_unique<V1>(200)),
38  str_ptr(std::make_unique<std::string>("str")),
39  complex_ptr(std::make_unique<std::complex<double> >(1., 0.)) {}
40 
41  std::unique_ptr<int> int_ptr;
42  std::unique_ptr<V1> v1_ptr;
43  std::unique_ptr<V1> null_ptr;
44  std::unique_ptr<std::string> str_ptr;
45  std::unique_ptr<std::complex<double> > complex_ptr;
46 };
47 
48 BOOST_PYTHON_MODULE(std_unique_ptr) {
50 
51  bp::class_<V1>("V1", bp::init<>()).def_readwrite("v", &V1::v);
52 
53  bp::def("make_unique_int", make_unique_int);
54  bp::def("make_unique_v1", make_unique_v1);
55  bp::def("make_unique_null", make_unique_null,
57  bp::def("make_unique_str", make_unique_str);
58  bp::def("make_unique_complex", make_unique_complex);
59 
60  boost::python::class_<UniquePtrHolder, boost::noncopyable>("UniquePtrHolder",
61  bp::init<>())
62  .add_property("int_ptr",
63  bp::make_getter(&UniquePtrHolder::int_ptr,
65  .add_property("v1_ptr",
66  bp::make_getter(&UniquePtrHolder::v1_ptr,
68  .add_property("null_ptr",
69  bp::make_getter(&UniquePtrHolder::null_ptr,
71  .add_property("str_ptr",
72  bp::make_getter(&UniquePtrHolder::str_ptr,
74  .add_property("complex_ptr",
75  bp::make_getter(&UniquePtrHolder::complex_ptr,
77 }
V1
Definition: std_unique_ptr.cpp:13
boost::python
Definition: alignment.hpp:49
std-unique-ptr.hpp
eigenpy::enableEigenPy
void EIGENPY_DLLAPI enableEigenPy()
Definition: eigenpy.cpp:42
UniquePtrHolder::UniquePtrHolder
UniquePtrHolder()
Definition: std_unique_ptr.cpp:35
UniquePtrHolder::str_ptr
std::unique_ptr< std::string > str_ptr
Definition: std_unique_ptr.cpp:44
make_unique_null
std::unique_ptr< V1 > make_unique_null()
Definition: std_unique_ptr.cpp:24
V1::V1
V1()=default
UniquePtrHolder::null_ptr
std::unique_ptr< V1 > null_ptr
Definition: std_unique_ptr.cpp:43
UniquePtrHolder::int_ptr
std::unique_ptr< int > int_ptr
Definition: std_unique_ptr.cpp:41
V1::v
double v
Definition: std_unique_ptr.cpp:17
make_unique_v1
std::unique_ptr< V1 > make_unique_v1()
Definition: std_unique_ptr.cpp:22
BOOST_PYTHON_MODULE
BOOST_PYTHON_MODULE(std_unique_ptr)
Definition: std_unique_ptr.cpp:48
eigenpy::ReturnInternalStdUniquePtr
Definition: std-unique-ptr.hpp:117
eigenpy.hpp
UniquePtrHolder::complex_ptr
std::unique_ptr< std::complex< double > > complex_ptr
Definition: std_unique_ptr.cpp:45
UniquePtrHolder::v1_ptr
std::unique_ptr< V1 > v1_ptr
Definition: std_unique_ptr.cpp:42
make_unique_int
std::unique_ptr< int > make_unique_int()
Definition: std_unique_ptr.cpp:20
eigenpy::StdUniquePtrCallPolicies
Definition: std-unique-ptr.hpp:111
V1::V1
V1(double p_v)
Definition: std_unique_ptr.cpp:15
make_unique_str
std::unique_ptr< std::string > make_unique_str()
Definition: std_unique_ptr.cpp:26
make_unique_complex
std::unique_ptr< std::complex< double > > make_unique_complex()
Definition: std_unique_ptr.cpp:30
UniquePtrHolder
Definition: std_unique_ptr.cpp:34


eigenpy
Author(s): Justin Carpentier, Nicolas Mansard
autogenerated on Fri Jun 14 2024 02:15:58