aligator  0.14.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 ClonePythonVisitor : bp::def_visitor<ClonePythonVisitor<T>> {
16 template <typename PyT> void visit(PyT &obj) const {
17 obj.def("clone", &T::clone, bp::args("self"), "Clone the object.");
18 }
19};
20
21template <typename T>
22struct CreateDataPythonVisitor : bp::def_visitor<CreateDataPythonVisitor<T>> {
23 template <typename Pyclass> void visit(Pyclass &obj) const {
24 obj.def("createData", &T::createData, bp::args("self"),
25 "Create a data object.");
26 }
27};
28
35template <typename T, typename TWrapper>
37 : bp::def_visitor<CreateDataPolymorphicPythonVisitor<T, TWrapper>> {
38 template <typename PyClass> void visit(PyClass &obj) const {
39 obj.def("createData", &T::createData, &TWrapper::default_createData,
40 bp::args("self"), "Create a data object.");
41 }
42};
43
44template <typename T>
45struct CopyableVisitor : bp::def_visitor<CopyableVisitor<T>> {
46 template <typename PyClass> void visit(PyClass &obj) const {
47 obj.def("copy", &copy, bp::arg("self"), "Returns a copy of this.");
48 }
49
50private:
51 static T copy(const T &self) { return T(self); }
52};
53
54template <typename T>
55struct PrintableVisitor : bp::def_visitor<PrintableVisitor<T>> {
56 template <typename PyClass> void visit(PyClass &obj) const {
57 obj.def(bp::self_ns::str(bp::self)).def(bp::self_ns::repr(bp::self));
58 }
59};
60
61template <typename T>
62struct PrintAddressVisitor : bp::def_visitor<PrintAddressVisitor<T>> {
63 template <typename PyClass> void visit(PyClass &obj) const {
64 obj.def("printAddress", printAddress, bp::args("self"));
65 }
66 static void *getAddress(const T &a) { return (void *)&a; }
67 static void printAddress(const T &a) {
68 printf("Address: %p\n", getAddress(a));
69 }
70};
71
72// fwd declaration
73template <typename SolverType> struct SolverVisitor;
74
75} // namespace python
76} // namespace aligator
The Python bindings.
Definition blk-matrix.hpp:5
Main package namespace.
void visit(PyClass &obj) const
Definition visitors.hpp:46
void visit(PyClass &obj) const
Definition visitors.hpp:63
static void * getAddress(const T &a)
Definition visitors.hpp:66
static void printAddress(const T &a)
Definition visitors.hpp:67
void visit(PyClass &obj) const
Definition visitors.hpp:56