GCC Code Coverage Report


Directory: ./
File: include/pinocchio/bindings/python/algorithm/constraints/coulomb-friction-cone.hpp
Date: 2024-08-27 18:20:05
Exec Total Coverage
Lines: 37 37 100.0%
Branches: 42 84 50.0%

Line Branch Exec Source
1 //
2 // Copyright (c) 2022 INRIA
3 //
4
5 #ifndef __pinocchio_python_algorithm_constraints_coulomb_friction_cone_hpp__
6 #define __pinocchio_python_algorithm_constraints_coulomb_friction_cone_hpp__
7
8 #include "pinocchio/algorithm/constraints/coulomb-friction-cone.hpp"
9
10 #include "pinocchio/bindings/python/utils/cast.hpp"
11 #include "pinocchio/bindings/python/utils/copyable.hpp"
12
13 namespace pinocchio
14 {
15 namespace python
16 {
17 namespace bp = boost::python;
18
19 template<typename CoulombFrictionCone>
20 struct CoulombFrictionConePythonVisitor
21 : public boost::python::def_visitor<CoulombFrictionConePythonVisitor<CoulombFrictionCone>>
22 {
23 typedef typename CoulombFrictionCone::Scalar Scalar;
24 typedef CoulombFrictionCone Self;
25
26 template<class PyClass>
27 20 void visit(PyClass & cl) const
28 {
29
2/4
✓ Branch 2 taken 20 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 20 times.
✗ Branch 6 not taken.
20 cl.def(bp::init<const Scalar &>(bp::args("self", "mu"), "Default constructor"))
30
3/6
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 20 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 20 times.
✗ Branch 8 not taken.
40 .def(bp::init<const Self &>(bp::args("self", "other"), "Copy constructor"))
31
32
1/2
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
20 .def_readwrite("mu", &Self::mu, "Friction coefficient.")
33
34
1/2
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
40 .def(
35 "isInside", &Self::template isInside<context::Vector3s>, bp::args("self", "f"),
36 "Check whether a vector x lies within the cone.")
37
38
2/4
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 20 times.
✗ Branch 5 not taken.
40 .def(
39 "project", &Self::template project<context::Vector3s>, bp::args("self", "f"),
40 "Normal projection of a vector f onto the cone.")
41
2/4
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 20 times.
✗ Branch 5 not taken.
40 .def(
42 "weightedProject", &Self::template weightedProject<context::Vector3s>,
43 bp::args("self", "f", "R"), "Weighted projection of a vector f onto the cone.")
44
2/4
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 20 times.
✗ Branch 5 not taken.
40 .def(
45 "computeNormalCorrection", &Self::template computeNormalCorrection<context::Vector3s>,
46 bp::args("self", "v"),
47 "Compute the complementary shift associted to the Coulomb friction cone for "
48 "complementarity satisfaction in complementary problems.")
49
2/4
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 20 times.
✗ Branch 5 not taken.
40 .def(
50 "computeRadialProjection", &Self::template computeRadialProjection<context::Vector3s>,
51 bp::args("self", "f"),
52 "Compute the radial projection associted to the Coulomb friction cone.")
53
54
2/4
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 20 times.
✗ Branch 5 not taken.
40 .def("dual", &Self::dual, bp::arg("self"), "Returns the dual cone associated to this")
55
56
2/4
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 20 times.
✗ Branch 5 not taken.
20 .def("dim", Self::dim, "Returns the dimension of the cone.")
57
1/2
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
20 .staticmethod("dim")
58
59 #ifndef PINOCCHIO_PYTHON_SKIP_COMPARISON_OPERATIONS
60
1/2
✓ Branch 2 taken 20 times.
✗ Branch 3 not taken.
20 .def(bp::self == bp::self)
61
1/2
✓ Branch 2 taken 20 times.
✗ Branch 3 not taken.
20 .def(bp::self != bp::self)
62 #endif
63 ;
64 20 }
65
66 20 static void expose()
67 {
68 20 bp::class_<CoulombFrictionCone>(
69 "CoulombFrictionCone", "3d Coulomb friction cone.\n", bp::no_init)
70
1/2
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
20 .def(CoulombFrictionConePythonVisitor())
71 // .def(CastVisitor<CoulombFrictionCone>())
72 // .def(ExposeConstructorByCastVisitor<CoulombFrictionCone,::pinocchio::CoulombFrictionCone>())
73
1/2
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
20 .def(CopyableVisitor<CoulombFrictionCone>());
74 20 }
75 };
76
77 template<typename DualCoulombFrictionCone>
78 struct DualCoulombFrictionConePythonVisitor
79 : public boost::python::def_visitor<
80 DualCoulombFrictionConePythonVisitor<DualCoulombFrictionCone>>
81 {
82 typedef typename DualCoulombFrictionCone::Scalar Scalar;
83 typedef DualCoulombFrictionCone Self;
84
85 template<class PyClass>
86 20 void visit(PyClass & cl) const
87 {
88
2/4
✓ Branch 2 taken 20 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 20 times.
✗ Branch 6 not taken.
20 cl.def(bp::init<const Scalar &>(bp::args("self", "mu"), "Default constructor"))
89
3/6
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 20 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 20 times.
✗ Branch 8 not taken.
40 .def(bp::init<const Self &>(bp::args("self", "other"), "Copy constructor"))
90
91
1/2
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
20 .def_readwrite("mu", &Self::mu, "Friction coefficient.")
92
93
1/2
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
40 .def(
94 "isInside", &Self::template isInside<context::Vector3s>, bp::args("self", "v"),
95 "Check whether a vector x lies within the cone.")
96
97
2/4
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 20 times.
✗ Branch 5 not taken.
40 .def(
98 "project", &Self::template project<context::Vector3s>, bp::args("self", "v"),
99 "Project a vector v onto the cone.")
100
101
2/4
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 20 times.
✗ Branch 5 not taken.
40 .def("dual", &Self::dual, bp::arg("self"), "Returns the dual cone associated to this.")
102
103
2/4
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 20 times.
✗ Branch 5 not taken.
20 .def("dim", Self::dim, "Returns the dimension of the cone.")
104
1/2
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
20 .staticmethod("dim")
105
106 #ifndef PINOCCHIO_PYTHON_SKIP_COMPARISON_OPERATIONS
107
1/2
✓ Branch 2 taken 20 times.
✗ Branch 3 not taken.
20 .def(bp::self == bp::self)
108
1/2
✓ Branch 2 taken 20 times.
✗ Branch 3 not taken.
20 .def(bp::self != bp::self)
109 #endif
110 ;
111 20 }
112
113 20 static void expose()
114 {
115 20 bp::class_<DualCoulombFrictionCone>(
116 "DualCoulombFrictionCone", "Dual cone of the 3d Coulomb friction cone.\n", bp::no_init)
117
1/2
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
20 .def(DualCoulombFrictionConePythonVisitor())
118 // .def(CastVisitor<DualCoulombFrictionCone>())
119 // .def(ExposeConstructorByCastVisitor<DualCoulombFrictionCone,::pinocchio::DualCoulombFrictionCone>())
120
1/2
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
20 .def(CopyableVisitor<DualCoulombFrictionCone>());
121 20 }
122 };
123
124 } // namespace python
125 } // namespace pinocchio
126
127 #endif // ifndef __pinocchio_python_algorithm_constraints_coulomb_friction_cone_hpp__
128