test_dep.cpp
Go to the documentation of this file.
1 /*
2  * Copyright 2010,
3  * François Bleibel,
4  * Olivier Stasse,
5  *
6  * CNRS/AIST
7  *
8  */
9 
10 /* -------------------------------------------------------------------------- */
11 /* --- INCLUDES ------------------------------------------------------------- */
12 /* -------------------------------------------------------------------------- */
15 
16 #include <iostream>
17 using namespace std;
18 using namespace dynamicgraph;
19 
20 template <class Res = double>
21 class DummyClass {
22  public:
23  DummyClass(void) : res(), appel(0), timedata(0) {}
24 
25  Res &fun(Res &res, int t) {
26  appel++;
27  timedata = t;
28 
29  cout << "Inside " << endl;
30  for (list<SignalTimeDependent<double, int> *>::iterator it =
31  inputsig.begin();
32  it != inputsig.end(); ++it) {
33  cout << *(*it) << endl;
34  (*it)->access(timedata);
35  }
36  for (list<SignalTimeDependent<dynamicgraph::Vector, int> *>::iterator it =
37  inputsigV.begin();
38  it != inputsigV.end(); ++it) {
39  cout << *(*it) << endl;
40  (*it)->access(timedata);
41  }
42 
43  return res = (*this)();
44  }
45 
46  list<SignalTimeDependent<double, int> *> inputsig;
47  list<SignalTimeDependent<dynamicgraph::Vector, int> *> inputsigV;
48 
49  void add(SignalTimeDependent<double, int> &sig) { inputsig.push_back(&sig); }
51  inputsigV.push_back(&sig);
52  }
53 
54  Res operator()(void);
55 
56  Res res;
57  int appel;
58  int timedata;
59 };
60 
61 template <class Res>
63  return this->res;
64 }
65 
66 template <>
67 double DummyClass<double>::operator()(void) {
68  res = appel * timedata;
69  return res;
70 }
71 template <>
73  res.resize(3);
74  res.fill(appel * timedata);
75  return res;
76 }
77 
78 // void dispArray( const SignalArray<int> &ar )
79 // {
80 // for( unsigned int i=0;i<ar.rank;++i ) cout<<*ar.array[i]<<endl;
81 // }
82 
83 #include <vector>
84 int main(void) {
85  DummyClass<double> pro1, pro3, pro5;
86  DummyClass<dynamicgraph::Vector> pro2, pro4, pro6;
87 
90 
93  sig4 << sig4 << sig4 << sig6, "Sig2");
94  SignalTimeDependent<double, int> sig3(sig2 << sig5 << sig6, "Sig3");
96  boost::bind(&DummyClass<double>::fun, pro1, _1, _2), sig2 << sig3,
97  "Sig1");
98 
99  // cout << "--- Test Array ------ "<<endl;
100  // SignalArray<int> tarr(12);
101  // tarr<<sig3<<sig2;//+sig2+sig3;
102  // dispArray(sig4<<sig2<<sig3);
103  // dispArray(tarr);
104 
105  // sig1.set( &DummyClass<double>::fun,pro1 );
106  sig2.setFunction(
107  boost::bind(&DummyClass<dynamicgraph::Vector>::fun, pro2, _1, _2));
108  sig3.setFunction(boost::bind(&DummyClass<double>::fun, pro3, _1, _2));
109  sig4.setFunction(
110  boost::bind(&DummyClass<dynamicgraph::Vector>::fun, pro4, _1, _2));
111  sig5.setFunction(boost::bind(&DummyClass<double>::fun, pro5, _1, _2));
112  sig6.setFunction(
113  boost::bind(&DummyClass<dynamicgraph::Vector>::fun, pro6, _1, _2));
114 
115  // sig1.addDependency(sig2);
116  // sig1.addDependency(sig3);
117  // sig2.addDependency(sig4);
118  // sig2.addDependency(sig4);
119  // sig2.addDependency(sig4);
120  // sig3.addDependency(sig2);
121  // sig4.addDependency(sig5);
122  // sig2.addDependency(sig6);
123  // sig3.addDependency(sig5);
124  // sig3.addDependency(sig6);
125 
126  pro1.add(sig2);
127  pro1.add(sig3);
128  pro2.add(sig4);
129  pro2.add(sig4);
130  pro2.add(sig4);
131  pro3.add(sig2);
132  pro4.add(sig5);
133  pro2.add(sig6);
134  pro3.add(sig5);
135  pro3.add(sig6);
136 
137  // sig5.setDependencyType(TimeDependency<int>::ALWAYS_READY);
138  // sig6.setDependencyType(TimeDependency<int>::BOOL_DEPENDENT);
139 
140  sig6.setReady();
141 
142  sig1.displayDependencies(cout) << endl;
143 
144  cout << "Needs update?" << endl << sig1.needUpdate(2) << endl;
145  sig1.access(2);
146  sig1.displayDependencies(cout) << endl;
147  sig2.access(4);
148  sig1.displayDependencies(cout) << endl;
149  sig1.access(4);
150  sig1.displayDependencies(cout) << endl;
151  sig1.needUpdate(6);
152  sig1.needUpdate(6);
153 
154  return 0;
155 }
const T & access(const Time &t1)
Eigen::VectorXd Vector
Signal< dynamicgraph::Matrix, int > sig("matrix")
T operator()()
Definition: test_dep.cpp:62
res
void add(sigDouble_t &sig)
Transform3f t
int main(void)
Definition: test_dep.cpp:84
void setReady(const bool sready=true)
dynamicgraph::Vector & fun(dynamicgraph::Vector &res, double)
Definition: test_signal.cpp:33
virtual bool needUpdate(const Time &t) const
virtual void setFunction(boost::function2< T &, T &, Time > t, Mutex *mutexref=NULL)
std::ostream & displayDependencies(std::ostream &os, const int depth=-1, std::string space="", std::string next1="", std::string next2="") const


sot-core
Author(s): Olivier Stasse, ostasse@laas.fr
autogenerated on Wed Jun 21 2023 02:51:26