Xcos MVC: use vector in the Controller 24/14924/2
Clément DAVID [Tue, 22 Jul 2014 07:05:46 +0000 (09:05 +0200)]
Template instanciation is possible with SWIG, it might not be an issue
to use <vector> in the API as all the source code use C++.

Change-Id: I874611042d90e6cd934c67331656107aad2ae877

scilab/modules/scicos/includes/Controller.hxx
scilab/modules/scicos/includes/utilities.hxx
scilab/modules/scicos/src/cpp/Controller.cpp
scilab/modules/scicos/src/cpp/Model.hxx
scilab/modules/scicos/src/cpp/Model_getObjectProperties.cpp
scilab/modules/scicos/src/cpp/Model_setObjectProperties.cpp
scilab/modules/scicos/src/cpp/model/Annotation.hxx
scilab/modules/scicos/src/cpp/model/BaseObject.hxx
scilab/modules/scicos/src/cpp/model/Block.hxx
scilab/modules/scicos/src/cpp/view_scilab/BlockAdapter.cpp
scilab/modules/scicos/src/cpp/view_scilab/GraphicsAdapter.cpp

index 9d86a74..87c3ab0 100644 (file)
@@ -43,31 +43,25 @@ public:
     model::BaseObject* getObject(ScicosID uid);
     update_status_t setObject(model::BaseObject* o);
 
-    bool getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, double* v);
-    bool getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, int* v);
-    bool getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, bool* v);
-    bool getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, std::string* v);
-    bool getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, ScicosID* v);
-    bool getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, size_t* len, double** v);
-    bool getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, size_t* len, int** v);
-    bool getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, size_t* len,
-                           std::string** v);
-    bool getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, size_t* len,
-                           ScicosID** v);
+    bool getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, double& v);
+    bool getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, int& v);
+    bool getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, bool& v);
+    bool getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, std::string& v);
+    bool getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, ScicosID& v);
+    bool getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, std::vector<double>& v);
+    bool getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, std::vector<int>& v);
+    bool getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, std::vector< std::string >& v);
+    bool getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, std::vector<ScicosID>& v);
 
     update_status_t setObjectProperty(ScicosID uid, kind_t k, object_properties_t p, double v);
     update_status_t setObjectProperty(ScicosID uid, kind_t k, object_properties_t p, int v);
     update_status_t setObjectProperty(ScicosID uid, kind_t k, object_properties_t p, bool v);
     update_status_t setObjectProperty(ScicosID uid, kind_t k, object_properties_t p, ScicosID v);
     update_status_t setObjectProperty(ScicosID uid, kind_t k, object_properties_t p, std::string v);
-    update_status_t setObjectProperty(ScicosID uid, kind_t k, object_properties_t p, size_t len,
-                                      double* v);
-    update_status_t setObjectProperty(ScicosID uid, kind_t k, object_properties_t p, size_t len,
-                                      int* v);
-    update_status_t setObjectProperty(ScicosID uid, kind_t k, object_properties_t p, size_t len,
-                                      std::string* v);
-    update_status_t setObjectProperty(ScicosID uid, kind_t k, object_properties_t p, size_t len,
-                                      ScicosID* v);
+    update_status_t setObjectProperty(ScicosID uid, kind_t k, object_properties_t p, const std::vector<double>& v);
+    update_status_t setObjectProperty(ScicosID uid, kind_t k, object_properties_t p, const std::vector<int>& v);
+    update_status_t setObjectProperty(ScicosID uid, kind_t k, object_properties_t p, const std::vector< std::string >& v);
+    update_status_t setObjectProperty(ScicosID uid, kind_t k, object_properties_t p, const std::vector<ScicosID>& v);
 
 private:
     void dispatch(update_status_t status, ScicosID uid, kind_t k, object_properties_t p)
@@ -92,14 +86,6 @@ private:
         dispatch(status, uid, k, p);
         return status;
     }
