YARP
Yet Another Robot Platform
SensorMeasurements.cpp
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT)
3  * SPDX-License-Identifier: BSD-3-Clause
4  */
5 
6 // Autogenerated by Thrift Compiler (0.14.1-yarped)
7 //
8 // This is an automatically generated file.
9 // It could get re-generated if the ALLOW_IDL_GENERATION flag is on.
10 
11 #include <SensorMeasurements.h>
12 
13 // Default constructor
15  WirePortable(),
16  measurements()
17 {
18 }
19 
20 // Constructor with field values
21 SensorMeasurements::SensorMeasurements(const std::vector<SensorMeasurement>& measurements) :
22  WirePortable(),
23  measurements(measurements)
24 {
25 }
26 
27 // Read structure on a Wire
29 {
30  if (!read_measurements(reader)) {
31  return false;
32  }
33  return !reader.isError();
34 }
35 
36 // Read structure on a Connection
38 {
39  yarp::os::idl::WireReader reader(connection);
40  if (!reader.readListHeader(1)) {
41  return false;
42  }
43  return read(reader);
44 }
45 
46 // Write structure on a Wire
48 {
49  if (!write_measurements(writer)) {
50  return false;
51  }
52  return !writer.isError();
53 }
54 
55 // Write structure on a Connection
57 {
58  yarp::os::idl::WireWriter writer(connection);
59  if (!writer.writeListHeader(1)) {
60  return false;
61  }
62  return write(writer);
63 }
64 
65 // Convert to a printable string
66 std::string SensorMeasurements::toString() const
67 {
69  b.read(*this);
70  return b.toString();
71 }
72 
73 // Editor: default constructor
75 {
76  group = 0;
77  obj_owned = true;
78  obj = new SensorMeasurements;
79  dirty_flags(false);
80  yarp().setOwner(*this);
81 }
82 
83 // Editor: constructor with base class
85 {
86  group = 0;
87  obj_owned = false;
88  edit(obj, false);
89  yarp().setOwner(*this);
90 }
91 
92 // Editor: destructor
94 {
95  if (obj_owned) {
96  delete obj;
97  }
98 }
99 
100 // Editor: edit
102 {
103  if (obj_owned) {
104  delete this->obj;
105  }
106  this->obj = &obj;
107  obj_owned = false;
108  dirty_flags(dirty);
109  return true;
110 }
111 
112 // Editor: validity check
114 {
115  return obj != nullptr;
116 }
117 
118 // Editor: state
120 {
121  return *obj;
122 }
123 
124 // Editor: grouping begin
126 {
127  group++;
128 }
129 
130 // Editor: grouping end
132 {
133  group--;
134  if (group == 0 && is_dirty) {
135  communicate();
136  }
137 }
138 // Editor: measurements setter
139 void SensorMeasurements::Editor::set_measurements(const std::vector<SensorMeasurement>& measurements)
140 {
141  will_set_measurements();
142  obj->measurements = measurements;
143  mark_dirty_measurements();
144  communicate();
145  did_set_measurements();
146 }
147 
148 // Editor: measurements setter (list)
150 {
151  will_set_measurements();
152  obj->measurements[index] = elem;
153  mark_dirty_measurements();
154  communicate();
155  did_set_measurements();
156 }
157 
158 // Editor: measurements getter
159 const std::vector<SensorMeasurement>& SensorMeasurements::Editor::get_measurements() const
160 {
161  return obj->measurements;
162 }
163 
164 // Editor: measurements will_set
166 {
167  return true;
168 }
169 
170 // Editor: measurements did_set
172 {
173  return true;
174 }
175 
176 // Editor: clean
178 {
179  dirty_flags(false);
180 }
181 
182 // Editor: read
184 {
185  if (!isValid()) {
186  return false;
187  }
188  yarp::os::idl::WireReader reader(connection);
189  reader.expectAccept();
190  if (!reader.readListHeader()) {
191  return false;
192  }
193  int len = reader.getLength();
194  if (len == 0) {
195  yarp::os::idl::WireWriter writer(reader);
196  if (writer.isNull()) {
197  return true;
198  }
199  if (!writer.writeListHeader(1)) {
200  return false;
201  }
202  writer.writeString("send: 'help' or 'patch (param1 val1) (param2 val2)'");
203  return true;
204  }
205  std::string tag;
206  if (!reader.readString(tag)) {
207  return false;
208  }
209  if (tag == "help") {
210  yarp::os::idl::WireWriter writer(reader);
211  if (writer.isNull()) {
212  return true;
213  }
214  if (!writer.writeListHeader(2)) {
215  return false;
216  }
217  if (!writer.writeTag("many", 1, 0)) {
218  return false;
219  }
220  if (reader.getLength() > 0) {
221  std::string field;
222  if (!reader.readString(field)) {
223  return false;
224  }
225  if (field == "measurements") {
226  if (!writer.writeListHeader(1)) {
227  return false;
228  }
229  if (!writer.writeString("std::vector<SensorMeasurement> measurements")) {
230  return false;
231  }
232  }
233  }
234  if (!writer.writeListHeader(2)) {
235  return false;
236  }
237  writer.writeString("*** Available fields:");
238  writer.writeString("measurements");
239  return true;
240  }
241  bool nested = true;
242  bool have_act = false;
243  if (tag != "patch") {
244  if (((len - 1) % 2) != 0) {
245  return false;
246  }
247  len = 1 + ((len - 1) / 2);
248  nested = false;
249  have_act = true;
250  }
251  for (int i = 1; i < len; ++i) {
252  if (nested && !reader.readListHeader(3)) {
253  return false;
254  }
255  std::string act;
256  std::string key;
257  if (have_act) {
258  act = tag;
259  } else if (!reader.readString(act)) {
260  return false;
261  }
262  if (!reader.readString(key)) {
263  return false;
264  }
265  if (key == "measurements") {
266  will_set_measurements();
267  if (!obj->nested_read_measurements(reader)) {
268  return false;
269  }
270  did_set_measurements();
271  } else {
272  // would be useful to have a fallback here
273  }
274  }
275  reader.accept();
276  yarp::os::idl::WireWriter writer(reader);
277  if (writer.isNull()) {
278  return true;
279  }
280  writer.writeListHeader(1);
281  writer.writeVocab32('o', 'k');
282  return true;
283 }
284 
285 // Editor: write
287 {
288  if (!isValid()) {
289  return false;
290  }
291  yarp::os::idl::WireWriter writer(connection);
292  if (!writer.writeListHeader(dirty_count + 1)) {
293  return false;
294  }
295  if (!writer.writeString("patch")) {
296  return false;
297  }
298  if (is_dirty_measurements) {
299  if (!writer.writeListHeader(3)) {
300  return false;
301  }
302  if (!writer.writeString("set")) {
303  return false;
304  }
305  if (!writer.writeString("measurements")) {
306  return false;
307  }
308  if (!obj->nested_write_measurements(writer)) {
309  return false;
310  }
311  }
312  return !writer.isError();
313 }
314 
315 // Editor: send if possible
316 void SensorMeasurements::Editor::communicate()
317 {
318  if (group != 0) {
319  return;
320  }
321  if (yarp().canWrite()) {
322  yarp().write(*this);
323  clean();
324  }
325 }
326 
327 // Editor: mark dirty overall
328 void SensorMeasurements::Editor::mark_dirty()
329 {
330  is_dirty = true;
331 }
332 
333 // Editor: measurements mark_dirty
334 void SensorMeasurements::Editor::mark_dirty_measurements()
335 {
336  if (is_dirty_measurements) {
337  return;
338  }
339  dirty_count++;
340  is_dirty_measurements = true;
341  mark_dirty();
342 }
343 
344 // Editor: dirty_flags
345 void SensorMeasurements::Editor::dirty_flags(bool flag)
346 {
347  is_dirty = flag;
348  is_dirty_measurements = flag;
349  dirty_count = flag ? 1 : 0;
350 }
351 
352 // read measurements field
353 bool SensorMeasurements::read_measurements(yarp::os::idl::WireReader& reader)
354 {
355  measurements.clear();
356  uint32_t _size0;
357  yarp::os::idl::WireState _etype3;
358  reader.readListBegin(_etype3, _size0);
359  measurements.resize(_size0);
360  for (size_t _i4 = 0; _i4 < _size0; ++_i4) {
361  if (!reader.readNested(measurements[_i4])) {
362  reader.fail();
363  return false;
364  }
365  }
366  reader.readListEnd();
367  return true;
368 }
369 
370 // write measurements field
371 bool SensorMeasurements::write_measurements(const yarp::os::idl::WireWriter& writer) const
372 {
373  if (!writer.writeListBegin(BOTTLE_TAG_LIST, static_cast<uint32_t>(measurements.size()))) {
374  return false;
375  }
376  for (const auto& _item5 : measurements) {
377  if (!writer.writeNested(_item5)) {
378  return false;
379  }
380  }
381  if (!writer.writeListEnd()) {
382  return false;
383  }
384  return true;
385 }
386 
387 // read (nested) measurements field
388 bool SensorMeasurements::nested_read_measurements(yarp::os::idl::WireReader& reader)
389 {
390  measurements.clear();
391  uint32_t _size6;
392  yarp::os::idl::WireState _etype9;
393  reader.readListBegin(_etype9, _size6);
394  measurements.resize(_size6);
395  for (size_t _i10 = 0; _i10 < _size6; ++_i10) {
396  if (!reader.readNested(measurements[_i10])) {
397  reader.fail();
398  return false;
399  }
400  }
401  reader.readListEnd();
402  return true;
403 }
404 
405 // write (nested) measurements field
406 bool SensorMeasurements::nested_write_measurements(const yarp::os::idl::WireWriter& writer) const
407 {
408  if (!writer.writeListBegin(BOTTLE_TAG_LIST, static_cast<uint32_t>(measurements.size()))) {
409  return false;
410  }
411  for (const auto& _item11 : measurements) {
412  if (!writer.writeNested(_item11)) {
413  return false;
414  }
415  }
416  if (!writer.writeListEnd()) {
417  return false;
418  }
419  return true;
420 }
#define BOTTLE_TAG_LIST
Definition: Bottle.h:28
bool write(yarp::os::ConnectionWriter &connection) const override
Write this object to a network connection.
bool edit(SensorMeasurements &obj, bool dirty=true)
void set_measurements(const std::vector< SensorMeasurement > &measurements)
bool read(yarp::os::ConnectionReader &connection) override
Read this object from a network connection.
const std::vector< SensorMeasurement > & get_measurements() const
SensorMeasurements & state()
std::vector< SensorMeasurement > measurements
std::string toString() const
bool write(const yarp::os::idl::WireWriter &writer) const override
bool read(yarp::os::idl::WireReader &reader) override
A simple collection of objects that can be described and transmitted in a portable way.
Definition: Bottle.h:74
bool read(ConnectionReader &reader) override
Set the bottle's value based on input from a network connection.
Definition: Bottle.cpp:240
std::string toString() const override
Gives a human-readable textual representation of the bottle.
Definition: Bottle.cpp:211
An interface for reading from a network connection.
An interface for writing to a network connection.
yarp::os::WireLink & yarp()
Get YARP state associated with this object.
Definition: Wire.h:29
IDL-friendly connection reader.
Definition: WireReader.h:30
bool readNested(WirePortable &obj)
Definition: WireReader.cpp:88
bool readString(std::string &str, bool *is_vocab=nullptr)
Definition: WireReader.cpp:382
void readListBegin(yarp::os::idl::WireState &nstate, std::uint32_t &len)
Definition: WireReader.cpp:632
IDL-friendly state.
Definition: WireState.h:19
IDL-friendly connection writer.
Definition: WireWriter.h:30
bool writeVocab32(yarp::conf::vocab32_t x) const
Definition: WireWriter.cpp:141
bool writeListHeader(int len) const
Definition: WireWriter.cpp:206
bool writeTag(const char *tag, int split, int len) const
Definition: WireWriter.cpp:164
bool writeListBegin(int tag, std::uint32_t len) const
Definition: WireWriter.cpp:227
bool writeString(const std::string &tag) const
Definition: WireWriter.cpp:189
bool writeNested(const WirePortable &obj) const
Definition: WireWriter.cpp:62
bool isValid()
Check if time is valid (non-zero).
Definition: Time.cpp:314
The main, catch-all namespace for YARP.
Definition: dirs.h:16