9 #ifndef SOT_CORE_VARIADICOP_HH 10 #define SOT_CORE_VARIADICOP_HH 17 #include <dynamic-graph/linear-algebra.h> 20 #include <dynamic-graph/all-signals.h> 21 #include <dynamic-graph/entity.h> 29 #include <boost/function.hpp> 38 template <
typename Tin,
typename Tout,
typename Time>
45 : Entity(name),
SOUT(className +
"(" + name +
")::output(" +
46 getTypeOutName() +
")::sout"),
47 baseSigname(className +
"(" + name +
")::input(" + getTypeInName() +
49 signalRegistration(
SOUT);
53 for (std::size_t i = 0; i <
signalsIN.size(); ++i) {
59 SignalTimeDependent<Tout, int>
SOUT;
62 std::ostringstream oss;
89 const std::size_t oldSize =
signalsIN.size();
90 for (std::size_t i = n; i < oldSize; ++i)
95 for (std::size_t i = oldSize; i < (std::size_t)n; ++i) {
97 std::ostringstream oss;
98 oss << baseSigname <<
"sin" << i;
116 void _removeSignal(
const std::size_t i) {
118 signalDeregistration(signalsIN[i]->shortName());
119 SOUT.removeDependency(*signalsIN[i]);
122 void _declareSignal(signal_t *s) {
123 signalRegistration(*s);
124 SOUT.addDependency(*s);
126 const std::string baseSigname;
129 template <
typename Operator>
131 typename Operator::Tout, int> {
133 typedef typename Operator::Tin Tin;
134 typedef typename Operator::Tout Tout;
147 VariadicOp(
const std::string &name) : Base(name, CLASS_NAME) {
148 this->
SOUT.setFunction(boost::bind(&Self::computeOperation,
this, _1, _2));
149 op.initialize(
this, this->commandMap);
156 std::vector<const Tin *> in(this->
signalsIN.size());
157 for (std::size_t i = 0; i < this->
signalsIN.size(); ++i) {
158 const Tin &x = this->
signalsIN[i]->access(time);
168 #endif // #ifndef SOT_CORE_VARIADICOP_HH void setSignalNumber(const int &n)
Definition: variadic-op.hh:87
static std::string getTypeInName(void)
static std::string getTypeOutName(void)
VariadicAbstract< Tin, Tout, int > Base
Definition: variadic-op.hh:138
std::vector< signal_t * > signalsIN
Definition: variadic-op.hh:111
VariadicOp(const std::string &name)
Definition: variadic-op.hh:147
Tout & computeOperation(Tout &res, int time)
Definition: variadic-op.hh:155
std::size_t addSignal()
Definition: variadic-op.hh:61
Definition: exception-abstract.hh:35
Definition: variadic-op.hh:39
VariadicAbstract(const std::string &name, const std::string &className)
Definition: variadic-op.hh:44
SignalPtr< Value, int > signal_t
Definition: variadic-op.hh:110
virtual ~VariadicAbstract(void)
Definition: variadic-op.hh:52
SignalTimeDependent< Tout, int > SOUT
Definition: variadic-op.hh:56
void removeSignal()
Definition: variadic-op.hh:80
virtual ~VariadicOp(void)
Definition: variadic-op.hh:152
std::string getDocString() const
Definition: variadic-op.hh:145
std::size_t addSignal(const std::string &name)
Definition: variadic-op.hh:67
Definition: variadic-op.hh:130
Definition: abstract-sot-external-interface.hh:17
static const std::string CLASS_NAME
Definition: variadic-op.hh:143
int getSignalNumber() const
Definition: variadic-op.hh:107
virtual const std::string & getClassName() const
Definition: variadic-op.hh:144