4 #include <iCub/data3D/Box3D.h> 6 namespace iCub {
namespace data3D {
7 bool Box3D::read_corners(yarp::os::idl::WireReader& reader) {
11 yarp::os::idl::WireState _etype51;
12 reader.readListBegin(_etype51, _size48);
13 corners.resize(_size48);
15 for (_i52 = 0; _i52 < _size48; ++_i52)
17 if (!reader.readNested(corners[_i52])) {
26 bool Box3D::nested_read_corners(yarp::os::idl::WireReader& reader) {
30 yarp::os::idl::WireState _etype56;
31 reader.readListBegin(_etype56, _size53);
32 corners.resize(_size53);
34 for (_i57 = 0; _i57 < _size53; ++_i57)
36 if (!reader.readNested(corners[_i57])) {
45 bool Box3D::read_orientation(yarp::os::idl::WireReader& reader) {
46 if (!reader.read(orientation)) {
52 bool Box3D::nested_read_orientation(yarp::os::idl::WireReader& reader) {
53 if (!reader.readNested(orientation)) {
59 bool Box3D::read(yarp::os::idl::WireReader& reader) {
60 if (!read_corners(reader))
return false;
61 if (!read_orientation(reader))
return false;
62 return !reader.isError();
65 bool Box3D::read(yarp::os::ConnectionReader& connection) {
66 yarp::os::idl::WireReader reader(connection);
67 if (!reader.readListHeader(2))
return false;
71 bool Box3D::write_corners(yarp::os::idl::WireWriter& writer) {
73 if (!writer.writeListBegin(BOTTLE_TAG_LIST, static_cast<uint32_t>(corners.size())))
return false;
74 std::vector<PointXYZ> ::iterator _iter58;
75 for (_iter58 = corners.begin(); _iter58 != corners.end(); ++_iter58)
77 if (!writer.writeNested((*_iter58)))
return false;
79 if (!writer.writeListEnd())
return false;
83 bool Box3D::nested_write_corners(yarp::os::idl::WireWriter& writer) {
85 if (!writer.writeListBegin(BOTTLE_TAG_LIST, static_cast<uint32_t>(corners.size())))
return false;
86 std::vector<PointXYZ> ::iterator _iter59;
87 for (_iter59 = corners.begin(); _iter59 != corners.end(); ++_iter59)
89 if (!writer.writeNested((*_iter59)))
return false;
91 if (!writer.writeListEnd())
return false;
95 bool Box3D::write_orientation(yarp::os::idl::WireWriter& writer) {
96 if (!writer.write(orientation))
return false;
99 bool Box3D::nested_write_orientation(yarp::os::idl::WireWriter& writer) {
100 if (!writer.writeNested(orientation))
return false;
103 bool Box3D::write(yarp::os::idl::WireWriter& writer) {
104 if (!write_corners(writer))
return false;
105 if (!write_orientation(writer))
return false;
106 return !writer.isError();
109 bool Box3D::write(yarp::os::ConnectionWriter& connection) {
110 yarp::os::idl::WireWriter writer(connection);
111 if (!writer.writeListHeader(2))
return false;
112 return write(writer);
114 bool Box3D::Editor::write(yarp::os::ConnectionWriter& connection) {
115 if (!isValid())
return false;
116 yarp::os::idl::WireWriter writer(connection);
117 if (!writer.writeListHeader(dirty_count+1))
return false;
118 if (!writer.writeString(
"patch"))
return false;
119 if (is_dirty_corners) {
120 if (!writer.writeListHeader(3))
return false;
121 if (!writer.writeString(
"set"))
return false;
122 if (!writer.writeString(
"corners"))
return false;
123 if (!obj->nested_write_corners(writer))
return false;
125 if (is_dirty_orientation) {
126 if (!writer.writeListHeader(3))
return false;
127 if (!writer.writeString(
"set"))
return false;
128 if (!writer.writeString(
"orientation"))
return false;
129 if (!obj->nested_write_orientation(writer))
return false;
131 return !writer.isError();
133 bool Box3D::Editor::read(yarp::os::ConnectionReader& connection) {
134 if (!isValid())
return false;
135 yarp::os::idl::WireReader reader(connection);
136 reader.expectAccept();
137 if (!reader.readListHeader())
return false;
138 int len = reader.getLength();
140 yarp::os::idl::WireWriter writer(reader);
141 if (writer.isNull())
return true;
142 if (!writer.writeListHeader(1))
return false;
143 writer.writeString(
"send: 'help' or 'patch (param1 val1) (param2 val2)'");
146 yarp::os::ConstString tag;
147 if (!reader.readString(tag))
return false;
149 yarp::os::idl::WireWriter writer(reader);
150 if (writer.isNull())
return true;
151 if (!writer.writeListHeader(2))
return false;
152 if (!writer.writeTag(
"many",1, 0))
return false;
153 if (reader.getLength()>0) {
154 yarp::os::ConstString field;
155 if (!reader.readString(field))
return false;
156 if (field==
"corners") {
157 if (!writer.writeListHeader(1))
return false;
158 if (!writer.writeString(
"std::vector<PointXYZ> corners"))
return false;
160 if (field==
"orientation") {
161 if (!writer.writeListHeader(1))
return false;
162 if (!writer.writeString(
"yarp::sig::Matrix orientation"))
return false;
165 if (!writer.writeListHeader(3))
return false;
166 writer.writeString(
"*** Available fields:");
167 writer.writeString(
"corners");
168 writer.writeString(
"orientation");
172 bool have_act =
false;
174 if ((len-1)%2 != 0)
return false;
175 len = 1 + ((len-1)/2);
179 for (
int i=1; i<len; i++) {
180 if (nested && !reader.readListHeader(3))
return false;
181 yarp::os::ConstString act;
182 yarp::os::ConstString key;
186 if (!reader.readString(act))
return false;
188 if (!reader.readString(key))
return false;
190 if (key ==
"corners") {
192 if (!obj->nested_read_corners(reader))
return false;
194 }
else if (key ==
"orientation") {
195 will_set_orientation();
196 if (!obj->nested_read_orientation(reader))
return false;
197 did_set_orientation();
203 yarp::os::idl::WireWriter writer(reader);
204 if (writer.isNull())
return true;
205 writer.writeListHeader(1);
206 writer.writeVocab(VOCAB2(
'o',
'k'));
210 yarp::os::ConstString Box3D::toString() {