grasp
All Data Structures Namespaces Functions Modules
SurfaceMesh.cpp
1 // This is an automatically-generated file.
2 // It could get re-generated if the ALLOW_IDL_GENERATION flag is on.
3 
4 #include <iCub/data3D/SurfaceMesh.h>
5 
6 namespace iCub { namespace data3D {
7 bool SurfaceMesh::read_meshName(yarp::os::idl::WireReader& reader) {
8  if (!reader.readString(meshName)) {
9  reader.fail();
10  return false;
11  }
12  return true;
13 }
14 bool SurfaceMesh::nested_read_meshName(yarp::os::idl::WireReader& reader) {
15  if (!reader.readString(meshName)) {
16  reader.fail();
17  return false;
18  }
19  return true;
20 }
21 bool SurfaceMesh::read_points(yarp::os::idl::WireReader& reader) {
22  {
23  points.clear();
24  uint32_t _size12;
25  yarp::os::idl::WireState _etype15;
26  reader.readListBegin(_etype15, _size12);
27  points.resize(_size12);
28  uint32_t _i16;
29  for (_i16 = 0; _i16 < _size12; ++_i16)
30  {
31  if (!reader.readNested(points[_i16])) {
32  reader.fail();
33  return false;
34  }
35  }
36  reader.readListEnd();
37  }
38  return true;
39 }
40 bool SurfaceMesh::nested_read_points(yarp::os::idl::WireReader& reader) {
41  {
42  points.clear();
43  uint32_t _size17;
44  yarp::os::idl::WireState _etype20;
45  reader.readListBegin(_etype20, _size17);
46  points.resize(_size17);
47  uint32_t _i21;
48  for (_i21 = 0; _i21 < _size17; ++_i21)
49  {
50  if (!reader.readNested(points[_i21])) {
51  reader.fail();
52  return false;
53  }
54  }
55  reader.readListEnd();
56  }
57  return true;
58 }
59 bool SurfaceMesh::read_rgbColour(yarp::os::idl::WireReader& reader) {
60  {
61  rgbColour.clear();
62  uint32_t _size22;
63  yarp::os::idl::WireState _etype25;
64  reader.readListBegin(_etype25, _size22);
65  rgbColour.resize(_size22);
66  uint32_t _i26;
67  for (_i26 = 0; _i26 < _size22; ++_i26)
68  {
69  if (!reader.readNested(rgbColour[_i26])) {
70  reader.fail();
71  return false;
72  }
73  }
74  reader.readListEnd();
75  }
76  return true;
77 }
78 bool SurfaceMesh::nested_read_rgbColour(yarp::os::idl::WireReader& reader) {
79  {
80  rgbColour.clear();
81  uint32_t _size27;
82  yarp::os::idl::WireState _etype30;
83  reader.readListBegin(_etype30, _size27);
84  rgbColour.resize(_size27);
85  uint32_t _i31;
86  for (_i31 = 0; _i31 < _size27; ++_i31)
87  {
88  if (!reader.readNested(rgbColour[_i31])) {
89  reader.fail();
90  return false;
91  }
92  }
93  reader.readListEnd();
94  }
95  return true;
96 }
97 bool SurfaceMesh::read_polygons(yarp::os::idl::WireReader& reader) {
98  {
99  polygons.clear();
100  uint32_t _size32;
101  yarp::os::idl::WireState _etype35;
102  reader.readListBegin(_etype35, _size32);
103  polygons.resize(_size32);
104  uint32_t _i36;
105  for (_i36 = 0; _i36 < _size32; ++_i36)
106  {
107  if (!reader.readNested(polygons[_i36])) {
108  reader.fail();
109  return false;
110  }
111  }
112  reader.readListEnd();
113  }
114  return true;
115 }
116 bool SurfaceMesh::nested_read_polygons(yarp::os::idl::WireReader& reader) {
117  {
118  polygons.clear();
119  uint32_t _size37;
120  yarp::os::idl::WireState _etype40;
121  reader.readListBegin(_etype40, _size37);
122  polygons.resize(_size37);
123  uint32_t _i41;
124  for (_i41 = 0; _i41 < _size37; ++_i41)
125  {
126  if (!reader.readNested(polygons[_i41])) {
127  reader.fail();
128  return false;
129  }
130  }
131  reader.readListEnd();
132  }
133  return true;
134 }
135 bool SurfaceMesh::read(yarp::os::idl::WireReader& reader) {
136  if (!read_meshName(reader)) return false;
137  if (!read_points(reader)) return false;
138  if (!read_rgbColour(reader)) return false;
139  if (!read_polygons(reader)) return false;
140  return !reader.isError();
141 }
142 
143 bool SurfaceMesh::read(yarp::os::ConnectionReader& connection) {
144  yarp::os::idl::WireReader reader(connection);
145  if (!reader.readListHeader(4)) return false;
146  return read(reader);
147 }
148 
149 bool SurfaceMesh::write_meshName(yarp::os::idl::WireWriter& writer) {
150  if (!writer.writeString(meshName)) return false;
151  return true;
152 }
153 bool SurfaceMesh::nested_write_meshName(yarp::os::idl::WireWriter& writer) {
154  if (!writer.writeString(meshName)) return false;
155  return true;
156 }
157 bool SurfaceMesh::write_points(yarp::os::idl::WireWriter& writer) {
158  {
159  if (!writer.writeListBegin(BOTTLE_TAG_LIST, static_cast<uint32_t>(points.size()))) return false;
160  std::vector<PointXYZ> ::iterator _iter42;
161  for (_iter42 = points.begin(); _iter42 != points.end(); ++_iter42)
162  {
163  if (!writer.writeNested((*_iter42))) return false;
164  }
165  if (!writer.writeListEnd()) return false;
166  }
167  return true;
168 }
169 bool SurfaceMesh::nested_write_points(yarp::os::idl::WireWriter& writer) {
170  {
171  if (!writer.writeListBegin(BOTTLE_TAG_LIST, static_cast<uint32_t>(points.size()))) return false;
172  std::vector<PointXYZ> ::iterator _iter43;
173  for (_iter43 = points.begin(); _iter43 != points.end(); ++_iter43)
174  {
175  if (!writer.writeNested((*_iter43))) return false;
176  }
177  if (!writer.writeListEnd()) return false;
178  }
179  return true;
180 }
181 bool SurfaceMesh::write_rgbColour(yarp::os::idl::WireWriter& writer) {
182  {
183  if (!writer.writeListBegin(BOTTLE_TAG_LIST, static_cast<uint32_t>(rgbColour.size()))) return false;
184  std::vector<RGBA> ::iterator _iter44;
185  for (_iter44 = rgbColour.begin(); _iter44 != rgbColour.end(); ++_iter44)
186  {
187  if (!writer.writeNested((*_iter44))) return false;
188  }
189  if (!writer.writeListEnd()) return false;
190  }
191  return true;
192 }
193 bool SurfaceMesh::nested_write_rgbColour(yarp::os::idl::WireWriter& writer) {
194  {
195  if (!writer.writeListBegin(BOTTLE_TAG_LIST, static_cast<uint32_t>(rgbColour.size()))) return false;
196  std::vector<RGBA> ::iterator _iter45;
197  for (_iter45 = rgbColour.begin(); _iter45 != rgbColour.end(); ++_iter45)
198  {
199  if (!writer.writeNested((*_iter45))) return false;
200  }
201  if (!writer.writeListEnd()) return false;
202  }
203  return true;
204 }
205 bool SurfaceMesh::write_polygons(yarp::os::idl::WireWriter& writer) {
206  {
207  if (!writer.writeListBegin(BOTTLE_TAG_LIST, static_cast<uint32_t>(polygons.size()))) return false;
208  std::vector<Polygon> ::iterator _iter46;
209  for (_iter46 = polygons.begin(); _iter46 != polygons.end(); ++_iter46)
210  {
211  if (!writer.writeNested((*_iter46))) return false;
212  }
213  if (!writer.writeListEnd()) return false;
214  }
215  return true;
216 }
217 bool SurfaceMesh::nested_write_polygons(yarp::os::idl::WireWriter& writer) {
218  {
219  if (!writer.writeListBegin(BOTTLE_TAG_LIST, static_cast<uint32_t>(polygons.size()))) return false;
220  std::vector<Polygon> ::iterator _iter47;
221  for (_iter47 = polygons.begin(); _iter47 != polygons.end(); ++_iter47)
222  {
223  if (!writer.writeNested((*_iter47))) return false;
224  }
225  if (!writer.writeListEnd()) return false;
226  }
227  return true;
228 }
229 bool SurfaceMesh::write(yarp::os::idl::WireWriter& writer) {
230  if (!write_meshName(writer)) return false;
231  if (!write_points(writer)) return false;
232  if (!write_rgbColour(writer)) return false;
233  if (!write_polygons(writer)) return false;
234  return !writer.isError();
235 }
236 
237 bool SurfaceMesh::write(yarp::os::ConnectionWriter& connection) {
238  yarp::os::idl::WireWriter writer(connection);
239  if (!writer.writeListHeader(4)) return false;
240  return write(writer);
241 }
242 bool SurfaceMesh::Editor::write(yarp::os::ConnectionWriter& connection) {
243  if (!isValid()) return false;
244  yarp::os::idl::WireWriter writer(connection);
245  if (!writer.writeListHeader(dirty_count+1)) return false;
246  if (!writer.writeString("patch")) return false;
247  if (is_dirty_meshName) {
248  if (!writer.writeListHeader(3)) return false;
249  if (!writer.writeString("set")) return false;
250  if (!writer.writeString("meshName")) return false;
251  if (!obj->nested_write_meshName(writer)) return false;
252  }
253  if (is_dirty_points) {
254  if (!writer.writeListHeader(3)) return false;
255  if (!writer.writeString("set")) return false;
256  if (!writer.writeString("points")) return false;
257  if (!obj->nested_write_points(writer)) return false;
258  }
259  if (is_dirty_rgbColour) {
260  if (!writer.writeListHeader(3)) return false;
261  if (!writer.writeString("set")) return false;
262  if (!writer.writeString("rgbColour")) return false;
263  if (!obj->nested_write_rgbColour(writer)) return false;
264  }
265  if (is_dirty_polygons) {
266  if (!writer.writeListHeader(3)) return false;
267  if (!writer.writeString("set")) return false;
268  if (!writer.writeString("polygons")) return false;
269  if (!obj->nested_write_polygons(writer)) return false;
270  }
271  return !writer.isError();
272 }
273 bool SurfaceMesh::Editor::read(yarp::os::ConnectionReader& connection) {
274  if (!isValid()) return false;
275  yarp::os::idl::WireReader reader(connection);
276  reader.expectAccept();
277  if (!reader.readListHeader()) return false;
278  int len = reader.getLength();
279  if (len==0) {
280  yarp::os::idl::WireWriter writer(reader);
281  if (writer.isNull()) return true;
282  if (!writer.writeListHeader(1)) return false;
283  writer.writeString("send: 'help' or 'patch (param1 val1) (param2 val2)'");
284  return true;
285  }
286  yarp::os::ConstString tag;
287  if (!reader.readString(tag)) return false;
288  if (tag=="help") {
289  yarp::os::idl::WireWriter writer(reader);
290  if (writer.isNull()) return true;
291  if (!writer.writeListHeader(2)) return false;
292  if (!writer.writeTag("many",1, 0)) return false;
293  if (reader.getLength()>0) {
294  yarp::os::ConstString field;
295  if (!reader.readString(field)) return false;
296  if (field=="meshName") {
297  if (!writer.writeListHeader(1)) return false;
298  if (!writer.writeString("std::string meshName")) return false;
299  }
300  if (field=="points") {
301  if (!writer.writeListHeader(1)) return false;
302  if (!writer.writeString("std::vector<PointXYZ> points")) return false;
303  }
304  if (field=="rgbColour") {
305  if (!writer.writeListHeader(1)) return false;
306  if (!writer.writeString("std::vector<RGBA> rgbColour")) return false;
307  }
308  if (field=="polygons") {
309  if (!writer.writeListHeader(1)) return false;
310  if (!writer.writeString("std::vector<Polygon> polygons")) return false;
311  }
312  }
313  if (!writer.writeListHeader(5)) return false;
314  writer.writeString("*** Available fields:");
315  writer.writeString("meshName");
316  writer.writeString("points");
317  writer.writeString("rgbColour");
318  writer.writeString("polygons");
319  return true;
320  }
321  bool nested = true;
322  bool have_act = false;
323  if (tag!="patch") {
324  if ((len-1)%2 != 0) return false;
325  len = 1 + ((len-1)/2);
326  nested = false;
327  have_act = true;
328  }
329  for (int i=1; i<len; i++) {
330  if (nested && !reader.readListHeader(3)) return false;
331  yarp::os::ConstString act;
332  yarp::os::ConstString key;
333  if (have_act) {
334  act = tag;
335  } else {
336  if (!reader.readString(act)) return false;
337  }
338  if (!reader.readString(key)) return false;
339  // inefficient code follows, bug paulfitz to improve it
340  if (key == "meshName") {
341  will_set_meshName();
342  if (!obj->nested_read_meshName(reader)) return false;
343  did_set_meshName();
344  } else if (key == "points") {
345  will_set_points();
346  if (!obj->nested_read_points(reader)) return false;
347  did_set_points();
348  } else if (key == "rgbColour") {
349  will_set_rgbColour();
350  if (!obj->nested_read_rgbColour(reader)) return false;
351  did_set_rgbColour();
352  } else if (key == "polygons") {
353  will_set_polygons();
354  if (!obj->nested_read_polygons(reader)) return false;
355  did_set_polygons();
356  } else {
357  // would be useful to have a fallback here
358  }
359  }
360  reader.accept();
361  yarp::os::idl::WireWriter writer(reader);
362  if (writer.isNull()) return true;
363  writer.writeListHeader(1);
364  writer.writeVocab(VOCAB2('o','k'));
365  return true;
366 }
367 
368 yarp::os::ConstString SurfaceMesh::toString() {
369  yarp::os::Bottle b;
370  b.read(*this);
371  return b.toString();
372 }
373 }} // namespace