-    template<typename T>
-    update_status_t generic_setObjectProp(ScicosID uid, kind_t k, object_properties_t p, size_t len,
-                                          T* v)
-    {
-        update_status_t status = model.setObjectProperty(uid, k, p, len, v);
-        dispatch(status, uid, k, p);
-        return status;
-    }
 
 private:
     static Controller* _instance;
index e2b9889..6b509e4 100644 (file)
@@ -15,9 +15,6 @@
 
 #include <iostream>
 
-namespace org_scilab_modules_scicos
-{
-
 /**
  * A unique ID is used to represent a reference to any object in the model.
  *
@@ -103,6 +100,4 @@ enum object_properties_t
     CONNECTED_SIGNALS,  //!< model::Port::connectedSignals value
 };
 
-} /* namespace org_scilab_modules_scicos */
-
 #endif /* UTILITIES_HXX_ */
index a7f5d45..d6a8322 100644 (file)
@@ -110,55 +110,51 @@ update_status_t Controller::setObject(model::BaseObject* o)
 }
 
 bool Controller::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p,
-                                   double* v)
+                                   double& v)
 {
     return model.getObjectProperty(uid, k, p, v);
 }
 
-bool Controller::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, int* v)
+bool Controller::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, int& v)
 {
     return model.getObjectProperty(uid, k, p, v);
 }
 
-bool Controller::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, bool* v)
+bool Controller::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, bool& v)
 {
     return model.getObjectProperty(uid, k, p, v);
 }
 
 bool Controller::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p,
-                                   std::string* v)
+                                   std::string& v)
 {
     return model.getObjectProperty(uid, k, p, v);
 }
 
 bool Controller::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p,
-                                   ScicosID* v)
+                                   ScicosID& v)
 {
     return model.getObjectProperty(uid, k, p, v);
 }
 
-bool Controller::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, size_t* len,
-                                   double** v)
+bool Controller::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, std::vector<double>& v)
 {
-    return model.getObjectProperty(uid, k, p, len, v);
+    return model.getObjectProperty(uid, k, p, v);
 }
 
-bool Controller::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p,
-                                   size_t* len, int** v)
+bool Controller::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, std::vector<int>& v)
 {
-    return model.getObjectProperty(uid, k, p, len, v);
+    return model.getObjectProperty(uid, k, p, v);
 }
 
-bool Controller::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p,
-                                   size_t* len, std::string** v)
+bool Controller::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, std::vector<std::string>& v)
 {
-    return model.getObjectProperty(uid, k, p, len, v);
+    return model.getObjectProperty(uid, k, p, v);
 }
 
-bool Controller::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p,
-                                   size_t* len, ScicosID** v)
+bool Controller::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, std::vector<ScicosID>& v)
 {
-    return model.getObjectProperty(uid, k, p, len, v);
+    return model.getObjectProperty(uid, k, p, v);
 }
 
 update_status_t Controller::setObjectProperty(ScicosID uid, kind_t k, object_properties_t p,
@@ -191,28 +187,24 @@ update_status_t Controller::setObjectProperty(ScicosID uid, kind_t k, object_pro
     return generic_setObjectProp<std::string>(uid, k, p, v);
 }
 
-update_status_t Controller::setObjectProperty(ScicosID uid, kind_t k, object_properties_t p,
-        size_t len, double* v)
+update_status_t Controller::setObjectProperty(ScicosID uid, kind_t k, object_properties_t p, const std::vector<double>& v)
 {
-    return generic_setObjectProp<double>(uid, k, p, len, v);
+    return generic_setObjectProp< std::vector<double> >(uid, k, p, v);
 }
 
-update_status_t Controller::setObjectProperty(ScicosID uid, kind_t k, object_properties_t p,
-        size_t len, int* v)
+update_status_t Controller::setObjectProperty(ScicosID uid, kind_t k, object_properties_t p, const std::vector<int>& v)
 {
-    return generic_setObjectProp<int>(uid, k, p, len, v);
+    return generic_setObjectProp< std::vector<int> >(uid, k, p, v);
 }
 
-update_status_t Controller::setObjectProperty(ScicosID uid, kind_t k, object_properties_t p,
-        size_t len, std::string* v)
+update_status_t Controller::setObjectProperty(ScicosID uid, kind_t k, object_properties_t p, const std::vector< std::string >& v)
 {
-    return generic_setObjectProp<std::string>(uid, k, p, len, v);
+    return generic_setObjectProp< std::vector<std::string> >(uid, k, p, v);
 }
 
-update_status_t Controller::setObjectProperty(ScicosID uid, kind_t k, object_properties_t p,
-        size_t len, ScicosID* v)
+update_status_t Controller::setObjectProperty(ScicosID uid, kind_t k, object_properties_t p, const std::vector<ScicosID>& v)
 {
-    return generic_setObjectProp<ScicosID>(uid, k, p, len, v);
+    return generic_setObjectProp< std::vector<ScicosID> >(uid, k, p, v);
 }
 
 } /* namespace org_scilab_modules_scicos */
