signal.hh
Go to the documentation of this file.
1 // Copyright 2020, Joseph Mirabel, LAAS-CNRS.
2 
3 #include <sstream>
4 
5 #include <boost/python.hpp>
6 
7 #include <dynamic-graph/signal-base.h>
8 #include <dynamic-graph/signal-ptr.h>
9 #include <dynamic-graph/signal-time-dependent.h>
10 #include <dynamic-graph/signal.h>
11 
13 
14 namespace dynamicgraph {
15 namespace python {
16 
17 template <typename T, typename Time>
18 auto exposeSignal(const std::string& name) {
19  namespace bp = boost::python;
20 
21  typedef Signal<T, Time> S_t;
22  bp::class_<S_t, bp::bases<SignalBase<Time> >, boost::noncopyable> obj(name.c_str(), bp::init<std::string>());
23  obj.add_property("value", bp::make_function(&S_t::accessCopy, bp::return_value_policy<bp::copy_const_reference>()),
24  &S_t::setConstant, // TODO check the setter
25  "the signal value.\n"
26  "warning: for Eigen objects, sig.value[0] = 1. may not work).");
27  return obj;
28 }
29 
30 template <typename T, typename Time>
31 auto exposeSignalWrapper(const std::string& name) {
32  namespace bp = boost::python;
33 
34  typedef SignalWrapper<T, Time> S_t;
35  bp::class_<S_t, bp::bases<Signal<T, Time> >, boost::noncopyable> obj(name.c_str(), bp::no_init);
36  return obj;
37 }
38 
39 template <typename T, typename Time>
40 auto exposeSignalPtr(const std::string& name) {
41  namespace bp = boost::python;
42 
43  typedef SignalPtr<T, Time> S_t;
44  bp::class_<S_t, bp::bases<Signal<T, Time> >, boost::noncopyable> obj(name.c_str(), bp::no_init);
45  return obj;
46 }
47 
48 template <typename T, typename Time>
49 auto exposeSignalTimeDependent(const std::string& name) {
50  namespace bp = boost::python;
51 
52  typedef SignalTimeDependent<T, Time> S_t;
53  bp::class_<S_t, bp::bases<Signal<T, Time> >, boost::noncopyable> obj(name.c_str(), bp::no_init);
54  return obj;
55 }
56 
57 template <typename T, typename Time>
58 void exposeSignalsOfType(const std::string& name) {
59  exposeSignal<T, Time>("Signal" + name);
60  exposeSignalPtr<T, Time>("SignalPtr" + name);
61  exposeSignalWrapper<T, Time>("SignalWrapper" + name);
62  exposeSignalTimeDependent<T, Time>("SignalTimeDependent" + name);
63 }
64 
65 } // namespace python
66 } // namespace dynamicgraph
dynamicgraph::python::exposeSignalWrapper
auto exposeSignalWrapper(const std::string &name)
Definition: signal.hh:31
dynamicgraph::python::SignalWrapper
Definition: signal-wrapper.hh:30
dynamicgraph
Definition: convert-dg-to-py.hh:8
dynamicgraph::python::exposeSignalTimeDependent
auto exposeSignalTimeDependent(const std::string &name)
Definition: signal.hh:49
signal-wrapper.hh
dynamicgraph::python::exposeSignalPtr
auto exposeSignalPtr(const std::string &name)
Definition: signal.hh:40
dynamicgraph::python::exposeSignal
auto exposeSignal(const std::string &name)
Definition: signal.hh:18
dynamicgraph::python::exposeSignalsOfType
void exposeSignalsOfType(const std::string &name)
Definition: signal.hh:58