GCC Code Coverage Report
Directory: ./ Exec Total Coverage
File: include/tsid/bindings/python/constraint/constraint-equality.hpp Lines: 28 32 87.5 %
Date: 2024-05-10 01:36:27 Branches: 41 82 50.0 %

Line Branch Exec Source
1
//
2
// Copyright (c) 2018 CNRS
3
//
4
// This file is part of tsid
5
// tsid is free software: you can redistribute it
6
// and/or modify it under the terms of the GNU Lesser General Public
7
// License as published by the Free Software Foundation, either version
8
// 3 of the License, or (at your option) any later version.
9
// tsid is distributed in the hope that it will be
10
// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
11
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
// General Lesser Public License for more details. You should have
13
// received a copy of the GNU Lesser General Public License along with
14
// tsid If not, see
15
// <http://www.gnu.org/licenses/>.
16
//
17
18
#ifndef __tsid_python_constriant_equality_hpp__
19
#define __tsid_python_constriant_equality_hpp__
20
21
#include "tsid/bindings/python/fwd.hpp"
22
23
#include "tsid/math/constraint-equality.hpp"
24
25
namespace tsid {
26
namespace python {
27
namespace bp = boost::python;
28
29
template <typename ConstraintEquality>
30
struct ConstraintEqPythonVisitor
31
    : public boost::python::def_visitor<
32
          ConstraintEqPythonVisitor<ConstraintEquality> > {
33
  template <class PyClass>
34
35
7
  void visit(PyClass& cl) const {
36
7
    cl.def(bp::init<std::string>((bp::arg("name")),
37
                                 "Default constructor with name."))
38

7
        .def(bp::init<std::string, unsigned int, unsigned int>(
39
            (bp::arg("name"), bp::arg("row"), bp::arg("col")),
40
            "Default constructor with name and size."))
41



14
        .def(bp::init<std::string, Eigen::MatrixXd, Eigen::VectorXd>(
42
            (bp::arg("name"), bp::arg("A"), bp::arg("b")),
43
            "Default constructor with name and constraint."))
44
45



14
        .add_property("rows", &ConstraintEquality::rows)
46
14
        .add_property("cols", &ConstraintEquality::cols)
47
7
        .def("resize", &ConstraintEquality::resize,
48
             (bp::arg("r"), bp::arg("c")), "Resize constraint size.")
49
50


14
        .add_property("isEquality", &ConstraintEquality::isEquality)
51
7
        .add_property("isInequality", &ConstraintEquality::isInequality)
52
7
        .add_property("isBound", &ConstraintEquality::isBound)
53
54
7
        .add_property("matrix", &ConstraintEqPythonVisitor::matrix)
55

7
        .add_property("vector", &ConstraintEqPythonVisitor::vector)
56
7
        .add_property("lowerBound", &ConstraintEqPythonVisitor::lowerBound)
57
7
        .add_property("upperBound", &ConstraintEqPythonVisitor::upperBound)
58
59
7
        .def("setMatrix",
60
             (bool(ConstraintEquality::*)(
61
                 const Eigen::Ref<const Eigen::MatrixXd>)) &
62
                 ConstraintEquality::setMatrix,
63
             bp::args("matrix"), "Set Matrix")
64
14
        .def("setVector",
65
             (bool(ConstraintEquality::*)(
66
                 const Eigen::Ref<const Eigen::VectorXd>)) &
67
                 ConstraintEquality::setVector,
68
             bp::args("vector"), "Set Vector")
69

14
        .def("setLowerBound",
70
             (bool(ConstraintEquality::*)(
71
                 const Eigen::Ref<const Eigen::VectorXd>)) &
72
                 ConstraintEquality::setLowerBound,
73
             bp::args("lb"), "Set LowerBound")
74

14
        .def("setUpperBound",
75
             (bool(ConstraintEquality::*)(
76
                 const Eigen::Ref<const Eigen::VectorXd>)) &
77
                 ConstraintEquality::setUpperBound,
78
             bp::args("ub"), "Set UpperBound")
79
80
        ;
81
7
  }
82
10100
  static Eigen::MatrixXd matrix(const ConstraintEquality& self) {
83
10100
    return self.matrix();
84
  }
85
5100
  static Eigen::VectorXd vector(const ConstraintEquality& self) {
86
5100
    return self.vector();
87
  }
88
  static Eigen::VectorXd lowerBound(const ConstraintEquality& self) {
89
    return self.lowerBound();
90
  }
91
  static Eigen::VectorXd upperBound(const ConstraintEquality& self) {
92
    return self.upperBound();
93
  }
94
95
7
  static void expose(const std::string& class_name) {
96
14
    std::string doc = "Constraint Equality info.";
97

7
    bp::class_<ConstraintEquality>(class_name.c_str(), doc.c_str(), bp::no_init)
98
        .def(ConstraintEqPythonVisitor<ConstraintEquality>());
99
100
7
    eigenpy::enableEigenPySpecific<Eigen::MatrixXd>();
101
7
  }
102
};
103
}  // namespace python
104
}  // namespace tsid
105
106
#endif  // ifndef __tsid_python_constriant_equality_hpp__