pinocchio  3.7.0
A fast and flexible implementation of Rigid Body Dynamics algorithms and their analytical derivatives
 
Loading...
Searching...
No Matches
pickle-vector.hpp
1//
2// Copyright (c) 2019-2020 CNRS INRIA
3//
4
5#ifndef __pinocchio_python_utils_pickle_vector_hpp__
6#define __pinocchio_python_utils_pickle_vector_hpp__
7
8#include <boost/python.hpp>
9#include <boost/python/tuple.hpp>
10#include <boost/python/stl_iterator.hpp>
11
12namespace pinocchio
13{
14 namespace python
15 {
21 template<typename VecType>
22 struct PickleVector : boost::python::pickle_suite
23 {
24 static boost::python::tuple getinitargs(const VecType &)
25 {
26 return boost::python::make_tuple();
27 }
28
29 static boost::python::tuple getstate(boost::python::object op)
30 {
31 return boost::python::make_tuple(
32 boost::python::list(boost::python::extract<const VecType &>(op)()));
33 }
34
35 static void setstate(boost::python::object op, boost::python::tuple tup)
36 {
37 if (boost::python::len(tup) > 0)
38 {
39 VecType & o = boost::python::extract<VecType &>(op)();
40 boost::python::stl_input_iterator<typename VecType::value_type> begin(tup[0]), end;
41 while (begin != end)
42 {
43 o.push_back(*begin);
44 ++begin;
45 }
46 }
47 }
48
49 static bool getstate_manages_dict()
50 {
51 return true;
52 }
53 };
54 } // namespace python
55} // namespace pinocchio
56
57#endif // ifndef __pinocchio_python_utils_pickle_vector_hpp__
Main pinocchio namespace.
Definition treeview.dox:11
Create a pickle interface for the std::vector and aligned vector.