4 #ifndef YARP_THRIFT_GENERATOR_STRUCT_Polygon 5 #define YARP_THRIFT_GENERATOR_STRUCT_Polygon 7 #include <yarp/os/Wire.h> 8 #include <yarp/os/idl/WireTypes.h> 17 class iCub::data3D::Polygon :
public yarp::os::idl::WirePortable {
20 std::vector<int32_t> vertices;
27 Polygon(
const std::vector<int32_t> & vertices) : vertices(vertices) {
31 Polygon(
const Polygon& __alt) : WirePortable(__alt) {
32 this->vertices = __alt.vertices;
36 const Polygon& operator = (
const Polygon& __alt) {
37 this->vertices = __alt.vertices;
42 bool read(yarp::os::idl::WireReader& reader);
43 bool read(yarp::os::ConnectionReader& connection);
44 bool write(yarp::os::idl::WireWriter& writer);
45 bool write(yarp::os::ConnectionWriter& connection);
48 bool write_vertices(yarp::os::idl::WireWriter& writer);
49 bool nested_write_vertices(yarp::os::idl::WireWriter& writer);
50 bool read_vertices(yarp::os::idl::WireReader& reader);
51 bool nested_read_vertices(yarp::os::idl::WireReader& reader);
55 yarp::os::ConstString toString();
58 typedef yarp::os::idl::Unwrapped<iCub::data3D::Polygon > unwrapped;
60 class Editor :
public yarp::os::Wire,
public yarp::os::PortWriter {
68 yarp().setOwner(*
this);
71 Editor(Polygon& obj) {
75 yarp().setOwner(*
this);
78 bool edit(Polygon& obj,
bool dirty =
true) {
79 if (obj_owned)
delete this->obj;
87 if (obj_owned)
delete obj;
90 bool isValid()
const {
94 Polygon& state() {
return *obj; }
96 void begin() { group++; }
100 if (group==0&&is_dirty) communicate();
102 void set_vertices(
const std::vector<int32_t> & vertices) {
104 obj->vertices = vertices;
105 mark_dirty_vertices();
109 void set_vertices(
int index,
const int32_t elem) {
111 obj->vertices[index] = elem;
112 mark_dirty_vertices();
116 const std::vector<int32_t> & get_vertices() {
117 return obj->vertices;
119 virtual bool will_set_vertices() {
return true; }
120 virtual bool did_set_vertices() {
return true; }
124 bool read(yarp::os::ConnectionReader& connection);
125 bool write(yarp::os::ConnectionWriter& connection);
134 if (group!=0)
return;
135 if (yarp().canWrite()) {
143 void mark_dirty_vertices() {
144 if (is_dirty_vertices)
return;
146 is_dirty_vertices =
true;
149 void dirty_flags(
bool flag) {
151 is_dirty_vertices = flag;
152 dirty_count = flag ? 1 : 0;
156 bool is_dirty_vertices;