GCC Code Coverage Report


Directory: ./
File: include/pinocchio/bindings/python/utils/pickle-vector.hpp
Date: 2024-08-27 18:20:05
Exec Total Coverage
Lines: 2 13 15.4%
Branches: 0 30 0.0%

Line Branch Exec Source
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
12 namespace pinocchio
13 {
14 namespace python
15 {
16 ///
17 /// \brief Create a pickle interface for the std::vector and aligned vector
18 ///
19 /// \tparam VecType Vector Type to pickle
20 ///
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 280 static bool getstate_manages_dict()
50 {
51 280 return true;
52 }
53 };
54 } // namespace python
55 } // namespace pinocchio
56
57 #endif // ifndef __pinocchio_python_utils_pickle_vector_hpp__
58