Skip to content

Commit

Permalink
Squashed 'wrap/' changes from b28b3570d..d37b8a972
Browse files Browse the repository at this point in the history
d37b8a972 Merge pull request #31 from ayushbaid/feature/pickle
efd4a0fb4 removing tab
42fd231f3 adding newline for test compare
0aa316150 removing extra brackets
7fe1d7d0f adding pickle code to expected file
9c3ab7a8b fixing string format for new classname
2f89284e8 moving pickle support with the serialization code
5a8abc916 adding pickle support for select classes using serialization

git-subtree-dir: wrap
git-subtree-split: d37b8a972f6f3aa99a657831102fc22a73b59f21
  • Loading branch information
ayushbaid committed Mar 8, 2021
1 parent 8d49d7d commit a6fbd8d
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 1 deletion.
13 changes: 12 additions & 1 deletion gtwrap/pybind_wrapper.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,17 @@ def _wrap_method(self, method, cpp_class, prefix, suffix, method_suffix=""):
[]({class_inst} self, string serialized){{
gtsam::deserialize(serialized, *self);
}}, py::arg("serialized"))
'''.format(class_inst=cpp_class + '*'))
.def(py::pickle(
[](const {cpp_class} &a){{ // __getstate__
/* Returns a string that encodes the state of the object */
return py::make_tuple(gtsam::serialize(a));
}},
[](py::tuple t){{ // __setstate__
{cpp_class} obj;
gtsam::deserialize(t[0].cast<std::string>(), obj);
return obj;
}}))
'''.format(class_inst=cpp_class + '*', cpp_class=cpp_class))

is_method = isinstance(method, instantiator.InstantiatedMethod)
is_static = isinstance(method, parser.StaticMethod)
Expand Down Expand Up @@ -318,3 +328,4 @@ def wrap(self):
wrapped_namespace=wrapped_namespace,
boost_class_export=boost_class_export,
)

20 changes: 20 additions & 0 deletions tests/expected-python/geometry_pybind.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,16 @@ PYBIND11_MODULE(geometry_py, m_) {
[](gtsam::Point2* self, string serialized){
gtsam::deserialize(serialized, *self);
}, py::arg("serialized"))
.def(py::pickle(
[](const gtsam::Point2 &a){ // __getstate__
/* Returns a string that encodes the state of the object */
return py::make_tuple(gtsam::serialize(a));
},
[](py::tuple t){ // __setstate__
gtsam::Point2 obj;
gtsam::deserialize(t[0].cast<std::string>(), obj);
return obj;
}))
;

py::class_<gtsam::Point3, std::shared_ptr<gtsam::Point3>>(m_gtsam, "Point3")
Expand All @@ -61,6 +71,16 @@ PYBIND11_MODULE(geometry_py, m_) {
[](gtsam::Point3* self, string serialized){
gtsam::deserialize(serialized, *self);
}, py::arg("serialized"))
.def(py::pickle(
[](const gtsam::Point3 &a){ // __getstate__
/* Returns a string that encodes the state of the object */
return py::make_tuple(gtsam::serialize(a));
},
[](py::tuple t){ // __setstate__
gtsam::Point3 obj;
gtsam::deserialize(t[0].cast<std::string>(), obj);
return obj;
}))

.def_static("staticFunction",[](){return gtsam::Point3::staticFunction();})
.def_static("StaticFunctionRet",[]( double z){return gtsam::Point3::StaticFunctionRet(z);}, py::arg("z"));
Expand Down

0 comments on commit a6fbd8d

Please sign in to comment.