4 #include <iCub/data3D/PointXYZ.h> 6 namespace iCub {
namespace data3D {
7 bool PointXYZ::read_x(yarp::os::idl::WireReader& reader) {
8 if (!reader.readDouble(x)) {
14 bool PointXYZ::nested_read_x(yarp::os::idl::WireReader& reader) {
15 if (!reader.readDouble(x)) {
21 bool PointXYZ::read_y(yarp::os::idl::WireReader& reader) {
22 if (!reader.readDouble(y)) {
28 bool PointXYZ::nested_read_y(yarp::os::idl::WireReader& reader) {
29 if (!reader.readDouble(y)) {
35 bool PointXYZ::read_z(yarp::os::idl::WireReader& reader) {
36 if (!reader.readDouble(z)) {
42 bool PointXYZ::nested_read_z(yarp::os::idl::WireReader& reader) {
43 if (!reader.readDouble(z)) {
49 bool PointXYZ::read(yarp::os::idl::WireReader& reader) {
50 if (!read_x(reader))
return false;
51 if (!read_y(reader))
return false;
52 if (!read_z(reader))
return false;
53 return !reader.isError();
56 bool PointXYZ::read(yarp::os::ConnectionReader& connection) {
57 yarp::os::idl::WireReader reader(connection);
58 if (!reader.readListHeader(3))
return false;
62 bool PointXYZ::write_x(yarp::os::idl::WireWriter& writer) {
63 if (!writer.writeDouble(x))
return false;
66 bool PointXYZ::nested_write_x(yarp::os::idl::WireWriter& writer) {
67 if (!writer.writeDouble(x))
return false;
70 bool PointXYZ::write_y(yarp::os::idl::WireWriter& writer) {
71 if (!writer.writeDouble(y))
return false;
74 bool PointXYZ::nested_write_y(yarp::os::idl::WireWriter& writer) {
75 if (!writer.writeDouble(y))
return false;
78 bool PointXYZ::write_z(yarp::os::idl::WireWriter& writer) {
79 if (!writer.writeDouble(z))
return false;
82 bool PointXYZ::nested_write_z(yarp::os::idl::WireWriter& writer) {
83 if (!writer.writeDouble(z))
return false;
86 bool PointXYZ::write(yarp::os::idl::WireWriter& writer) {
87 if (!write_x(writer))
return false;
88 if (!write_y(writer))
return false;
89 if (!write_z(writer))
return false;
90 return !writer.isError();
93 bool PointXYZ::write(yarp::os::ConnectionWriter& connection) {
94 yarp::os::idl::WireWriter writer(connection);
95 if (!writer.writeListHeader(3))
return false;
98 bool PointXYZ::Editor::write(yarp::os::ConnectionWriter& connection) {
99 if (!isValid())
return false;
100 yarp::os::idl::WireWriter writer(connection);
101 if (!writer.writeListHeader(dirty_count+1))
return false;
102 if (!writer.writeString(
"patch"))
return false;
104 if (!writer.writeListHeader(3))
return false;
105 if (!writer.writeString(
"set"))
return false;
106 if (!writer.writeString(
"x"))
return false;
107 if (!obj->nested_write_x(writer))
return false;
110 if (!writer.writeListHeader(3))
return false;
111 if (!writer.writeString(
"set"))
return false;
112 if (!writer.writeString(
"y"))
return false;
113 if (!obj->nested_write_y(writer))
return false;
116 if (!writer.writeListHeader(3))
return false;
117 if (!writer.writeString(
"set"))
return false;
118 if (!writer.writeString(
"z"))
return false;
119 if (!obj->nested_write_z(writer))
return false;
121 return !writer.isError();
123 bool PointXYZ::Editor::read(yarp::os::ConnectionReader& connection) {
124 if (!isValid())
return false;
125 yarp::os::idl::WireReader reader(connection);
126 reader.expectAccept();
127 if (!reader.readListHeader())
return false;
128 int len = reader.getLength();
130 yarp::os::idl::WireWriter writer(reader);
131 if (writer.isNull())
return true;
132 if (!writer.writeListHeader(1))
return false;
133 writer.writeString(
"send: 'help' or 'patch (param1 val1) (param2 val2)'");
136 yarp::os::ConstString tag;
137 if (!reader.readString(tag))
return false;
139 yarp::os::idl::WireWriter writer(reader);
140 if (writer.isNull())
return true;
141 if (!writer.writeListHeader(2))
return false;
142 if (!writer.writeTag(
"many",1, 0))
return false;
143 if (reader.getLength()>0) {
144 yarp::os::ConstString field;
145 if (!reader.readString(field))
return false;
147 if (!writer.writeListHeader(1))
return false;
148 if (!writer.writeString(
"double x"))
return false;
151 if (!writer.writeListHeader(1))
return false;
152 if (!writer.writeString(
"double y"))
return false;
155 if (!writer.writeListHeader(1))
return false;
156 if (!writer.writeString(
"double z"))
return false;
159 if (!writer.writeListHeader(4))
return false;
160 writer.writeString(
"*** Available fields:");
161 writer.writeString(
"x");
162 writer.writeString(
"y");
163 writer.writeString(
"z");
167 bool have_act =
false;
169 if ((len-1)%2 != 0)
return false;
170 len = 1 + ((len-1)/2);
174 for (
int i=1; i<len; i++) {
175 if (nested && !reader.readListHeader(3))
return false;
176 yarp::os::ConstString act;
177 yarp::os::ConstString key;
181 if (!reader.readString(act))
return false;
183 if (!reader.readString(key))
return false;
187 if (!obj->nested_read_x(reader))
return false;
189 }
else if (key ==
"y") {
191 if (!obj->nested_read_y(reader))
return false;
193 }
else if (key ==
"z") {
195 if (!obj->nested_read_z(reader))
return false;
202 yarp::os::idl::WireWriter writer(reader);
203 if (writer.isNull())
return true;
204 writer.writeListHeader(1);
205 writer.writeVocab(VOCAB2(
'o',
'k'));
209 yarp::os::ConstString PointXYZ::toString() {