aligator  0.15.0
A primal-dual augmented Lagrangian-type solver for nonlinear trajectory optimization.
Loading...
Searching...
No Matches
visitors.hpp
Go to the documentation of this file.
1
3#pragma once
4
5#include <eigenpy/fwd.hpp>
6
7namespace aligator {
8namespace python {
9namespace bp = boost::python;
10
11// fwd-declaration
12bp::arg operator""_a(const char *argname, std::size_t);
13
14template <typename T>
15struct CreateDataPythonVisitor : bp::def_visitor<CreateDataPythonVisitor<T>> {
16 template <typename Pyclass> void visit(Pyclass &obj) const {
17 obj.def("createData", &T::createData, bp::args("self"),
18 "Create a data object.");
19 }
20};
21
28template <typename T, typename TWrapper>
30 : bp::def_visitor<CreateDataPolymorphicPythonVisitor<T, TWrapper>> {
31 template <typename PyClass> void visit(PyClass &obj) const {
32 obj.def("createData", &T::createData, &TWrapper::default_createData,
33 bp::args("self"), "Create a data object.");
34 }
35};
36
37template <typename T>
38struct CopyableVisitor : bp::def_visitor<CopyableVisitor<T>> {
39 template <typename PyClass> void visit(PyClass &obj) const {
40 obj.def("copy", &copy, bp::arg("self"), "Returns a copy of this.")
41 .def("__copy__", &copy, bp::arg("self"), "Returns a copy of this.");
42 }
43
44private:
45 static T copy(const T &self) { return T(self); }
46};
47
48template <typename T>
49struct PrintableVisitor : bp::def_visitor<PrintableVisitor<T>> {
50 template <typename PyClass> void visit(PyClass &obj) const {
51 obj.def(bp::self_ns::str(bp::self)).def(bp::self_ns::repr(bp::self));
52 }
53};
54
55template <typename T>
56struct PrintAddressVisitor : bp::def_visitor<PrintAddressVisitor<T>> {
57 template <typename PyClass> void visit(PyClass &obj) const {
58 obj.def("printAddress", printAddress, bp::args("self"));
59 }
60 static void *getAddress(const T &a) { return (void *)&a; }
61 static void printAddress(const T &a) {
62 printf("Address: %p\n", getAddress(a));
63 }
64};
65
66// fwd declaration
67template <typename SolverType> struct SolverVisitor;
68
69} // namespace python
70} // namespace aligator
The Python bindings.
Definition blk-matrix.hpp:5
Main package namespace.
void visit(PyClass &obj) const
Definition visitors.hpp:39
void visit(PyClass &obj) const
Definition visitors.hpp:57
static void * getAddress(const T &a)
Definition visitors.hpp:60
static void printAddress(const T &a)
Definition visitors.hpp:61
void visit(PyClass &obj) const
Definition visitors.hpp:50