index 4973841..2d2ccb5 100644 (file)
@@ -34,25 +34,25 @@ public:
     model::BaseObject* getObject(ScicosID uid) const;
     update_status_t setObject(model::BaseObject* o);
 
-    bool getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, double* v);
-    bool getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, int* v);
-    bool getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, bool* v);
-    bool getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, std::string* v);
-    bool getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, ScicosID* v);
-    bool getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, size_t* len, double** v);
-    bool getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, size_t* len, int** v);
-    bool getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, size_t* len, std::string** v);
-    bool getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, size_t* len, ScicosID** v);
+    bool getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, double& v);
+    bool getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, int& v);
+    bool getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, bool& v);
+    bool getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, std::string& v);
+    bool getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, ScicosID& v);
+    bool getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, std::vector<double>& v);
+    bool getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, std::vector<int>& v);
+    bool getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, std::vector< std::string >& v);
+    bool getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, std::vector<ScicosID>& v);
 
     update_status_t setObjectProperty(ScicosID uid, kind_t k, object_properties_t p, double v);
     update_status_t setObjectProperty(ScicosID uid, kind_t k, object_properties_t p, int v);
     update_status_t setObjectProperty(ScicosID uid, kind_t k, object_properties_t p, bool v);
     update_status_t setObjectProperty(ScicosID uid, kind_t k, object_properties_t p, ScicosID v);
     update_status_t setObjectProperty(ScicosID uid, kind_t k, object_properties_t p, std::string v);
-    update_status_t setObjectProperty(ScicosID uid, kind_t k, object_properties_t p, size_t len, double* v);
-    update_status_t setObjectProperty(ScicosID uid, kind_t k, object_properties_t p, size_t len, int* v);
-    update_status_t setObjectProperty(ScicosID uid, kind_t k, object_properties_t p, size_t len, std::string* v);
-    update_status_t setObjectProperty(ScicosID uid, kind_t k, object_properties_t p, size_t len, ScicosID* v);
+    update_status_t setObjectProperty(ScicosID uid, kind_t k, object_properties_t p, const std::vector<double>& v);
+    update_status_t setObjectProperty(ScicosID uid, kind_t k, object_properties_t p, const std::vector<int>& v);
+    update_status_t setObjectProperty(ScicosID uid, kind_t k, object_properties_t p, const std::vector< std::string >& v);
+    update_status_t setObjectProperty(ScicosID uid, kind_t k, object_properties_t p, const std::vector<ScicosID>& v);
 
 private:
     ScicosID lastId;
index ea9d05f..5707c1d 100644 (file)
@@ -10,6 +10,9 @@
  *
  */
 
+#include <string>
+#include <vector>
+
 #include "Model.hxx"
 #include "utilities.hxx"
 
