4 #include <iCub/data3D/Polygon.h> 6 namespace iCub {
namespace data3D {
7 bool Polygon::read_vertices(yarp::os::idl::WireReader& reader) {
11 yarp::os::idl::WireState _etype3;
12 reader.readListBegin(_etype3, _size0);
13 vertices.resize(_size0);
15 for (_i4 = 0; _i4 < _size0; ++_i4)
17 if (!reader.readI32(vertices[_i4])) {
26 bool Polygon::nested_read_vertices(yarp::os::idl::WireReader& reader) {
30 yarp::os::idl::WireState _etype8;
31 reader.readListBegin(_etype8, _size5);
32 vertices.resize(_size5);
34 for (_i9 = 0; _i9 < _size5; ++_i9)
36 if (!reader.readI32(vertices[_i9])) {
45 bool Polygon::read(yarp::os::idl::WireReader& reader) {
46 if (!read_vertices(reader))
return false;
47 return !reader.isError();
50 bool Polygon::read(yarp::os::ConnectionReader& connection) {
51 yarp::os::idl::WireReader reader(connection);
52 if (!reader.readListHeader(1))
return false;
56 bool Polygon::write_vertices(yarp::os::idl::WireWriter& writer) {
58 if (!writer.writeListBegin(BOTTLE_TAG_INT, static_cast<uint32_t>(vertices.size())))
return false;
59 std::vector<int32_t> ::iterator _iter10;
60 for (_iter10 = vertices.begin(); _iter10 != vertices.end(); ++_iter10)
62 if (!writer.writeI32((*_iter10)))
return false;
64 if (!writer.writeListEnd())
return false;
68 bool Polygon::nested_write_vertices(yarp::os::idl::WireWriter& writer) {
70 if (!writer.writeListBegin(BOTTLE_TAG_INT, static_cast<uint32_t>(vertices.size())))
return false;
71 std::vector<int32_t> ::iterator _iter11;
72 for (_iter11 = vertices.begin(); _iter11 != vertices.end(); ++_iter11)
74 if (!writer.writeI32((*_iter11)))
return false;
76 if (!writer.writeListEnd())
return false;
80 bool Polygon::write(yarp::os::idl::WireWriter& writer) {
81 if (!write_vertices(writer))
return false;
82 return !writer.isError();
85 bool Polygon::write(yarp::os::ConnectionWriter& connection) {
86 yarp::os::idl::WireWriter writer(connection);
87 if (!writer.writeListHeader(1))
return false;
90 bool Polygon::Editor::write(yarp::os::ConnectionWriter& connection) {
91 if (!isValid())
return false;
92 yarp::os::idl::WireWriter writer(connection);
93 if (!writer.writeListHeader(dirty_count+1))
return false;
94 if (!writer.writeString(
"patch"))
return false;
95 if (is_dirty_vertices) {
96 if (!writer.writeListHeader(3))
return false;
97 if (!writer.writeString(
"set"))
return false;
98 if (!writer.writeString(
"vertices"))
return false;
99 if (!obj->nested_write_vertices(writer))
return false;
101 return !writer.isError();
103 bool Polygon::Editor::read(yarp::os::ConnectionReader& connection) {
104 if (!isValid())
return false;
105 yarp::os::idl::WireReader reader(connection);
106 reader.expectAccept();
107 if (!reader.readListHeader())
return false;
108 int len = reader.getLength();
110 yarp::os::idl::WireWriter writer(reader);
111 if (writer.isNull())
return true;
112 if (!writer.writeListHeader(1))
return false;
113 writer.writeString(
"send: 'help' or 'patch (param1 val1) (param2 val2)'");
116 yarp::os::ConstString tag;
117 if (!reader.readString(tag))
return false;
119 yarp::os::idl::WireWriter writer(reader);
120 if (writer.isNull())
return true;
121 if (!writer.writeListHeader(2))
return false;
122 if (!writer.writeTag(
"many",1, 0))
return false;
123 if (reader.getLength()>0) {
124 yarp::os::ConstString field;
125 if (!reader.readString(field))
return false;
126 if (field==
"vertices") {
127 if (!writer.writeListHeader(1))
return false;
128 if (!writer.writeString(
"std::vector<int32_t> vertices"))
return false;
131 if (!writer.writeListHeader(2))
return false;
132 writer.writeString(
"*** Available fields:");
133 writer.writeString(
"vertices");
137 bool have_act =
false;
139 if ((len-1)%2 != 0)
return false;
140 len = 1 + ((len-1)/2);
144 for (
int i=1; i<len; i++) {
145 if (nested && !reader.readListHeader(3))
return false;
146 yarp::os::ConstString act;
147 yarp::os::ConstString key;
151 if (!reader.readString(act))
return false;
153 if (!reader.readString(key))
return false;
155 if (key ==
"vertices") {
157 if (!obj->nested_read_vertices(reader))
return false;
164 yarp::os::idl::WireWriter writer(reader);
165 if (writer.isNull())
return true;
166 writer.writeListHeader(1);
167 writer.writeVocab(VOCAB2(
'o',
'k'));
171 yarp::os::ConstString Polygon::toString() {