@@ -23,7 +26,7 @@
 namespace org_scilab_modules_scicos
 {
 
-bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, double* v)
+bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, double& v)
 {
 
     if (k == ANNOTATION)
@@ -74,7 +77,7 @@ bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, dou
     return false;
 }
 
-bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, int* v)
+bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, int& v)
 {
 
     if (k == ANNOTATION)
@@ -125,7 +128,7 @@ bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, int
     return false;
 }
 
-bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, bool* v)
+bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, bool& v)
 {
 
     if (k == ANNOTATION)
@@ -176,7 +179,7 @@ bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, boo
     return false;
 }
 
-bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, std::string* v)
+bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, std::string& v)
 {
 
     if (k == ANNOTATION)
@@ -227,7 +230,7 @@ bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, std
     return false;
 }
 
-bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, ScicosID* v)
+bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, ScicosID& v)
 {
 
     if (k == ANNOTATION)
@@ -236,10 +239,10 @@ bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, Sci
         switch (p)
         {
             case PARENT_DIAGRAM:
-                *v = o->getParentDiagram();
+                v = o->getParentDiagram();
                 return true;
             case RELATED_TO:
-                *v = o->getRelatedTo();
+                v = o->getRelatedTo();
                 return true;
             default:
                 break;
@@ -251,7 +254,7 @@ bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, Sci
         switch (p)
         {
             case PARENT_DIAGRAM:
-                *v = o->getParentDiagram();
+                v = o->getParentDiagram();
                 return true;
             default:
                 break;
@@ -268,7 +271,7 @@ bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, Sci
         switch (p)
         {
             case PARENT_DIAGRAM:
-                *v = o->getParentDiagram();
+                v = o->getParentDiagram();
                 return true;
             default:
                 break;
@@ -284,8 +287,7 @@ bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, Sci
     return false;
 }
 
-bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, size_t* len,
-                              double** v)
+bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, std::vector<double>& v)
 {
 
     if (k == ANNOTATION)
@@ -294,7 +296,7 @@ bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, siz
         switch (p)
         {
             case GEOMETRY:
-                o->getGeometry(len, v);
+                o->getGeometry(v);
                 return true;
             default:
                 break;
@@ -306,7 +308,7 @@ bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, siz
         switch (p)
         {
             case GEOMETRY:
-                o->getGeometry(len, v);
+                o->getGeometry(v);
                 return true;
             default:
                 break;
@@ -330,7 +332,7 @@ bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, siz
     return false;
 }
 
-bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, size_t* len, int** v)
+bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, std::vector<int>& v)
 {
 
     if (k == ANNOTATION)
@@ -381,8 +383,7 @@ bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, siz
     return false;
 }
 
-bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, size_t* len,
-                              std::string** v)
+bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, std::vector< std::string >& v)
 {
 
     if (k == ANNOTATION)
@@ -433,8 +434,7 @@ bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, siz
     return false;
 }
 
-bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, size_t* len,
-                              ScicosID** v)
+bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, std::vector<ScicosID>& v)
 {
 
     if (k == ANNOTATION)
index 6199bf2..97790e3 100644 (file)
@@ -280,8 +280,7 @@ update_status_t Model::setObjectProperty(ScicosID uid, kind_t k, object_properti
     return FAIL;
 }
 
-update_status_t Model::setObjectProperty(ScicosID uid, kind_t k, object_properties_t p, size_t len,
-        double* v)
+update_status_t Model::setObjectProperty(ScicosID uid, kind_t k, object_properties_t p, const std::vector<double>& v)
 {
 
     if (k == ANNOTATION)
@@ -290,7 +289,7 @@ update_status_t Model::setObjectProperty(ScicosID uid, kind_t k, object_properti
         switch (p)
         {
             case GEOMETRY:
-                return o->setGeometry(len, v);
+                return o->setGeometry(v);
             default:
                 break;
         }
@@ -301,7 +300,7 @@ update_status_t Model::setObjectProperty(ScicosID uid, kind_t k, object_properti
         switch (p)
         {
             case GEOMETRY:
-                return o->setGeometry(len, v);
+                return o->setGeometry(v);
             default:
                 break;
         }
@@ -336,8 +335,7 @@ update_status_t Model::setObjectProperty(ScicosID uid, kind_t k, object_properti
     return FAIL;
 }
 
-update_status_t Model::setObjectProperty(ScicosID uid, kind_t k, object_properties_t p, size_t len,
-        int* v)
+update_status_t Model::setObjectProperty(ScicosID uid, kind_t k, object_properties_t p, const std::vector<int>& v)
 {
 
     if (k == ANNOTATION)
@@ -388,8 +386,7 @@ update_status_t Model::setObjectProperty(ScicosID uid, kind_t k, object_properti
     return FAIL;
 }
 
-update_status_t Model::setObjectProperty(ScicosID uid, kind_t k, object_properties_t p, size_t len,
-        std::string* v)
+update_status_t Model::setObjectProperty(ScicosID uid, kind_t k, object_properties_t p, const std::vector< std::string >& v)
 {
 
     if (k == ANNOTATION)
@@ -440,8 +437,7 @@ update_status_t Model::setObjectProperty(ScicosID uid, kind_t k, object_properti
     return FAIL;
 }
 
-update_status_t Model::setObjectProperty(ScicosID uid, kind_t k, object_properties_t p, size_t len,
-        ScicosID* v)
+update_status_t Model::setObjectProperty(ScicosID uid, kind_t k, object_properties_t p, const std::vector<ScicosID>& v)
 {
 
     if (k == ANNOTATION)
index 83b3025..2760021 100644 (file)
@@ -49,20 +49,19 @@ private:
         return SUCCESS;
     }
 
-    void getGeometry(size_t* len, double** data) const
+    void getGeometry(std::vector<double>& v) const
     {
-        *len = 4;
-        *data = geometry.copy();
+        geometry.fill(v);
     }
 
-    update_status_t setGeometry(size_t len, double* data)
+    update_status_t setGeometry(const std::vector<double>& v)
     {
-        if (len != 4)
+        if (v.size() != 4)
         {
             return FAIL;
         }
 
-        Geometry g = Geometry(data);
+        Geometry g = Geometry(v);
         if (g == geometry)
         {
             return NO_CHANGES;
index 1a22d5c..cba3389 100644 (file)
@@ -13,6 +13,8 @@
 #ifndef BASEOBJECT_HXX_
 #define BASEOBJECT_HXX_
 
+#include <vector>
+
 #include "utilities.hxx"
 
 namespace org_scilab_modules_scicos
@@ -83,15 +85,15 @@ struct Geometry
 
     Geometry() : x(0), y(0), width(0), height(0) {};
     Geometry(const Geometry& g) : x(g.x), y(g.y), width(g.width), height(g.height) {};
-    Geometry(double* data) : x(data[0]), y(data[1]), width(data[2]), height(data[3]) {};
-    double* copy() const
+    Geometry(const std::vector<double>& v) : x(v[0]), y(v[1]), width(v[2]), height(v[3]) {};
+
+    void fill(std::vector<double>& v) const
     {
-        double* d = new double[4];
-        d[0] = x;
-        d[1] = y;
-        d[2] = width;
-        d[3] = height;
-        return d;
+        v.resize(4);
+        v[0] = x;
+        v[1] = y;
+        v[2] = width;
+        v[3] = height;
     }
     bool operator==(const Geometry& g) const
     {
index e54a42e..ad55dd8 100644 (file)
@@ -130,20 +130,19 @@ private:
         this->eout = eout;
     }
 
-    void getGeometry(size_t* len, double** data) const
+    void getGeometry(std::vector<double>& v) const
     {
-        *len = 4;
-        *data = geometry.copy();
+        geometry.fill(v);
     }
 
-    update_status_t setGeometry(size_t len, double* data)
+    update_status_t setGeometry(const std::vector<double>& v)
     {
-        if (len != 4)
+        if (v.size() != 4)
         {
             return FAIL;
         }
 
-        Geometry g = Geometry(data);
+        Geometry g = Geometry(v);
         if (g == geometry)
         {
             return NO_CHANGES;
index 7e36803..3225ede 100644 (file)
@@ -83,7 +83,7 @@ struct gui
     {
         std::string interface;
         org_scilab_modules_scicos::model::Block* adaptee = adaptor.getAdaptee();
-        Controller::get_instance()->getObjectProperty(adaptee->id(), adaptee->kind(), INTERFACE_FUNCTION, &interface);
+        Controller::get_instance()->getObjectProperty(adaptee->id(), adaptee->kind(), INTERFACE_FUNCTION, interface);
 
         return new types::String(interface.data());
     }
index 1471274..85875d2 100644 (file)
@@ -33,14 +33,12 @@ struct orig
         types::Double* o = new types::Double(1, 2, &data);
         model::Block* adaptee = adaptor.getAdaptee();
 
-        double* geom;
-        size_t len;
-        Controller::get_instance()->getObjectProperty(adaptee->id(), adaptee->kind(), GEOMETRY, &len, &geom);
+        std::vector<double> geom;
+        Controller::get_instance()->getObjectProperty(adaptee->id(), adaptee->kind(), GEOMETRY, geom);
 
         data[0] = geom[0];
         data[1] = geom[1];
 
-        delete[] geom;
         return o;
     }
 
@@ -58,15 +56,13 @@ struct orig
         }
 
         model::Block* adaptee = adaptor.getAdaptee();
-        double* geom;
-        size_t len;
-        Controller::get_instance()->getObjectProperty(adaptee->id(), adaptee->kind(), GEOMETRY, &len, &geom);
+        std::vector<double> geom;
+        Controller::get_instance()->getObjectProperty(adaptee->id(), adaptee->kind(), GEOMETRY, geom);
 
         geom[0] = current->get(0);
         geom[1] = current->get(1);
 
-        Controller::get_instance()->setObjectProperty(adaptee->id(), adaptee->kind(), GEOMETRY, len, geom);
-        delete[] geom;
+        Controller::get_instance()->setObjectProperty(adaptee->id(), adaptee->kind(), GEOMETRY, geom);
         return true;
     }
 };
@@ -80,13 +76,11 @@ struct sz
         types::Double* o = new types::Double(1, 2, &data);
         model::Block* adaptee = adaptor.getAdaptee();
 
-        double* geom;
-        size_t len;
-        Controller::get_instance()->getObjectProperty(adaptee->id(), adaptee->kind(), GEOMETRY, &len, &geom);
+        std::vector<double> geom;
+        Controller::get_instance()->getObjectProperty(adaptee->id(), adaptee->kind(), GEOMETRY, geom);
 
         data[0] = geom[2];
         data[1] = geom[3];
-        delete[] geom;
         return o;
     }
 
@@ -104,15 +98,13 @@ struct sz
         }
 
         model::Block* adaptee = adaptor.getAdaptee();
-        double* geom;
-        size_t len;
-        Controller::get_instance()->getObjectProperty(adaptee->id(), adaptee->kind(), GEOMETRY, &len, &geom);
+        std::vector<double> geom;
+        Controller::get_instance()->getObjectProperty(adaptee->id(), adaptee->kind(), GEOMETRY, geom);
 
         geom[2] = current->get(0);
         geom[3] = current->get(1);
 
-        Controller::get_instance()->setObjectProperty(adaptee->id(), adaptee->kind(), GEOMETRY, len, geom);
-        delete[] geom;
+        Controller::get_instance()->setObjectProperty(adaptee->id(), adaptee->kind(), GEOMETRY, geom);
         return true;
     }
 };