Xcos MVC: reference counter instead of shared_ptr 17/15917/6
Clément DAVID [Wed, 4 Feb 2015 10:48:31 +0000 (11:48 +0100)]
shared_ptr can not be used on the Java side, instead of using 2
reference counting scheme (for composition and for multi-view) the
previous shared_ptr usage has been moved to the reference counting.

The API just allow any view to referenceObject which increment the
deleteObject number of calls needed to free the object.

This commit also fix memory leaks by :

 * Allowing a cloneObject without deep copy of children.
 * Implementing DiagramAdapter cloning the right way (cloning children
   only once).
 * Re-using properties accessor on copy-constructors

Change-Id: I0c7d509bd7944c9044371ea2ae1b49900413071b

64 files changed:
scilab/modules/scicos/Makefile.am
scilab/modules/scicos/Makefile.in
scilab/modules/scicos/includes/Controller.hxx
scilab/modules/scicos/includes/Model.hxx
scilab/modules/scicos/includes/utilities.hxx
scilab/modules/scicos/sci_gateway/cpp/sci_scicos_new.cpp
scilab/modules/scicos/src/c/scicos.vcxproj
scilab/modules/scicos/src/c/scicos.vcxproj.filters
scilab/modules/scicos/src/cpp/Controller.cpp
scilab/modules/scicos/src/cpp/LoggerView.cpp
scilab/modules/scicos/src/cpp/LoggerView.hxx
scilab/modules/scicos/src/cpp/Model.cpp
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/Link.hxx
scilab/modules/scicos/src/cpp/view_scilab/BaseAdapter.hxx
scilab/modules/scicos/src/cpp/view_scilab/BlockAdapter.cpp
scilab/modules/scicos/src/cpp/view_scilab/BlockAdapter.hxx
scilab/modules/scicos/src/cpp/view_scilab/CprAdapter.cpp
scilab/modules/scicos/src/cpp/view_scilab/CprAdapter.hxx
scilab/modules/scicos/src/cpp/view_scilab/DiagramAdapter.cpp
scilab/modules/scicos/src/cpp/view_scilab/DiagramAdapter.hxx
scilab/modules/scicos/src/cpp/view_scilab/GraphicsAdapter.cpp
scilab/modules/scicos/src/cpp/view_scilab/GraphicsAdapter.hxx
scilab/modules/scicos/src/cpp/view_scilab/LinkAdapter.cpp
scilab/modules/scicos/src/cpp/view_scilab/LinkAdapter.hxx
scilab/modules/scicos/src/cpp/view_scilab/ModelAdapter.cpp
scilab/modules/scicos/src/cpp/view_scilab/ModelAdapter.hxx
scilab/modules/scicos/src/cpp/view_scilab/ParamsAdapter.cpp
scilab/modules/scicos/src/cpp/view_scilab/ParamsAdapter.hxx
scilab/modules/scicos/src/cpp/view_scilab/ScsAdapter.cpp
scilab/modules/scicos/src/cpp/view_scilab/ScsAdapter.hxx
scilab/modules/scicos/src/cpp/view_scilab/StateAdapter.cpp
scilab/modules/scicos/src/cpp/view_scilab/StateAdapter.hxx
scilab/modules/scicos/src/cpp/view_scilab/TextAdapter.cpp
scilab/modules/scicos/src/cpp/view_scilab/TextAdapter.hxx
scilab/modules/scicos/src/cpp/view_scilab/ports_management.hxx
scilab/modules/scicos/src/cpp/view_scilab/recursive_cloning.cpp [deleted file]
scilab/modules/scicos/src/cpp/view_scilab/recursive_cloning.hxx [deleted file]
scilab/modules/scicos/tests/unit_tests/model/Block.dia.ref
scilab/modules/scicos/tests/unit_tests/model/Block_copy_list.dia.ref
scilab/modules/scicos/tests/unit_tests/model/Consecutive_init.dia.ref
scilab/modules/scicos/tests/unit_tests/model/Deep_cloning.dia.ref
scilab/modules/scicos/tests/unit_tests/model/Delete_objects.dia.ref
scilab/modules/scicos/tests/unit_tests/model/Diagram.dia.ref
scilab/modules/scicos/tests/unit_tests/model/SuperBlock.dia.ref
scilab/modules/scicos/tests/unit_tests/model/SuperBlock_in_SuperBlock.dia.ref
scilab/modules/scicos/tests/unit_tests/model/link_preservation.dia.ref
scilab/modules/scicos/tests/unit_tests/model/simple_delete.dia.ref
scilab/modules/xcos/src/java/org/scilab/modules/xcos/Controller.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/JavaController.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/JavaControllerJNI.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/Kind.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/ObjectProperties.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/UpdateStatus.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/VectorOfBool.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/VectorOfDouble.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/VectorOfInt.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/VectorOfScicosID.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/VectorOfString.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/View.java
scilab/modules/xcos/src/jni/JavaController_wrap.cxx
scilab/modules/xcos/src/jni/JavaController_wrap.h

index 7d1481d..5e8bdf8 100644 (file)
@@ -33,8 +33,7 @@ src/cpp/view_scilab/ModelAdapter.cpp \
 src/cpp/view_scilab/ParamsAdapter.cpp \
 src/cpp/view_scilab/ScsAdapter.cpp \
 src/cpp/view_scilab/StateAdapter.cpp \
-src/cpp/view_scilab/TextAdapter.cpp \
-src/cpp/view_scilab/recursive_cloning.cpp
+src/cpp/view_scilab/TextAdapter.cpp
 
 
 SCICOS_C_SOURCES = \
index 458ec0f..c1ce455 100644 (file)
@@ -219,7 +219,6 @@ am__libsciscicos_algo_la_SOURCES_DIST = src/c/noscicos/noscicos.c \
        src/cpp/view_scilab/ScsAdapter.cpp \
        src/cpp/view_scilab/StateAdapter.cpp \
        src/cpp/view_scilab/TextAdapter.cpp \
-       src/cpp/view_scilab/recursive_cloning.cpp \
        src/c/scilab5_needed_stubs.c src/c/tree.c \
        src/c/scicos_malloc.c src/c/scicos_print.c src/c/import.c \
        src/c/scicos.c src/c/scicos_free.c src/c/sciblk2.c \
@@ -253,8 +252,7 @@ am__objects_2 = src/cpp/libsciscicos_algo_la-il_state.lo \
        src/cpp/view_scilab/libsciscicos_algo_la-ParamsAdapter.lo \
        src/cpp/view_scilab/libsciscicos_algo_la-ScsAdapter.lo \
        src/cpp/view_scilab/libsciscicos_algo_la-StateAdapter.lo \
-       src/cpp/view_scilab/libsciscicos_algo_la-TextAdapter.lo \
-       src/cpp/view_scilab/libsciscicos_algo_la-recursive_cloning.lo
+       src/cpp/view_scilab/libsciscicos_algo_la-TextAdapter.lo
 am__objects_3 = src/c/libsciscicos_algo_la-scilab5_needed_stubs.lo \
        src/c/libsciscicos_algo_la-tree.lo \
        src/c/libsciscicos_algo_la-scicos_malloc.lo \
@@ -961,8 +959,7 @@ src/cpp/view_scilab/ModelAdapter.cpp \
 src/cpp/view_scilab/ParamsAdapter.cpp \
 src/cpp/view_scilab/ScsAdapter.cpp \
 src/cpp/view_scilab/StateAdapter.cpp \
-src/cpp/view_scilab/TextAdapter.cpp \
-src/cpp/view_scilab/recursive_cloning.cpp
+src/cpp/view_scilab/TextAdapter.cpp
 
 SCICOS_C_SOURCES = \
 src/c/scilab5_needed_stubs.c \
@@ -1521,9 +1518,6 @@ src/cpp/view_scilab/libsciscicos_algo_la-StateAdapter.lo:  \
 src/cpp/view_scilab/libsciscicos_algo_la-TextAdapter.lo:  \
        src/cpp/view_scilab/$(am__dirstamp) \
        src/cpp/view_scilab/$(DEPDIR)/$(am__dirstamp)
-src/cpp/view_scilab/libsciscicos_algo_la-recursive_cloning.lo:  \
-       src/cpp/view_scilab/$(am__dirstamp) \
-       src/cpp/view_scilab/$(DEPDIR)/$(am__dirstamp)
 src/c/$(am__dirstamp):
        @$(MKDIR_P) src/c
        @: > src/c/$(am__dirstamp)
@@ -2174,7 +2168,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/view_scilab/$(DEPDIR)/libsciscicos_algo_la-ScsAdapter.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/view_scilab/$(DEPDIR)/libsciscicos_algo_la-StateAdapter.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/view_scilab/$(DEPDIR)/libsciscicos_algo_la-TextAdapter.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/view_scilab/$(DEPDIR)/libsciscicos_algo_la-recursive_cloning.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/scicos_sundials/src/cvode/$(DEPDIR)/libscisundials_la-cvode.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/scicos_sundials/src/cvode/$(DEPDIR)/libscisundials_la-cvode_dense.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/scicos_sundials/src/cvode/$(DEPDIR)/libscisundials_la-cvode_direct.Plo@am__quote@
@@ -2978,13 +2971,6 @@ src/cpp/view_scilab/libsciscicos_algo_la-TextAdapter.lo: src/cpp/view_scilab/Tex
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciscicos_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/view_scilab/libsciscicos_algo_la-TextAdapter.lo `test -f 'src/cpp/view_scilab/TextAdapter.cpp' || echo '$(srcdir)/'`src/cpp/view_scilab/TextAdapter.cpp
 
-src/cpp/view_scilab/libsciscicos_algo_la-recursive_cloning.lo: src/cpp/view_scilab/recursive_cloning.cpp
-@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciscicos_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/view_scilab/libsciscicos_algo_la-recursive_cloning.lo -MD -MP -MF src/cpp/view_scilab/$(DEPDIR)/libsciscicos_algo_la-recursive_cloning.Tpo -c -o src/cpp/view_scilab/libsciscicos_algo_la-recursive_cloning.lo `test -f 'src/cpp/view_scilab/recursive_cloning.cpp' || echo '$(srcdir)/'`src/cpp/view_scilab/recursive_cloning.cpp
-@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/cpp/view_scilab/$(DEPDIR)/libsciscicos_algo_la-recursive_cloning.Tpo src/cpp/view_scilab/$(DEPDIR)/libsciscicos_algo_la-recursive_cloning.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/cpp/view_scilab/recursive_cloning.cpp' object='src/cpp/view_scilab/libsciscicos_algo_la-recursive_cloning.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciscicos_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/view_scilab/libsciscicos_algo_la-recursive_cloning.lo `test -f 'src/cpp/view_scilab/recursive_cloning.cpp' || echo '$(srcdir)/'`src/cpp/view_scilab/recursive_cloning.cpp
-
 sci_gateway/cpp/libsciscicos_cli_la-sci_scicos_log.lo: sci_gateway/cpp/sci_scicos_log.cpp
 @am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciscicos_cli_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT sci_gateway/cpp/libsciscicos_cli_la-sci_scicos_log.lo -MD -MP -MF sci_gateway/cpp/$(DEPDIR)/libsciscicos_cli_la-sci_scicos_log.Tpo -c -o sci_gateway/cpp/libsciscicos_cli_la-sci_scicos_log.lo `test -f 'sci_gateway/cpp/sci_scicos_log.cpp' || echo '$(srcdir)/'`sci_gateway/cpp/sci_scicos_log.cpp
 @am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) sci_gateway/cpp/$(DEPDIR)/libsciscicos_cli_la-sci_scicos_log.Tpo sci_gateway/cpp/$(DEPDIR)/libsciscicos_cli_la-sci_scicos_log.Plo
index 9ca5f9a..4667a36 100644 (file)
@@ -15,7 +15,6 @@
 
 #include <vector>
 #include <map>
-#include <memory>
 
 #include "utilities.hxx"
 #include "Model.hxx"
@@ -43,10 +42,22 @@ public:
     ~Controller();
 
     ScicosID createObject(kind_t k);
+    unsigned referenceObject(const ScicosID uid) const;
+    template<typename T>
+    T* referenceObject(T* o) const
+    {
+        referenceObject(o->id());
+        return o;
+    }
     void deleteObject(ScicosID uid);
-    ScicosID cloneObject(ScicosID uid);
+    ScicosID cloneObject(ScicosID uid, bool cloneChildren);
 
-    std::shared_ptr<model::BaseObject> getObject(ScicosID uid) const;
+    model::BaseObject* getObject(ScicosID uid) const;
+    template<typename T>
+    T* getObject(ScicosID uid) const
+    {
+        return static_cast<T*>(getObject(uid));
+    }
 
     template<typename T>
     bool getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, T& v) const
@@ -101,10 +112,10 @@ private:
      * Methods
      */
 
-    ScicosID cloneObject(std::map<ScicosID, ScicosID>& mapped, ScicosID uid);
+    ScicosID cloneObject(std::map<ScicosID, ScicosID>& mapped, ScicosID uid, bool cloneChildren);
 
     template<typename T>
-    void cloneProperties(std::shared_ptr<model::BaseObject> initial, ScicosID clone)
+    void cloneProperties(model::BaseObject* initial, ScicosID clone)
     {
         for (int i = 0; i < MAX_OBJECT_PROPERTIES; ++i)
         {
index def81f5..b95f5cf 100644 (file)
@@ -16,7 +16,6 @@
 #include <vector>
 #include <unordered_map>
 #include <string>
-#include <memory>
 
 #include "utilities.hxx"
 #include "model/BaseObject.hxx"
@@ -37,6 +36,8 @@ public:
      */
 
     ScicosID createObject(kind_t k);
+    unsigned referenceObject(const ScicosID uid);
+    unsigned& referenceCount(ScicosID uid);
     void deleteObject(ScicosID uid);
 
     bool getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, double& v) const;
@@ -60,17 +61,31 @@ public:
     update_status_t setObjectProperty(ScicosID uid, kind_t k, object_properties_t p, const std::vector<ScicosID>& v);
 
     /*
-     * Model internal methods
+     * Model custom methods
      */
 
-    std::shared_ptr<model::BaseObject> getObject(ScicosID uid) const;
+    model::BaseObject* getObject(ScicosID uid) const;
+    template<typename T>
+    T* getObject(ScicosID uid) const
+    {
+        return static_cast<T*>(getObject(uid));
+    };
 
     model::Datatype* flyweight(const model::Datatype& d);
     void erase(model::Datatype* d);
 
 private:
     ScicosID lastId;
-    typedef std::unordered_map<ScicosID, std::shared_ptr<model::BaseObject> > objects_map_t;
+
+    struct ModelObject
+    {
+        ModelObject(model::BaseObject* o) : m_o(o), m_refCounter(0) {}
+
+        model::BaseObject* m_o;
+        unsigned m_refCounter;
+    };
+
+    typedef std::unordered_map<ScicosID, ModelObject > objects_map_t;
     objects_map_t allObjects;
 
     typedef std::vector<model::Datatype*> datatypes_set_t;
index 1f8d25a..522a606 100644 (file)
 #ifndef UTILITIES_HXX_
 #define UTILITIES_HXX_
 
-//#include <iostream>
-
 /**
  * A unique ID is used to represent a reference to any object in the model.
  *
- * The '0' value is used indicate that BaseObject is not handled by the controller.
+ * The 'ScicosID()' zero initialization value is used indicate that BaseObject is not handled by the controller.
  */
 typedef long long ScicosID;
 
@@ -53,7 +51,8 @@ enum kind_t
  */
 enum object_properties_t
 {
-    PARENT_DIAGRAM,     //!< model::Annotation::parentDiagram or model::Block::parentDiagram or model::Link::parentDiagram value
+    PARENT_DIAGRAM,     //!< model::*::parentDiagram value (used to locate the diagram layer)
+    PARENT_BLOCK,       //!< model::*::parentBlock value (used to locate the upper layer in case of SuperBlocks hierarchy)
     GEOMETRY,           //!< model::Annotation::geometry or model::Block::geometry value
     DESCRIPTION,        //!< model::Annotation::description text
     FONT,               //!< model::Annotation::description font
@@ -81,7 +80,6 @@ enum object_properties_t
     OPAR,               //!< model::Block::opar value
     EQUATIONS,          //!< model::Block::equations value
     UID,                //!< model::Block::uid value
-    PARENT_BLOCK,       //!< model::Block::parentBlock value
     CHILDREN,           //!< model::Block::children for superblocks or model::Diagram::children value
     PORT_REFERENCE,     //!< model::Block::portReference value
     STYLE,              //!< model::Block & Port::style value
index d327712..a6a891f 100644 (file)
@@ -58,7 +58,7 @@ types::InternalType * alloc_and_set(kind_t k, types::String* type_name, types::t
 
     // create the associated object
     ScicosID o = controller.createObject(k);
-    Adaptor* adaptor = new Adaptor(std::static_pointer_cast<Adaptee>(controller.getObject(o)));
+    Adaptor* adaptor = new Adaptor(controller, controller.getObject<Adaptee>(o));
 
     // the first header entry is the type
     for (int i = 1; i < (int)in.size(); i++)
@@ -79,7 +79,8 @@ template<class Adaptor, class Adaptee>
 types::InternalType * alloc_and_set_as_tlist(types::String* type_name, types::typed_list &in)
 {
     // check header
-    Adaptor adaptor(0);
+    // The default constructor should be implemented for this Adapter
+    Adaptor adaptor;
     for (int i = 1; i < (int)in.size(); i++)
     {
         std::wstring name(type_name->get(i));
@@ -105,7 +106,8 @@ template<class Adaptor, class Adaptee>
 types::InternalType * alloc_and_set_as_mlist(types::String* type_name, types::typed_list &in)
 {
     // check header
-    Adaptor adaptor(0);
+    // The default constructor should be implemented for this Adapter
+    Adaptor adaptor;
     for (int i = 1; i < (int)in.size(); i++)
     {
         std::wstring name(type_name->get(i));
index ac52e9a..86504ae 100644 (file)
@@ -283,7 +283,6 @@ lib /DEF:"$(ProjectDir)differential_equations_f_Import.def" /SUBSYSTEM:WINDOWS /
     <ClCompile Include="..\cpp\view_scilab\ScsAdapter.cpp" />
     <ClCompile Include="..\cpp\view_scilab\StateAdapter.cpp" />
     <ClCompile Include="..\cpp\view_scilab\TextAdapter.cpp" />
-    <ClCompile Include="..\cpp\view_scilab\recursive_cloning.cpp" />
     <ClCompile Include="copyvarfromlistentry.c" />
     <ClCompile Include="createblklist.c" />
     <ClCompile Include="DllmainScicos.c" />
@@ -355,7 +354,6 @@ lib /DEF:"$(ProjectDir)differential_equations_f_Import.def" /SUBSYSTEM:WINDOWS /
     <ClInclude Include="..\cpp\view_scilab\StateAdapter.hxx" />
     <ClInclude Include="..\cpp\view_scilab\TextAdapter.hxx" />
     <ClInclude Include="..\cpp\view_scilab\ports_management.hxx" />
-    <ClInclude Include="..\cpp\view_scilab\recursive_cloning.hxx" />
     <ClInclude Include="copyvarfromlistentry.h" />
     <ClInclude Include="createblklist.h" />
     <ClInclude Include="..\..\includes\dynlib_scicos.h" />
index c4608f0..84f44f1 100644 (file)
     <ClCompile Include="..\cpp\view_scilab\ParamsAdapter.cpp">
       <Filter>Source Files\MVC\view_scilab</Filter>
     </ClCompile>
-    <ClCompile Include="..\cpp\view_scilab\recursive_cloning.cpp">
-      <Filter>Source Files\MVC\view_scilab</Filter>
-    </ClCompile>
     <ClCompile Include="..\..\sci_gateway\cpp\sci_validvar.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
     <ClInclude Include="..\cpp\view_scilab\ports_management.hxx">
       <Filter>Header Files\MVC\view_scilab</Filter>
     </ClInclude>
-    <ClInclude Include="..\cpp\view_scilab\recursive_cloning.hxx">
-      <Filter>Header Files\MVC\view_scilab</Filter>
-    </ClInclude>
     <ClInclude Include="..\..\includes\Controller.hxx">
       <Filter>Header Files\MVC</Filter>
     </ClInclude>
index cb77023..7a4ec4a 100644 (file)
 #include <string>
 #include <vector>
 #include <map>
-#include <memory>
 #include <utility>
 #include <algorithm>
 
+
+#define REF_DEBUG 0
+#if REF_DEBUG
+#include "scilabWrite.hxx"
+#define REF_PRINT(uid, refCount) \
+       do { \
+       std::stringstream print; \
+       print << "referenceObject( " << uid << " ) : " << refCount << std::endl; \
+       scilabWrite(print.str().data()); \
+       } while(0)
+#define UNREF_PRINT(uid, count) \
+       do { \
+       std::stringstream print; \
+       print << "unreferenceObject( " << uid << " ) : " << refCount << std::endl; \
+       scilabWrite(print.str().data()); \
+       } while(0)
+#define CLONE_PRINT(uid, clone) \
+       do { \
+       std::stringstream print; \
+       print << "cloneObject( " << uid << " ) : " << clone << std::endl; \
+       scilabWrite(print.str().data()); \
+       } while(0)
+#else
+#define REF_PRINT(uid, refCount)
+#define UNREF_PRINT(uid, refCount)
+#define CLONE_PRINT(uid, clone)
+#endif
+
 #include "Controller.hxx"
 
 #include "LoggerView.hxx"
@@ -100,18 +127,41 @@ Controller::~Controller()
 
 ScicosID Controller::createObject(kind_t k)
 {
-    ScicosID id = m_instance.model.createObject(k);
+    ScicosID uid = m_instance.model.createObject(k);
 
     for (view_set_t::iterator iter = m_instance.allViews.begin(); iter != m_instance.allViews.end(); ++iter)
     {
-        (*iter)->objectCreated(id, k);
+        (*iter)->objectCreated(uid, k);
     }
 
-    return id;
+    return uid;
+}
+
+unsigned Controller::referenceObject(const ScicosID uid) const
+{
+    unsigned refCount = m_instance.model.referenceObject(uid);
+    REF_PRINT(uid, refCount);
+    return refCount;
 }
 
 void Controller::deleteObject(ScicosID uid)
 {
+    // if this object is the empty uid, ignore it : is is not stored in the model
+    if (uid == 0)
+    {
+        return;
+    }
+
+    // if this object has been referenced somewhere else do not delete it but decrement the reference counter
+    unsigned& refCount = m_instance.model.referenceCount(uid);
+    if (refCount > 0)
+    {
+        --refCount;
+        UNREF_PRINT(uid, refCount);
+        return;
+    }
+
+    // We need to delete this object and cleanup all the referenced model object
     auto initial = getObject(uid);
     const kind_t k = initial->kind();
 
@@ -119,26 +169,33 @@ void Controller::deleteObject(ScicosID uid)
     if (k == ANNOTATION)
     {
         unlinkVector(uid, k, PARENT_DIAGRAM, CHILDREN);
+        unlinkVector(uid, k, PARENT_BLOCK, CHILDREN);
         // RELATED_TO is not referenced back
     }
     else if (k == BLOCK)
     {
         unlinkVector(uid, k, PARENT_DIAGRAM, CHILDREN);
+        unlinkVector(uid, k, PARENT_BLOCK, CHILDREN);
+
         deleteVector(uid, k, INPUTS);
         deleteVector(uid, k, OUTPUTS);
         deleteVector(uid, k, EVENT_INPUTS);
         deleteVector(uid, k, EVENT_OUTPUTS);
-        unlinkVector(uid, k, PARENT_BLOCK, CHILDREN);
+
+        unlink(uid, k, CHILDREN, PARENT_BLOCK);
         deleteVector(uid, k, CHILDREN);
         // FIXME what about REFERENCED_PORT ?
     }
     else if (k == DIAGRAM)
     {
+        unlink(uid, k, CHILDREN, PARENT_DIAGRAM);
         deleteVector(uid, k, CHILDREN);
     }
     else if (k == LINK)
     {
         unlinkVector(uid, k, PARENT_DIAGRAM, CHILDREN);
+        unlinkVector(uid, k, PARENT_BLOCK, CHILDREN);
+
         unlinkVector(uid, k, SOURCE_PORT, CONNECTED_SIGNALS);
         unlinkVector(uid, k, DESTINATION_PORT, CONNECTED_SIGNALS);
     }
@@ -185,17 +242,20 @@ void Controller::unlinkVector(ScicosID uid, kind_t k, object_properties_t uid_pr
 
 void Controller::unlink(ScicosID uid, kind_t k, object_properties_t uid_prop, object_properties_t ref_prop)
 {
-    ScicosID v;
+    std::vector<ScicosID> v;
     getObjectProperty(uid, k, uid_prop, v);
-    if (v != 0)
+    for (const ScicosID id : v)
     {
-        auto o = getObject(v);
-        // Find which end of the link is connected to the port
-        ScicosID connected_port;
-        getObjectProperty(o->id(), o->kind(), ref_prop, connected_port);
-        if (connected_port == uid)
+        if (id != 0)
         {
-            setObjectProperty(o->id(), o->kind(), ref_prop, 0ll);
+            auto o = getObject(id);
+            // Find which end of the link is connected to the port
+            ScicosID oppositeRef;
+            getObjectProperty(o->id(), o->kind(), ref_prop, oppositeRef);
+            if (oppositeRef == uid)
+            {
+                setObjectProperty(o->id(), o->kind(), ref_prop, ScicosID());
+            }
         }
     }
 }
@@ -205,13 +265,13 @@ void Controller::deleteVector(ScicosID uid, kind_t k, object_properties_t uid_pr
     std::vector<ScicosID> children;
     getObjectProperty(uid, k, uid_prop, children);
 
-for (ScicosID id : children)
+    for (ScicosID id : children)
     {
         deleteObject(id);
     }
 }
 
-ScicosID Controller::cloneObject(std::map<ScicosID, ScicosID>& mapped, ScicosID uid)
+ScicosID Controller::cloneObject(std::map<ScicosID, ScicosID>& mapped, ScicosID uid, bool cloneChildren)
 {
     auto initial = getObject(uid);
     const kind_t k = initial->kind();
@@ -231,6 +291,7 @@ ScicosID Controller::cloneObject(std::map<ScicosID, ScicosID>& mapped, ScicosID
     if (k == ANNOTATION)
     {
         deepClone(mapped, uid, o, k, PARENT_DIAGRAM, false);
+        deepClone(mapped, uid, o, k, PARENT_BLOCK, false);
         deepClone(mapped, uid, o, k, RELATED_TO, true);
     }
     else if (k == BLOCK)
@@ -240,24 +301,32 @@ ScicosID Controller::cloneObject(std::map<ScicosID, ScicosID>& mapped, ScicosID
         deepCloneVector(mapped, uid, o, k, OUTPUTS, true);
         deepCloneVector(mapped, uid, o, k, EVENT_INPUTS, true);
         deepCloneVector(mapped, uid, o, k, EVENT_OUTPUTS, true);
+
         deepClone(mapped, uid, o, k, PARENT_BLOCK, false);
-        deepCloneVector(mapped, uid, o, k, CHILDREN, true);
+        if (cloneChildren)
+        {
+            deepCloneVector(mapped, uid, o, k, CHILDREN, true);
+        }
         // FIXME what about REFERENCED_PORT ?
     }
     else if (k == DIAGRAM)
     {
-        deepCloneVector(mapped, uid, o, k, CHILDREN, true);
+        if (cloneChildren)
+        {
+            deepCloneVector(mapped, uid, o, k, CHILDREN, true);
+        }
     }
     else if (k == LINK)
     {
         deepClone(mapped, uid, o, k, PARENT_DIAGRAM, false);
-        deepClone(mapped, uid, o, k, SOURCE_PORT, true);
-        deepClone(mapped, uid, o, k, DESTINATION_PORT, true);
+        deepClone(mapped, uid, o, k, PARENT_BLOCK, false);
+        deepClone(mapped, uid, o, k, SOURCE_PORT, false);
+        deepClone(mapped, uid, o, k, DESTINATION_PORT, false);
     }
     else if (k == PORT)
     {
-        deepClone(mapped, uid, o, k, SOURCE_BLOCK, true);
-        deepCloneVector(mapped, uid, o, k, CONNECTED_SIGNALS, true);
+        deepClone(mapped, uid, o, k, SOURCE_BLOCK, false);
+        deepCloneVector(mapped, uid, o, k, CONNECTED_SIGNALS, false);
     }
 
     return o;
@@ -281,7 +350,7 @@ void Controller::deepClone(std::map<ScicosID, ScicosID>& mapped, ScicosID uid, S
         {
             if (v != 0)
             {
-                cloned = cloneObject(mapped, v);
+                cloned = cloneObject(mapped, v, true);
             }
             else
             {
@@ -305,7 +374,7 @@ void Controller::deepCloneVector(std::map<ScicosID, ScicosID>& mapped, ScicosID
     std::vector<ScicosID> cloned;
     cloned.reserve(v.size());
 
-for (const ScicosID & id : v)
+    for (const ScicosID & id : v)
     {
         if (id == 0)
         {
@@ -325,7 +394,7 @@ for (const ScicosID & id : v)
             {
                 if (id != 0)
                 {
-                    cloned.push_back(cloneObject(mapped, id));
+                    cloned.push_back(cloneObject(mapped, id, true));
                 }
                 else
                 {
@@ -342,13 +411,15 @@ for (const ScicosID & id : v)
     setObjectProperty(clone, k, p, cloned);
 }
 
-ScicosID Controller::cloneObject(ScicosID uid)
+ScicosID Controller::cloneObject(ScicosID uid, bool cloneChildren)
 {
     std::map<ScicosID, ScicosID> mapped;
-    return cloneObject(mapped, uid);
+    ScicosID clone = cloneObject(mapped, uid, cloneChildren);
+    CLONE_PRINT(uid, clone);
+    return clone;
 }
 
-std::shared_ptr<model::BaseObject> Controller::getObject(ScicosID uid) const
+model::BaseObject* Controller::getObject(ScicosID uid) const
 {
     return m_instance.model.getObject(uid);
 }
index 99f3892..3020815 100644 (file)
@@ -25,7 +25,7 @@ namespace org_scilab_modules_scicos
 static const bool USE_SCILAB_WRITE = true;
 
 LoggerView::LoggerView() :
-    View(), level(LOG_WARNING)
+    View(), m_level(LOG_WARNING)
 {
 }
 
@@ -66,7 +66,7 @@ const wchar_t* LoggerView::toString(enum LogLevel level)
 
 void LoggerView::log(enum LogLevel level, const std::stringstream& msg)
 {
-    if (level >= this->level)
+    if (level >= this->m_level)
     {
         std::string str = msg.str();
         if (USE_SCILAB_WRITE)
@@ -82,7 +82,7 @@ void LoggerView::log(enum LogLevel level, const std::stringstream& msg)
 
 void LoggerView::log(enum LogLevel level, const char* msg)
 {
-    if (level >= this->level)
+    if (level >= this->m_level)
     {
         if (USE_SCILAB_WRITE)
         {
@@ -97,7 +97,7 @@ void LoggerView::log(enum LogLevel level, const char* msg)
 
 void LoggerView::log(enum LogLevel level, const wchar_t* msg)
 {
-    if (level >= this->level)
+    if (level >= this->m_level)
     {
         if (USE_SCILAB_WRITE)
         {
index 396ebe6..610d914 100644 (file)
@@ -45,11 +45,11 @@ public:
 
     enum LogLevel getLevel() const
     {
-        return level;
+        return m_level;
     }
     void setLevel(enum LogLevel level)
     {
-        this->level = level;
+        this->m_level = level;
     }
 
     void log(enum LogLevel level, const std::stringstream& msg);
@@ -67,7 +67,7 @@ public:
     void propertyUpdated(const ScicosID& uid, kind_t k, object_properties_t p, update_status_t u);
 
 private:
-    enum LogLevel level;
+    enum LogLevel m_level;
 };
 
 } /* namespace org_scilab_modules_scicos */
index b0ca130..c087ee0 100644 (file)
@@ -13,7 +13,6 @@
 #include <string>
 #include <utility>
 #include <algorithm>
-#include <memory>
 
 #include "Model.hxx"
 #include "utilities.hxx"
@@ -50,23 +49,23 @@ ScicosID Model::createObject(kind_t k)
     /*
      * Allocate the object per kind
      */
-    std::shared_ptr<model::BaseObject> o;
+    model::BaseObject* o;
     switch (k)
     {
         case ANNOTATION:
-            o = std::make_shared<model::Annotation>(model::Annotation());
+            o = new model::Annotation();
             break;
         case DIAGRAM:
-            o = std::make_shared<model::Diagram>(model::Diagram());
+            o = new model::Diagram();
             break;
         case BLOCK:
-            o = std::make_shared<model::Block>(model::Block());
+            o = new model::Block();
             break;
         case LINK:
-            o = std::make_shared<model::Link>(model::Link());
+            o = new model::Link();
             break;
         case PORT:
-            o = std::make_shared<model::Port>(model::Port());
+            o = new model::Port();
             break;
     }
 
@@ -91,7 +90,7 @@ ScicosID Model::createObject(kind_t k)
         {
             lastId++;
 
-            // if the map is full, return 0;
+            // if the map is full, return a zero initialized value;
             if (has_looped)
             {
                 return 0;
@@ -106,11 +105,36 @@ ScicosID Model::createObject(kind_t k)
     /*
      * Insert then return
      */
-    allObjects.insert(iter, std::make_pair(lastId, o));
+    allObjects.insert(iter, std::make_pair(lastId, ModelObject(o)));
     o->id(lastId);
     return lastId;
 }
 
+unsigned Model::referenceObject(const ScicosID uid)
+{
+    objects_map_t::iterator iter = allObjects.find(uid);
+    if (iter == allObjects.end())
+    {
+        return 0;
+    }
+
+    ModelObject& modelObject = iter->second;
+    return ++(modelObject.m_refCounter);
+}
+
+unsigned& Model::referenceCount(ScicosID uid)
+{
+    objects_map_t::iterator iter = allObjects.find(uid);
+    if (iter == allObjects.end())
+    {
+        throw std::string("key has not been found");
+    }
+
+    ModelObject& modelObject = iter->second;
+    return modelObject.m_refCounter;
+
+}
+
 void Model::deleteObject(ScicosID uid)
 {
     objects_map_t::iterator iter = allObjects.find(uid);
@@ -119,10 +143,20 @@ void Model::deleteObject(ScicosID uid)
         throw std::string("key has not been found");
     }
 
-    allObjects.erase(iter);
+    ModelObject& modelObject = iter->second;
+    if (modelObject.m_refCounter == 0)
+    {
+        model::BaseObject* o = modelObject.m_o;
+        allObjects.erase(iter);
+        delete o;
+    }
+    else
+    {
+        --(modelObject.m_refCounter);
+    }
 }
 
-std::shared_ptr<model::BaseObject> Model::getObject(ScicosID uid) const
+model::BaseObject* Model::getObject(ScicosID uid) const
 {
     objects_map_t::const_iterator iter = allObjects.find(uid);
     if (iter == allObjects.end())
@@ -130,7 +164,7 @@ std::shared_ptr<model::BaseObject> Model::getObject(ScicosID uid) const
         throw std::string("key has not been found");
     }
 
-    return iter->second;
+    return iter->second.m_o;
 }
 
 // datatypes being a vector of Datatype pointers, we need a dereferencing comparison operator to use std::lower_bound()
index b6ee011..96e1264 100644 (file)
@@ -63,7 +63,7 @@ bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, dou
     }
     else if (k == PORT)
     {
-        model::Port* o = static_cast<model::Port*>(getObject(uid).get());
+        model::Port* o = getObject<model::Port>(uid);
         switch (p)
         {
             case FIRING:
@@ -89,7 +89,7 @@ bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, int
     }
     else if (k == BLOCK)
     {
-        model::Block* o = static_cast<model::Block*>(getObject(uid).get());
+        model::Block* o = getObject<model::Block>(uid);
         switch (p)
         {
             case SIM_FUNCTION_API:
@@ -109,7 +109,7 @@ bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, int
     }
     else if (k == LINK)
     {
-        model::Link* o = static_cast<model::Link*>(getObject(uid).get());
+        model::Link* o = getObject<model::Link>(uid);
         switch (p)
         {
             case COLOR:
@@ -124,7 +124,7 @@ bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, int
     }
     else if (k == PORT)
     {
-        model::Port* o = static_cast<model::Port*>(getObject(uid).get());
+        model::Port* o = getObject<model::Port>(uid);
         switch (p)
         {
             case PORT_KIND:
@@ -174,7 +174,7 @@ bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, boo
     }
     else if (k == PORT)
     {
-        model::Port* o = static_cast<model::Port*>(getObject(uid).get());
+        model::Port* o = getObject<model::Port>(uid);
         switch (p)
         {
             case IMPLICIT:
@@ -192,7 +192,7 @@ bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, std
 
     if (k == ANNOTATION)
     {
-        model::Annotation* o = static_cast<model::Annotation*>(getObject(uid).get());
+        model::Annotation* o = getObject<model::Annotation>(uid);
         switch (p)
         {
             case DESCRIPTION:
@@ -210,7 +210,7 @@ bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, std
     }
     else if (k == BLOCK)
     {
-        model::Block* o = static_cast<model::Block*>(getObject(uid).get());
+        model::Block* o = getObject<model::Block>(uid);
         switch (p)
         {
             case INTERFACE_FUNCTION:
@@ -237,7 +237,7 @@ bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, std
     }
     else if (k == DIAGRAM)
     {
-        model::Diagram* o = static_cast<model::Diagram*>(getObject(uid).get());
+        model::Diagram* o = getObject<model::Diagram>(uid);;
         switch (p)
         {
             case TITLE:
@@ -255,7 +255,7 @@ bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, std
     }
     else if (k == LINK)
     {
-        model::Link* o = static_cast<model::Link*>(getObject(uid).get());
+        model::Link* o = getObject<model::Link>(uid);
         switch (p)
         {
             case LABEL:
@@ -267,7 +267,7 @@ bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, std
     }
     else if (k == PORT)
     {
-        model::Port* o = static_cast<model::Port*>(getObject(uid).get());
+        model::Port* o = getObject<model::Port>(uid);
         switch (p)
         {
             case STYLE:
@@ -288,12 +288,15 @@ bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, Sci
 
     if (k == ANNOTATION)
     {
-        model::Annotation* o = static_cast<model::Annotation*>(getObject(uid).get());
+        model::Annotation* o = getObject<model::Annotation>(uid);
         switch (p)
         {
             case PARENT_DIAGRAM:
                 o->getParentDiagram(v);
                 return true;
+            case PARENT_BLOCK:
+                o->getParentBlock(v);
+                return true;
             case RELATED_TO:
                 v = o->getRelatedTo();
                 return true;
@@ -303,7 +306,7 @@ bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, Sci
     }
     else if (k == BLOCK)
     {
-        model::Block* o = static_cast<model::Block*>(getObject(uid).get());
+        model::Block* o = getObject<model::Block>(uid);
         switch (p)
         {
             case PARENT_DIAGRAM:
@@ -325,12 +328,15 @@ bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, Sci
     }
     else if (k == LINK)
     {
-        model::Link* o = static_cast<model::Link*>(getObject(uid).get());
+        model::Link* o = getObject<model::Link>(uid);
         switch (p)
         {
             case PARENT_DIAGRAM:
                 o->getParentDiagram(v);
                 return true;
+            case PARENT_BLOCK:
+                o->getParentBlock(v);
+                return true;
             case SOURCE_PORT:
                 o->getSourcePort(v);
                 return true;
@@ -343,7 +349,7 @@ bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, Sci
     }
     else if (k == PORT)
     {
-        model::Port* o = static_cast<model::Port*>(getObject(uid).get());
+        model::Port* o = getObject<model::Port>(uid);
         switch (p)
         {
             case SOURCE_BLOCK:
@@ -356,9 +362,6 @@ bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, Sci
                 break;
         }
     }
-    else
-    {
-    }
     return false;
 }
 
@@ -367,7 +370,7 @@ bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, std
 
     if (k == ANNOTATION)
     {
-        model::Annotation* o = static_cast<model::Annotation*>(getObject(uid).get());
+        model::Annotation* o = getObject<model::Annotation>(uid);
         switch (p)
         {
             case GEOMETRY:
@@ -379,7 +382,7 @@ bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, std
     }
     else if (k == BLOCK)
     {
-        model::Block* o = static_cast<model::Block*>(getObject(uid).get());
+        model::Block* o = getObject<model::Block>(uid);
         switch (p)
         {
             case GEOMETRY:
@@ -409,7 +412,7 @@ bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, std
     }
     else if (k == DIAGRAM)
     {
-        model::Diagram* o = static_cast<model::Diagram*>(getObject(uid).get());
+        model::Diagram* o = getObject<model::Diagram>(uid);;
         switch (p)
         {
             case PROPERTIES:
@@ -421,7 +424,7 @@ bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, std
     }
     else if (k == LINK)
     {
-        model::Link* o = static_cast<model::Link*>(getObject(uid).get());
+        model::Link* o = getObject<model::Link>(uid);
         switch (p)
         {
             case CONTROL_POINTS:
@@ -442,7 +445,6 @@ bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, std
                 break;
         }
     }
-
     return false;
 }
 
@@ -459,7 +461,7 @@ bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, std
     }
     else if (k == BLOCK)
     {
-        model::Block* o = static_cast<model::Block*>(getObject(uid).get());
+        model::Block* o = getObject<model::Block>(uid);
         switch (p)
         {
             case SIM_DEP_UT:
@@ -496,7 +498,7 @@ bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, std
     }
     else if (k == PORT)
     {
-        model::Port* o = static_cast<model::Port*>(getObject(uid).get());
+        model::Port* o = getObject<model::Port>(uid);
         switch (p)
         {
             case DATATYPE:
@@ -522,7 +524,7 @@ bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, std
     }
     else if (k == BLOCK)
     {
-        model::Block* o = static_cast<model::Block*>(getObject(uid).get());
+        model::Block* o = getObject<model::Block>(uid);
         switch (p)
         {
             case EXPRS:
@@ -537,7 +539,7 @@ bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, std
     }
     else if (k == DIAGRAM)
     {
-        model::Diagram* o = static_cast<model::Diagram*>(getObject(uid).get());
+        model::Diagram* o = getObject<model::Diagram>(uid);
         switch (p)
         {
             case DIAGRAM_CONTEXT:
@@ -579,7 +581,7 @@ bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, std
     }
     else if (k == BLOCK)
     {
-        model::Block* o = static_cast<model::Block*>(getObject(uid).get());
+        model::Block* o = getObject<model::Block>(uid);
         switch (p)
         {
             case INPUTS:
@@ -603,7 +605,7 @@ bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, std
     }
     else if (k == DIAGRAM)
     {
-        model::Diagram* o = static_cast<model::Diagram*>(getObject(uid).get());
+        model::Diagram* o = getObject<model::Diagram>(uid);
         switch (p)
         {
             case CHILDREN:
@@ -623,7 +625,7 @@ bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, std
     }
     else if (k == PORT)
     {
-        model::Port* o = static_cast<model::Port*>(getObject(uid).get());
+        model::Port* o = getObject<model::Port>(uid);
         switch (p)
         {
             case CONNECTED_SIGNALS:
index bf02353..49996cb 100644 (file)
@@ -63,7 +63,7 @@ update_status_t Model::setObjectProperty(ScicosID uid, kind_t k, object_properti
     }
     else if (k == PORT)
     {
-        model::Port* o = static_cast<model::Port*>(getObject(uid).get());
+        model::Port* o = getObject<model::Port>(uid);
         switch (p)
         {
             case FIRING:
@@ -88,7 +88,7 @@ update_status_t Model::setObjectProperty(ScicosID uid, kind_t k, object_properti
     }
     else if (k == BLOCK)
     {
-        model::Block* o = static_cast<model::Block*>(getObject(uid).get());
+        model::Block* o = getObject<model::Block>(uid);
         switch (p)
         {
             case SIM_FUNCTION_API:
@@ -107,7 +107,7 @@ update_status_t Model::setObjectProperty(ScicosID uid, kind_t k, object_properti
     }
     else if (k == LINK)
     {
-        model::Link* o = static_cast<model::Link*>(getObject(uid).get());
+        model::Link* o = getObject<model::Link>(uid);
         switch (p)
         {
             case COLOR:
@@ -120,7 +120,7 @@ update_status_t Model::setObjectProperty(ScicosID uid, kind_t k, object_properti
     }
     else if (k == PORT)
     {
-        model::Port* o = static_cast<model::Port*>(getObject(uid).get());
+        model::Port* o = getObject<model::Port>(uid);
         switch (p)
         {
             case PORT_KIND:
@@ -169,7 +169,7 @@ update_status_t Model::setObjectProperty(ScicosID uid, kind_t k, object_properti
     }
     else if (k == PORT)
     {
-        model::Port* o = static_cast<model::Port*>(getObject(uid).get());
+        model::Port* o = getObject<model::Port>(uid);
         switch (p)
         {
             case IMPLICIT:
@@ -186,18 +186,20 @@ update_status_t Model::setObjectProperty(ScicosID uid, kind_t k, object_properti
 
     if (k == ANNOTATION)
     {
-        model::Annotation* o = static_cast<model::Annotation*>(getObject(uid).get());
+        model::Annotation* o = getObject<model::Annotation>(uid);
         switch (p)
         {
             case PARENT_DIAGRAM:
                 return o->setParentDiagram(v);
+            case PARENT_BLOCK:
+                return o->setParentBlock(v);
             default:
                 break;
         }
     }
     else if (k == BLOCK)
     {
-        model::Block* o = static_cast<model::Block*>(getObject(uid).get());
+        model::Block* o = getObject<model::Block>(uid);
         switch (p)
         {
             case PARENT_DIAGRAM:
@@ -220,11 +222,13 @@ update_status_t Model::setObjectProperty(ScicosID uid, kind_t k, object_properti
     }
     else if (k == LINK)
     {
-        model::Link* o = static_cast<model::Link*>(getObject(uid).get());
+        model::Link* o = getObject<model::Link>(uid);
         switch (p)
         {
             case PARENT_DIAGRAM:
                 return o->setParentDiagram(v);
+            case PARENT_BLOCK:
+                return o->setParentBlock(v);
             case SOURCE_PORT:
                 return o->setSourcePort(v);
             case DESTINATION_PORT:
@@ -235,7 +239,7 @@ update_status_t Model::setObjectProperty(ScicosID uid, kind_t k, object_properti
     }
     else if (k == PORT)
     {
-        model::Port* o = static_cast<model::Port*>(getObject(uid).get());
+        model::Port* o = getObject<model::Port>(uid);
         switch (p)
         {
             case SOURCE_BLOCK:
@@ -254,7 +258,7 @@ update_status_t Model::setObjectProperty(ScicosID uid, kind_t k, object_properti
 
     if (k == ANNOTATION)
     {
-        model::Annotation* o = static_cast<model::Annotation*>(getObject(uid).get());
+        model::Annotation* o = getObject<model::Annotation>(uid);
         switch (p)
         {
             case DESCRIPTION:
@@ -269,7 +273,7 @@ update_status_t Model::setObjectProperty(ScicosID uid, kind_t k, object_properti
     }
     else if (k == BLOCK)
     {
-        model::Block* o = static_cast<model::Block*>(getObject(uid).get());
+        model::Block* o = getObject<model::Block>(uid);
         switch (p)
         {
             case INTERFACE_FUNCTION:
@@ -290,7 +294,7 @@ update_status_t Model::setObjectProperty(ScicosID uid, kind_t k, object_properti
     }
     else if (k == DIAGRAM)
     {
-        model::Diagram* o = static_cast<model::Diagram*>(getObject(uid).get());
+        model::Diagram* o = getObject<model::Diagram>(uid);
         switch (p)
         {
             case TITLE:
@@ -305,7 +309,7 @@ update_status_t Model::setObjectProperty(ScicosID uid, kind_t k, object_properti
     }
     else if (k == LINK)
     {
-        model::Link* o = static_cast<model::Link*>(getObject(uid).get());
+        model::Link* o = getObject<model::Link>(uid);
         switch (p)
         {
             case LABEL:
@@ -316,7 +320,7 @@ update_status_t Model::setObjectProperty(ScicosID uid, kind_t k, object_properti
     }
     else if (k == PORT)
     {
-        model::Port* o = static_cast<model::Port*>(getObject(uid).get());
+        model::Port* o = getObject<model::Port>(uid);
         switch (p)
         {
             case STYLE:
@@ -335,7 +339,7 @@ update_status_t Model::setObjectProperty(ScicosID uid, kind_t k, object_properti
 
     if (k == ANNOTATION)
     {
-        model::Annotation* o = static_cast<model::Annotation*>(getObject(uid).get());
+        model::Annotation* o = getObject<model::Annotation>(uid);
         switch (p)
         {
             case GEOMETRY:
@@ -346,7 +350,7 @@ update_status_t Model::setObjectProperty(ScicosID uid, kind_t k, object_properti
     }
     else if (k == BLOCK)
     {
-        model::Block* o = static_cast<model::Block*>(getObject(uid).get());
+        model::Block* o = getObject<model::Block>(uid);
         switch (p)
         {
             case GEOMETRY:
@@ -369,7 +373,7 @@ update_status_t Model::setObjectProperty(ScicosID uid, kind_t k, object_properti
     }
     else if (k == DIAGRAM)
     {
-        model::Diagram* o = static_cast<model::Diagram*>(getObject(uid).get());
+        model::Diagram* o = getObject<model::Diagram>(uid);
         switch (p)
         {
             case PROPERTIES:
@@ -380,7 +384,7 @@ update_status_t Model::setObjectProperty(ScicosID uid, kind_t k, object_properti
     }
     else if (k == LINK)
     {
-        model::Link* o = static_cast<model::Link*>(getObject(uid).get());
+        model::Link* o = getObject<model::Link>(uid);
         switch (p)
         {
             case CONTROL_POINTS:
@@ -415,7 +419,7 @@ update_status_t Model::setObjectProperty(ScicosID uid, kind_t k, object_properti
     }
     else if (k == BLOCK)
     {
-        model::Block* o = static_cast<model::Block*>(getObject(uid).get());
+        model::Block* o = getObject<model::Block>(uid);
         switch (p)
         {
             case SIM_DEP_UT:
@@ -448,7 +452,7 @@ update_status_t Model::setObjectProperty(ScicosID uid, kind_t k, object_properti
     }
     else if (k == PORT)
     {
-        model::Port* o = static_cast<model::Port*>(getObject(uid).get());
+        model::Port* o = getObject<model::Port>(uid);
         switch (p)
         {
             case DATATYPE:
@@ -473,7 +477,7 @@ update_status_t Model::setObjectProperty(ScicosID uid, kind_t k, object_properti
     }
     else if (k == BLOCK)
     {
-        model::Block* o = static_cast<model::Block*>(getObject(uid).get());
+        model::Block* o = getObject<model::Block>(uid);
         switch (p)
         {
             case EXPRS:
@@ -486,7 +490,7 @@ update_status_t Model::setObjectProperty(ScicosID uid, kind_t k, object_properti
     }
     else if (k == DIAGRAM)
     {
-        model::Diagram* o = static_cast<model::Diagram*>(getObject(uid).get());
+        model::Diagram* o = getObject<model::Diagram>(uid);
         switch (p)
         {
             case DIAGRAM_CONTEXT:
@@ -527,7 +531,7 @@ update_status_t Model::setObjectProperty(ScicosID uid, kind_t k, object_properti
     }
     else if (k == BLOCK)
     {
-        model::Block* o = static_cast<model::Block*>(getObject(uid).get());
+        model::Block* o = getObject<model::Block>(uid);
         switch (p)
         {
             case INPUTS:
@@ -546,7 +550,7 @@ update_status_t Model::setObjectProperty(ScicosID uid, kind_t k, object_properti
     }
     else if (k == DIAGRAM)
     {
-        model::Diagram* o = static_cast<model::Diagram*>(getObject(uid).get());
+        model::Diagram* o = getObject<model::Diagram>(uid);
         switch (p)
         {
             case CHILDREN:
@@ -565,7 +569,7 @@ update_status_t Model::setObjectProperty(ScicosID uid, kind_t k, object_properti
     }
     else if (k == PORT)
     {
-        model::Port* o = static_cast<model::Port*>(getObject(uid).get());
+        model::Port* o = getObject<model::Port>(uid);
         switch (p)
         {
             case CONNECTED_SIGNALS:
index 90fd2b5..7884e32 100644 (file)
@@ -27,16 +27,16 @@ namespace model
 class Annotation: public BaseObject
 {
 public:
-    Annotation(): BaseObject(ANNOTATION), m_parentDiagram(0),
-        m_description(std::string("Text")), m_font(std::string("2")), m_font_size(std::string("1")), relatedTo(0)
+    Annotation(): BaseObject(ANNOTATION), m_parentDiagram(0), m_parentBlock(0),
+        m_description(std::string("Text")), m_font(std::string("2")), m_font_size(std::string("1")), m_relatedTo(0)
     {
         std::vector<double> geom (4, 0);
         geom[2] = 2;
         geom[3] = 1;
         m_geometry = Geometry(geom);
     };
-    Annotation(const Annotation& o) : BaseObject(ANNOTATION), m_parentDiagram(o.m_parentDiagram), m_geometry(o.m_geometry),
-        m_description(o.m_description), m_font(o.m_font), m_font_size(o.m_font_size), relatedTo(o.relatedTo) {};
+    Annotation(const Annotation& o) : BaseObject(ANNOTATION), m_parentDiagram(o.m_parentDiagram), m_parentBlock(o.m_parentBlock), m_geometry(o.m_geometry),
+        m_description(o.m_description), m_font(o.m_font), m_font_size(o.m_font_size), m_relatedTo(o.m_relatedTo) {};
     ~Annotation() = default;
 
 private:
@@ -128,29 +128,47 @@ private:
         return SUCCESS;
     }
 
+    void getParentBlock(ScicosID& v) const
+    {
+        v = m_parentBlock;
+    }
+
+    update_status_t setParentBlock(const ScicosID v)
+    {
+        if (v == m_parentBlock)
+        {
+            return NO_CHANGES;
+        }
+
+        m_parentBlock = v;
+        return SUCCESS;
+    }
+
     ScicosID getRelatedTo() const
     {
-        return relatedTo;
+        return m_relatedTo;
     }
 
     update_status_t setRelatedTo(ScicosID relatedTo)
     {
-        if (this->relatedTo == relatedTo)
+        if (this->m_relatedTo == relatedTo)
         {
             return NO_CHANGES;
         }
 
-        this->relatedTo = relatedTo;
+        this->m_relatedTo = relatedTo;
         return SUCCESS;
     }
 
 private:
     ScicosID m_parentDiagram;
+    ScicosID m_parentBlock;
+
     Geometry m_geometry;
     std::string m_description;
     std::string m_font;
     std::string m_font_size;
-    ScicosID relatedTo;
+    ScicosID m_relatedTo;
 };
 
 } /* namespace model */
index 65f93f5..e2df126 100644 (file)
@@ -37,9 +37,9 @@ enum link_kind_t
 class Link: public BaseObject
 {
 public:
-    Link() : BaseObject(LINK), m_parentDiagram(0), m_sourcePort(0), m_destinationPort(0), m_controlPoints(),
+    Link() : BaseObject(LINK), m_parentDiagram(0), m_parentBlock(0), m_sourcePort(0), m_destinationPort(0), m_controlPoints(),
         m_label(), m_thick(std::vector<double>(2)), m_color(1), m_linkKind(regular) {};
-    Link(const Link& o) : BaseObject(LINK), m_parentDiagram(o.m_parentDiagram), m_sourcePort(o.m_sourcePort), m_destinationPort(o.m_destinationPort),
+    Link(const Link& o) : BaseObject(LINK), m_parentDiagram(o.m_parentDiagram), m_parentBlock(o.m_parentBlock), m_sourcePort(o.m_sourcePort), m_destinationPort(o.m_destinationPort),
         m_controlPoints(o.m_controlPoints), m_label(o.m_label), m_thick(o.m_thick), m_color(o.m_color), m_linkKind(o.m_linkKind) {};
     ~Link() = default;
 
@@ -62,6 +62,22 @@ private:
         return SUCCESS;
     }
 
+    void getParentBlock(ScicosID& v) const
+    {
+        v = m_parentBlock;
+    }
+
+    update_status_t setParentBlock(const ScicosID v)
+    {
+        if (v == m_parentBlock)
+        {
+            return NO_CHANGES;
+        }
+
+        m_parentBlock = v;
+        return SUCCESS;
+    }
+
     void getControlPoints(std::vector<double>& v) const
     {
         v = m_controlPoints;
@@ -195,6 +211,7 @@ private:
 
 private:
     ScicosID m_parentDiagram;
+    ScicosID m_parentBlock;
 
     ScicosID m_sourcePort;
     ScicosID m_destinationPort;
index 2f2458e..146a4c0 100644 (file)
@@ -19,7 +19,6 @@
 #include <string>
 #include <vector>
 #include <sstream>
-#include <memory>
 
 #include "double.hxx"
 #include "user.hxx"
@@ -95,7 +94,6 @@ public:
     }
 };
 
-
 /**
  * Base definition of the adapter pattern, implement the get / set dispatch.
  *
@@ -106,17 +104,18 @@ class BaseAdapter : public types::UserType
 {
 
 public:
-    BaseAdapter(std::shared_ptr<Adaptee> adaptee) : m_adaptee(adaptee) {};
-    BaseAdapter(const BaseAdapter& adapter) : m_adaptee(0)
+    BaseAdapter() : m_adaptee(nullptr) {};
+    BaseAdapter(const Controller& /*c*/, Adaptee* adaptee) : m_adaptee(adaptee) {}
+    BaseAdapter(const BaseAdapter& adapter) : BaseAdapter(adapter, true) {}
+    BaseAdapter(const BaseAdapter& adapter, bool cloneChildren) : m_adaptee(nullptr)
     {
         Controller controller;
-        ScicosID id = controller.cloneObject(adapter.getAdaptee()->id());
-        m_adaptee = std::static_pointer_cast<Adaptee>(controller.getObject(id));
+        ScicosID id = controller.cloneObject(adapter.getAdaptee()->id(), cloneChildren);
+        m_adaptee = controller.getObject< Adaptee >(id);
     };
     ~BaseAdapter()
     {
-        // do not use adaptee.unique() as adaptee has not been destroyed yet
-        if (m_adaptee.use_count() == 2)
+        if (m_adaptee != nullptr)
         {
             Controller controller;
             controller.deleteObject(m_adaptee->id());
@@ -178,7 +177,6 @@ public:
             tlist->append(it->get(*static_cast<Adaptor*>(this), controller));
         }
 
-        tlist->IncreaseRef();
         return tlist;
     }
 
@@ -233,7 +231,7 @@ public:
     /**
      * @return the Adaptee
      */
-    std::shared_ptr<Adaptee> getAdaptee() const
+    Adaptee* getAdaptee() const
     {
         return m_adaptee;
     }
@@ -442,7 +440,7 @@ private:
     }
 
 private:
-    std::shared_ptr<Adaptee> m_adaptee;
+    Adaptee* m_adaptee;
 };
 
 
index cef64fe..adf03f1 100644 (file)
@@ -14,7 +14,6 @@
 
 #include <string>
 #include <vector>
-#include <memory>
 
 #include "internal.hxx"
 #include "list.hxx"
@@ -33,7 +32,6 @@
 #include "LinkAdapter.hxx"
 #include "ModelAdapter.hxx"
 #include "TextAdapter.hxx"
-#include "recursive_cloning.hxx"
 
 extern "C" {
 #include "sci_malloc.h"
@@ -53,13 +51,14 @@ struct graphics
 {
     static types::InternalType* get(const BlockAdapter& adaptor, const Controller& controller)
     {
-        GraphicsAdapter localAdaptor(adaptor.getAdaptee());
-        return localAdaptor.getAsTList(new types::MList(), controller);
+        GraphicsAdapter localAdaptor(controller, controller.referenceObject(adaptor.getAdaptee()));
+        types::InternalType* v = localAdaptor.getAsTList(new types::MList(), controller);
+        return v;
     }
 
     static bool set(BlockAdapter& adaptor, types::InternalType* v, Controller& controller)
     {
-        GraphicsAdapter localAdaptor(adaptor.getAdaptee());
+        GraphicsAdapter localAdaptor(controller, controller.referenceObject(adaptor.getAdaptee()));
         return localAdaptor.setAsTList(v, controller);
     }
 };
@@ -68,22 +67,22 @@ struct model
 {
     static types::InternalType* get(const BlockAdapter& adaptor, const Controller& controller)
     {
-        ModelAdapter localAdaptor(adaptor.getAdaptee());
-        localAdaptor.setDiagram(adaptor.getDiagram());
+        ModelAdapter localAdaptor(controller, controller.referenceObject(adaptor.getAdaptee()), adaptor.getDiagram());
+        types::InternalType* tlist = localAdaptor.getAsTList(new types::MList(), controller)->getAs<types::MList>();
 
-        return localAdaptor.getAsTList(new types::MList(), controller)->getAs<types::MList>();
+        const_cast<BlockAdapter&>(adaptor).setDiagram(localAdaptor.getDiagram());
+        return tlist;
     }
 
     static bool set(BlockAdapter& adaptor, types::InternalType* v, Controller& controller)
     {
-        ModelAdapter localAdaptor(adaptor.getAdaptee());
+        ModelAdapter localAdaptor(controller, controller.referenceObject(adaptor.getAdaptee()), adaptor.getDiagram());
         if (!localAdaptor.setAsTList(v, controller))
         {
             return false;
         }
 
         adaptor.setDiagram(localAdaptor.getDiagram());
-
         return true;
     }
 };
@@ -141,10 +140,10 @@ struct doc
 
 template<> property<BlockAdapter>::props_t property<BlockAdapter>::fields = property<BlockAdapter>::props_t();
 
-BlockAdapter::BlockAdapter(std::shared_ptr<org_scilab_modules_scicos::model::Block> adaptee) :
-    BaseAdapter<BlockAdapter, org_scilab_modules_scicos::model::Block>(adaptee),
+BlockAdapter::BlockAdapter(const Controller& c, org_scilab_modules_scicos::model::Block* adaptee) :
+    BaseAdapter<BlockAdapter, org_scilab_modules_scicos::model::Block>(c, adaptee),
     diagramAdapter(nullptr),
-    doc_content(new types::List())
+    doc_content(nullptr)
 {
     if (property<BlockAdapter>::properties_have_not_been_set())
     {
@@ -154,52 +153,43 @@ BlockAdapter::BlockAdapter(std::shared_ptr<org_scilab_modules_scicos::model::Blo
         property<BlockAdapter>::add_property(L"gui", &gui::get, &gui::set);
         property<BlockAdapter>::add_property(L"doc", &doc::get, &doc::set);
     }
+
+    setDocContent(new types::List());
 }
 
 BlockAdapter::BlockAdapter(const BlockAdapter& adapter) :
-    BaseAdapter<BlockAdapter, org_scilab_modules_scicos::model::Block>(adapter),
-    diagramAdapter(),
-    doc_content(adapter.getDocContent())
+    BaseAdapter<BlockAdapter, org_scilab_modules_scicos::model::Block>(adapter, false),
+    diagramAdapter(nullptr),
+    doc_content(nullptr)
 {
     Controller controller;
-    std::vector<ScicosID> childDiagram;
-    controller.getObjectProperty(getAdaptee()->id(), BLOCK, CHILDREN, childDiagram);
 
-    if (!childDiagram.empty())
+    if (adapter.getDiagram() != nullptr)
     {
-        std::shared_ptr<org_scilab_modules_scicos::model::Diagram> diagram = std::static_pointer_cast<org_scilab_modules_scicos::model::Diagram>(controller.getObject(childDiagram[0]));
-        diagramAdapter = new DiagramAdapter(diagram);
-
-        // Extract the information of the old cloned diagram
-        DiagramAdapter* oldDiagram = adapter.getDiagram();
-
-        std::vector<ScicosID> diagramChildren;
-        controller.getObjectProperty(diagram->id(), DIAGRAM, CHILDREN, diagramChildren);
-
-        types::List* oldList_objects = oldDiagram->getListObjects()->getAs<types::List>();
-
-        std::vector<link_t> from_vec = oldDiagram->getFrom();
-        std::vector<link_t> to_vec = oldDiagram->getTo();
-
-        types::List* list_objects = deepCreateAdapters(diagramChildren, oldList_objects, from_vec, to_vec, controller);
-
-        diagramAdapter->setListObjects(list_objects);
-        diagramAdapter->setFrom(from_vec);
-        diagramAdapter->setTo(to_vec);
+       types::InternalType* model = model::get(adapter, controller);
+        model::set(*this, model, controller);
+        model->killMe();
     }
+
+    setDocContent(adapter.getDocContent());
 }
 
 BlockAdapter::~BlockAdapter()
 {
-    if (diagramAdapter != nullptr)
+    Controller controller;
+
+    /*
+     * The block own a reference to their children
+     */
+    std::vector<ScicosID> v;
+    controller.getObjectProperty(getAdaptee()->id(), BLOCK, CHILDREN, v);
+    for (const ScicosID& id : v)
     {
-        // Update the model if the adaptee is being deleted
-        if (getAdaptee().use_count() == 3)
-        {
-            Controller controller;
-            controller.setObjectProperty(getAdaptee()->id(), BLOCK, CHILDREN, std::vector<ScicosID>());
-        }
+        controller.deleteObject(id);
+    }
 
+    if (diagramAdapter != nullptr)
+    {
         diagramAdapter->DecreaseRef();
         diagramAdapter->killMe();
     }
@@ -220,43 +210,44 @@ std::wstring BlockAdapter::getShortTypeStr()
 
 DiagramAdapter* BlockAdapter::getDiagram() const
 {
-    if (diagramAdapter != nullptr)
-    {
-        diagramAdapter->IncreaseRef();
-    }
     return diagramAdapter;
 }
 
 void BlockAdapter::setDiagram(DiagramAdapter* v)
 {
+    // The old 'diagramAdapter' needs to be freed after setting it to 'v'
+    DiagramAdapter* temp = diagramAdapter;
+
     if (v != nullptr)
     {
-        // The old 'diagramAdapter' needs to be freed after setting it to 'v'
-        DiagramAdapter* temp = diagramAdapter;
-
+        v->IncreaseRef();
         diagramAdapter = v;
+    }
 
-        if (temp != nullptr)
-        {
-            temp->DecreaseRef();
-            temp->killMe();
-        }
+    if (temp != nullptr)
+    {
+        temp->DecreaseRef();
+        temp->killMe();
     }
 }
 
 types::InternalType* BlockAdapter::getDocContent() const
 {
-    doc_content->IncreaseRef();
     return doc_content;
 }
 
 void BlockAdapter::setDocContent(types::InternalType* v)
 {
-    doc_content->DecreaseRef();
-    doc_content->killMe();
+    types::InternalType* temp = doc_content;
 
     v->IncreaseRef();
     doc_content = v;
+
+    if (temp != nullptr)
+    {
+        temp->DecreaseRef();
+        temp->killMe();
+    }
 }
 
 } /* namespace view_scilab */
index edb4021..0ce6012 100644 (file)
@@ -14,7 +14,6 @@
 #define BLOCKADAPTER_HXX_
 
 #include <string>
-#include <memory>
 
 #include "utilities.hxx"
 #include "BaseAdapter.hxx"
@@ -29,7 +28,7 @@ namespace view_scilab
 class BlockAdapter : public BaseAdapter<BlockAdapter, org_scilab_modules_scicos::model::Block>
 {
 public:
-    BlockAdapter(std::shared_ptr<org_scilab_modules_scicos::model::Block> adaptee);
+    BlockAdapter(const Controller& c, org_scilab_modules_scicos::model::Block* adaptee);
     BlockAdapter(const BlockAdapter& adapter);
     ~BlockAdapter();
 
index 5f67745..27e5018 100644 (file)
@@ -11,7 +11,6 @@
  */
 
 #include <string>
-#include <memory>
 
 #include "internal.hxx"
 #include "types.hxx"
@@ -46,9 +45,7 @@ struct dummy_property
 } /* namespace */
 
 template<> property<CprAdapter>::props_t property<CprAdapter>::fields = property<CprAdapter>::props_t();
-
-CprAdapter::CprAdapter(std::shared_ptr<org_scilab_modules_scicos::model::Diagram> adaptee) :
-    BaseAdapter<CprAdapter, org_scilab_modules_scicos::model::Diagram>(adaptee)
+static void initialize_fields()
 {
     if (property<CprAdapter>::properties_have_not_been_set())
     {
@@ -60,9 +57,16 @@ CprAdapter::CprAdapter(std::shared_ptr<org_scilab_modules_scicos::model::Diagram
     }
 }
 
-CprAdapter::CprAdapter(const CprAdapter& adapter) :
-    BaseAdapter<CprAdapter, org_scilab_modules_scicos::model::Diagram>(adapter)
+CprAdapter::CprAdapter() :
+    BaseAdapter<CprAdapter, org_scilab_modules_scicos::model::Diagram>()
+{
+    initialize_fields();
+}
+
+CprAdapter::CprAdapter(const Controller& c, org_scilab_modules_scicos::model::Diagram* adaptee) :
+    BaseAdapter<CprAdapter, org_scilab_modules_scicos::model::Diagram>(c, adaptee)
 {
+    initialize_fields();
 }
 
 CprAdapter::~CprAdapter()
index 0ae8159..537c156 100644 (file)
@@ -14,7 +14,6 @@
 #define CPRADAPTER_HXX_
 
 #include <string>
-#include <memory>
 
 #include "BaseAdapter.hxx"
 
@@ -28,8 +27,8 @@ namespace view_scilab
 class CprAdapter : public BaseAdapter<CprAdapter, org_scilab_modules_scicos::model::Diagram>
 {
 public:
-    CprAdapter(std::shared_ptr<org_scilab_modules_scicos::model::Diagram> adaptee);
-    CprAdapter(const CprAdapter& adapter);
+    CprAdapter();
+    CprAdapter(const Controller& c, org_scilab_modules_scicos::model::Diagram* adaptee);
     ~CprAdapter();
 
     static const std::wstring getSharedTypeStr()
index 2a4da17..1586255 100644 (file)
@@ -13,7 +13,8 @@
 #include <string>
 #include <vector>
 #include <sstream>
-#include <memory>
+#include <algorithm>
+#include <iterator>
 
 #include "internal.hxx"
 #include "double.hxx"
@@ -34,7 +35,6 @@
 #include "LinkAdapter.hxx"
 #include "TextAdapter.hxx"
 #include "model/BaseObject.hxx"
-#include "recursive_cloning.hxx"
 
 extern "C" {
 #include "sci_malloc.h"
@@ -56,13 +56,13 @@ struct props
 
     static types::InternalType* get(const DiagramAdapter& adaptor, const Controller& controller)
     {
-        ParamsAdapter localAdaptor(adaptor.getAdaptee());
+        ParamsAdapter localAdaptor(controller, controller.referenceObject(adaptor.getAdaptee()));
         return localAdaptor.getAsTList(new types::TList(), controller);
     }
 
     static bool set(DiagramAdapter& adaptor, types::InternalType* v, Controller& controller)
     {
-        ParamsAdapter localAdaptor(adaptor.getAdaptee());
+        ParamsAdapter localAdaptor(controller, controller.referenceObject(adaptor.getAdaptee()));
         return localAdaptor.setAsTList(v, controller);
     }
 };
@@ -70,87 +70,50 @@ struct props
 struct objs
 {
 
-    static types::InternalType* get(const DiagramAdapter& adaptor, const Controller& controller)
+    static types::InternalType* get(const DiagramAdapter& adaptor, const Controller& /*controller*/)
     {
-        model::Diagram* adaptee = adaptor.getAdaptee().get();
-
-        std::vector<ScicosID> children;
-        controller.getObjectProperty(adaptee->id(), DIAGRAM, CHILDREN, children);
-
-        types::List* o = new types::List();
-
-        std::vector<link_t> from = adaptor.getFrom();
-        std::vector<link_t> to = adaptor.getTo();
+        // FIXME: reconstruct the list of objects accordingly to the CHILDREN content to manage xcos modification
+        return adaptor.getListObjects();
+    }
 
-        int link_number = 0;
-        Controller newController;
-        for (int i = 0; i < static_cast<int>(children.size()); ++i)
+    /**
+     * Clone the object if it is owned by something else than the list
+     */
+    static types::InternalType* cloneIfNeeded(types::InternalType* v, const std::vector<types::InternalType*>& oldChildren)
+    {
+        if (v->getRef() == 0)
         {
-            if (children[i] == 0)
-            {
-                types::MList* deletedObject = new types::MList();
-                types::String* header = new types::String(Deleted.data());
-                deletedObject->append(header);
-                o->append(deletedObject);
-                continue;
-            }
-
-            std::shared_ptr<model::BaseObject> item = newController.getObject(children[i]);
+            return v;
+        }
 
-            switch (item->kind())
-            {
-                case ANNOTATION:
-                {
-                    std::shared_ptr<model::Annotation> annotation = std::static_pointer_cast<model::Annotation>(item);
-                    TextAdapter* localAdaptor = new TextAdapter(annotation);
-                    o->append(localAdaptor);
-                    continue;
-                }
-                case BLOCK:
-                {
-                    std::shared_ptr<model::Block> block = std::static_pointer_cast<model::Block>(item);
-                    BlockAdapter* localAdaptor = new BlockAdapter(block);
+               // avoid a copy, if v is already in the previous children list and will be cleanup later
+               if (v->getRef() == 1 && std::binary_search(oldChildren.begin(), oldChildren.end(), v))
+               {
+                       return v;
+               }
 
-                    types::List* list_objects = adaptor.getListObjects()->getAs<types::List>();
-                    if (i < list_objects->getSize())
-                    {
-                        BlockAdapter* oldBlock = list_objects->get(i)->getAs<BlockAdapter>();
-                        DiagramAdapter* oldBlockDiagram = oldBlock->getDiagram();
-                        if (oldBlockDiagram != nullptr)
-                        {
-                            oldBlockDiagram->IncreaseRef();
-                        }
-                        localAdaptor->setDiagram(oldBlockDiagram);
-                        types::InternalType* oldDoc = oldBlock->getDocContent();
-                        localAdaptor->setDocContent(oldDoc);
-                    }
+        return v->clone();
+    }
 
-                    o->append(localAdaptor);
-                    continue;
-                }
-                case LINK:
-                {
-                    std::shared_ptr<model::Link> link = std::static_pointer_cast<model::Link>(item);
-                    LinkAdapter* localAdaptor = new LinkAdapter(link);
+    static std::vector<types::InternalType*> extractAndSort(types::List* v)
+    {
+        std::vector<types::InternalType*> ret;
+        if (v == nullptr)
+        {
+            return ret;
+        }
 
-                    // In case a Link points to a Block that has not been added yet,
-                    // retrieve the 'from' and 'to' values from the Diagram Adapter if they have been saved
-                    if (link_number < static_cast<int>(from.size()))
-                    {
-                        localAdaptor->setFrom(from[link_number]);
-                        localAdaptor->setTo(to[link_number]);
-                        link_number++;
-                    }
-                    o->append(localAdaptor);
-                    continue;
-                }
-                default:
-                    return 0;
-            }
+        ret.reserve(v->getSize());
+        for (int i = 0; i < v->getSize(); ++i)
+        {
+            ret.push_back(v->get(i));
         }
-        return o;
+
+        std::sort(ret.begin(), ret.end());
+        return ret;
     }
 
+
     static bool set(DiagramAdapter& adaptor, types::InternalType* v, Controller& controller)
     {
         // Decode the list and set all children of the Diagram
@@ -159,146 +122,210 @@ struct objs
             return false;
         }
 
-        model::Diagram* adaptee = adaptor.getAdaptee().get();
+        /*
+         * Always deep clone both the list and children as the PARENT_DIAGRAM property will be updated
+         */
+        model::Diagram* adaptee = adaptor.getAdaptee();
 
-        types::List* list = v->getAs<types::List>();
+        types::List* argumentList = v->getAs<types::List>();
+        types::List* list = new types::List();
+        std::vector<types::InternalType*> oldChildren = extractAndSort(adaptor.getListObjects());
 
-        // Clear the children list before the loop to reset the diagram children
-        // and clear the old Links information
         std::vector<ScicosID> oldDiagramChildren;
         controller.getObjectProperty(adaptee->id(), DIAGRAM, CHILDREN, oldDiagramChildren);
-for (ScicosID id : oldDiagramChildren)
-        {
-            if (id != 0)
-            {
-                auto o = controller.getObject(id);
-                controller.setObjectProperty(id, o->kind(), PARENT_DIAGRAM, 0ll);
-            }
-            else
-            {
-                // Deleted Block
-            }
-        }
+
+        /*
+         * First pass on objects :
+         *  - store IDs if they exists and are valid ; 0ll otherwise
+         *  - store all the links to update link connections later
+         *  - store all the valid mlist content ('Text' content)
+         *  - store all the deleted mlist content ('Deleted' content)
+         */
+
         std::vector<ScicosID> diagramChildren;
+        diagramChildren.reserve(argumentList->getSize());
+        std::vector<kind_t> diagramChildrenKind;
+        diagramChildrenKind.reserve(argumentList->getSize());
 
-        // Set the children to the right IDs
-        std::vector<LinkAdapter*> linkListView;
-        for (int i = 0; i < list->getSize(); ++i)
+        std::vector<LinkAdapter*> links;
+        std::vector<int> textAsMListIndices;
+        std::vector<int> deletedAsMListIndices;
+
+        for (int i = 0; i < argumentList->getSize(); ++i)
         {
-            if (list->get(i)->getType() == types::InternalType::ScilabUserType)
+            if (argumentList->get(i)->getType() == types::InternalType::ScilabUserType)
             {
+                const Adapters::adapters_index_t adapter_index = Adapters::instance().lookup_by_typename(argumentList->get(i)->getShortTypeStr());
 
-                const Adapters::adapters_index_t adapter_index = Adapters::instance().lookup_by_typename(list->get(i)->getShortTypeStr());
-
-                // Then, each adapter gets linked to the diagram through its adaptee (PARENT_DIAGRAM)
-                // and the diagram's adaptee lists its adaptees (CHILDREN).
                 ScicosID id;
+                kind_t kind;
+                types::InternalType* adapter;
                 switch (adapter_index)
                 {
                     case Adapters::BLOCK_ADAPTER:
                     {
-                        BlockAdapter* modelElement = list->get(i)->getAs<BlockAdapter>();
-
+                        BlockAdapter* modelElement = cloneIfNeeded(argumentList->get(i), oldChildren)->getAs<BlockAdapter>();
                         id = modelElement->getAdaptee()->id();
-
-                        controller.setObjectProperty(id, BLOCK, PARENT_DIAGRAM, adaptee->id());
-                        diagramChildren.push_back(id);
+                        kind = modelElement->getAdaptee()->kind();
+                        adapter = modelElement;
                         break;
                     }
                     case Adapters::LINK_ADAPTER:
                     {
-                        LinkAdapter* modelElement = list->get(i)->getAs<LinkAdapter>();
-
+                        LinkAdapter* modelElement = cloneIfNeeded(argumentList->get(i), oldChildren)->getAs<LinkAdapter>();
                         id = modelElement->getAdaptee()->id();
-
-                        controller.setObjectProperty(id, LINK, PARENT_DIAGRAM, adaptee->id());
+                        kind = modelElement->getAdaptee()->kind();
+                        adapter = modelElement;
 
                         // Do the linking in the next loop, in case the Link points to a Block that has not been added yet
-                        linkListView.push_back(modelElement);
-
-                        diagramChildren.push_back(id);
+                        links.push_back(modelElement);
                         break;
                     }
                     case Adapters::TEXT_ADAPTER:
                     {
-                        TextAdapter* modelElement = list->get(i)->getAs<TextAdapter>();
-
+                        TextAdapter* modelElement = cloneIfNeeded(argumentList->get(i), oldChildren)->getAs<TextAdapter>();
                         id = modelElement->getAdaptee()->id();
-
-                        controller.setObjectProperty(id, ANNOTATION, PARENT_DIAGRAM, adaptee->id());
-                        diagramChildren.push_back(id);
+                        kind = modelElement->getAdaptee()->kind();
+                        adapter = modelElement;
                         break;
                     }
                     default:
+                        list->killMe();
                         return false;
                 }
+
+                diagramChildren.push_back(id);
+                diagramChildrenKind.push_back(kind);
+                list->set(i, adapter);
             }
-            else if (list->get(i)->getType() == types::InternalType::ScilabMList)
+            else if (argumentList->get(i)->getType() == types::InternalType::ScilabMList)
             {
-                // Allow to pass mlists to 'objs', representing Text blocks
-                types::MList* modelElement = list->get(i)->getAs<types::MList>();
+                // Allow to pass mlists to 'objs', representing 'Deleted' or 'Text' objects
+                types::MList* modelElement = argumentList->get(i)->getAs<types::MList>();
                 types::String* header = modelElement->getFieldNames();
+
                 if (header->get(0) == Deleted)
                 {
-                    diagramChildren.push_back(0);
-                    continue;
+                    diagramChildren.push_back(0ll);
+                    diagramChildrenKind.push_back(ANNOTATION);
                 }
-                if (header->get(0) != TextSharedTypeStr)
+                else if (header->get(0) == TextSharedTypeStr)
                 {
-                    return false;
+                    textAsMListIndices.push_back(i);
+                    // will be filled later
+                    diagramChildren.push_back(0ll);
+                    diagramChildrenKind.push_back(ANNOTATION);
                 }
-
-                // Create a Text block based on the input MList and add it to the diagram
-                ScicosID newID = controller.createObject(ANNOTATION);
-                TextAdapter* newAdaptor = new TextAdapter(std::static_pointer_cast<model::Annotation>(controller.getObject(newID)));
-                // Fill the block with the input mlist
-                if (!newAdaptor->setAsTList(modelElement, controller))
+                else
                 {
+                    list->killMe();
                     return false;
                 }
-
-                // Modify the input list to save the new block
-                list->set(i, newAdaptor);
-
-                controller.setObjectProperty(newID, ANNOTATION, PARENT_DIAGRAM, adaptee->id());
-                diagramChildren.push_back(newID);
             }
-            else if (list->get(i)->getType() == types::InternalType::ScilabList)
+            else if (argumentList->get(i)->getType() == types::InternalType::ScilabList)
             {
                 // Allow to pass empty lists to 'objs', representing deleted Blocks
-                types::List* modelElement = list->get(i)->getAs<types::List>();
+                types::List* modelElement = argumentList->get(i)->getAs<types::List>();
                 if (modelElement->getSize() != 0)
                 {
+                    list->killMe();
                     return false;
                 }
 
+                deletedAsMListIndices.push_back(i);
                 // Mark deleted objects with value '0'
-                diagramChildren.push_back(0);
+                diagramChildren.push_back(0ll);
+                diagramChildrenKind.push_back(ANNOTATION);
             }
             else
             {
+                list->killMe();
                 return false;
             }
         }
+
+        /*
+         * Create all Annotation, decoding mlist content
+         */
+        for (const auto index : textAsMListIndices)
+        {
+            ScicosID localAdaptee = controller.createObject(ANNOTATION);
+            TextAdapter* localAdaptor = new TextAdapter(controller, controller.getObject<model::Annotation>(localAdaptee));
+            if (!localAdaptor->setAsTList(argumentList->get(index), controller))
+            {
+                // do not return there ; the annotation will be empty
+            }
+
+            diagramChildren[index] = localAdaptee;
+            list->set(index, localAdaptor);
+        }
+
+        /*
+         * Recreate 'Deleted' mlist if needed
+         */
+        for (const auto index : deletedAsMListIndices)
+        {
+            types::MList* deleted = new types::MList();
+            deleted->set(0, new types::String(Deleted.data()));
+
+            list->set(index, deleted);
+        }
+
+        /*
+         * Set the parent diagram of all the blocks
+         */
         controller.setObjectProperty(adaptee->id(), DIAGRAM, CHILDREN, diagramChildren);
+        {
+            std::sort(oldDiagramChildren.begin(), oldDiagramChildren.end());
+            for (const ScicosID id : diagramChildren)
+            {
+                if (id != 0 && !std::binary_search(oldDiagramChildren.begin(), oldDiagramChildren.end(), id))
+                {
+                    auto o = controller.getObject(id);
+                    controller.setObjectProperty(o->id(), o->kind(), PARENT_DIAGRAM, adaptee->id());
+
+                    controller.referenceObject(id);
+                }
+            }
+
+            std::sort(diagramChildren.begin(), diagramChildren.end());
+            for (const ScicosID id : oldDiagramChildren)
+            {
+                if (id != 0 && !std::binary_search(diagramChildren.begin(), diagramChildren.end(), id))
+                {
+                    auto o = controller.getObject(id);
+                    controller.setObjectProperty(o->id(), o->kind(), PARENT_DIAGRAM, ScicosID());
 
-        adaptor.setListObjects(v);
+                    controller.deleteObject(id);
+                }
+            }
+        }
 
-        std::vector<link_t> from_content (linkListView.size());
-        std::vector<link_t> to_content (linkListView.size());
+        /*
+         * Store the children to the local adaptor, avoiding the deletion of argument
+         */
+        v->IncreaseRef();
+        adaptor.setListObjects(list);
+
+        /*
+         * Re-sync the partial link information
+         */
+        std::vector<link_t> from_content (links.size());
+        std::vector<link_t> to_content (links.size());
         // Do the linking at model-level
-        for (int i = 0; i < static_cast<int>(linkListView.size()); ++i)
+        for (int i = 0; i < static_cast<int>(links.size()); ++i)
         {
             // Trigger 'from' and 'to' properties
-            from_content[i] = linkListView[i]->getFrom();
-            linkListView[i]->setFromInModel(from_content[i], controller);
+            from_content[i] = links[i]->getFrom();
+            links[i]->setFromInModel(from_content[i], controller);
 
-            to_content[i] = linkListView[i]->getTo();
-            linkListView[i]->setToInModel(to_content[i], controller);
+            to_content[i] = links[i]->getTo();
+            links[i]->setToInModel(to_content[i], controller);
         }
         adaptor.setFrom(from_content);
         adaptor.setTo(to_content);
 
+        v->DecreaseRef();
         return true;
     }
 };
@@ -308,7 +335,7 @@ struct version
 
     static types::InternalType* get(const DiagramAdapter& adaptor, const Controller& controller)
     {
-        model::Diagram* adaptee = adaptor.getAdaptee().get();
+        model::Diagram* adaptee = adaptor.getAdaptee();
 
         std::string version;
         controller.getObjectProperty(adaptee->id(), DIAGRAM, VERSION_NUMBER, version);
@@ -326,7 +353,7 @@ struct version
                 return false;
             }
 
-            model::Diagram* adaptee = adaptor.getAdaptee().get();
+            model::Diagram* adaptee = adaptor.getAdaptee();
 
             char* c_str = wide_string_to_UTF8(current->get(0));
             std::string version (c_str);
@@ -343,7 +370,7 @@ struct version
                 return false;
             }
 
-            model::Diagram* adaptee = adaptor.getAdaptee().get();
+            model::Diagram* adaptee = adaptor.getAdaptee();
 
             std::string version;
             controller.setObjectProperty(adaptee->id(), DIAGRAM, VERSION_NUMBER, version);
@@ -373,12 +400,12 @@ struct contrib
 
 template<> property<DiagramAdapter>::props_t property<DiagramAdapter>::fields = property<DiagramAdapter>::props_t();
 
-DiagramAdapter::DiagramAdapter(std::shared_ptr<org_scilab_modules_scicos::model::Diagram> adaptee) :
-    BaseAdapter<DiagramAdapter, org_scilab_modules_scicos::model::Diagram>(adaptee),
-    list_objects(new types::List()),
+DiagramAdapter::DiagramAdapter(const Controller& c, org_scilab_modules_scicos::model::Diagram* adaptee) :
+    BaseAdapter<DiagramAdapter, org_scilab_modules_scicos::model::Diagram>(c, adaptee),
+    list_objects(nullptr),
     from_vec(),
     to_vec(),
-    contrib_content(new types::List())
+    contrib_content(nullptr)
 {
     if (property<DiagramAdapter>::properties_have_not_been_set())
     {
@@ -388,43 +415,38 @@ DiagramAdapter::DiagramAdapter(std::shared_ptr<org_scilab_modules_scicos::model:
         property<DiagramAdapter>::add_property(L"version", &version::get, &version::set);
         property<DiagramAdapter>::add_property(L"contrib", &contrib::get, &contrib::set);
     }
+
+    setListObjects(new types::List());
+    setContribContent(new types::List());
 }
 
 DiagramAdapter::DiagramAdapter(const DiagramAdapter& adapter) :
-    BaseAdapter<DiagramAdapter, org_scilab_modules_scicos::model::Diagram>(adapter),
-    list_objects(),
-    from_vec(adapter.from_vec),
-    to_vec(adapter.to_vec),
-    contrib_content(adapter.getContribContent())
+    BaseAdapter<DiagramAdapter, org_scilab_modules_scicos::model::Diagram>(adapter, false),
+    list_objects(nullptr),
+    from_vec(),
+    to_vec(),
+    contrib_content(nullptr)
 {
-    // Generate an Adapter for each child of the cloned Diagram and store them all in 'list_objects'
     Controller controller;
-    std::vector<ScicosID> diagramChildren;
-    controller.getObjectProperty(getAdaptee()->id(), DIAGRAM, CHILDREN, diagramChildren);
 
-    types::List* oldList_objects = adapter.getListObjects()->getAs<types::List>();
+    // set the list and perform from / to links update
+    objs::set(*this, adapter.getListObjects(), controller);
 
-    list_objects = deepCreateAdapters(diagramChildren, oldList_objects, from_vec, to_vec, controller);
+    setContribContent(adapter.getContribContent());
 }
 
 DiagramAdapter::~DiagramAdapter()
 {
-    // Unlink the diagram's children if the adaptee is being deleted
-    if (getAdaptee().use_count() == 3)
+    Controller controller;
+    std::vector<ScicosID> v;
+
+    /*
+     * The diagram own a reference to their children
+     */
+    controller.getObjectProperty(getAdaptee()->id(), DIAGRAM, CHILDREN, v);
+    for (const ScicosID& id : v)
     {
-        Controller controller;
-        std::vector<ScicosID> diagramChildren;
-        controller.getObjectProperty(getAdaptee()->id(), DIAGRAM, CHILDREN, diagramChildren);
-for (ScicosID id : diagramChildren)
-        {
-            if (id != 0)
-            {
-                auto o = controller.getObject(id);
-                controller.setObjectProperty(id, o->kind(), PARENT_DIAGRAM, 0ll);
-            }
-        }
-        diagramChildren.clear();
-        controller.setObjectProperty(getAdaptee()->id(), DIAGRAM, CHILDREN, diagramChildren);
+        controller.deleteObject(id);
     }
 
     list_objects->DecreaseRef();
@@ -445,34 +467,44 @@ std::wstring DiagramAdapter::getShortTypeStr()
 
 types::InternalType* DiagramAdapter::getContribContent() const
 {
-    contrib_content->IncreaseRef();
     return contrib_content;
 }
 
 void DiagramAdapter::setContribContent(types::InternalType* v)
 {
-    contrib_content->DecreaseRef();
-    contrib_content->killMe();
+    types::InternalType* temp = contrib_content;
 
+    // do not check if v is nullptr on purpose ; it *should* not
     v->IncreaseRef();
     contrib_content = v;
+
+    if (temp != nullptr)
+    {
+        temp->DecreaseRef();
+        temp->killMe();
+    }
+
+
 }
 
-types::InternalType* DiagramAdapter::getListObjects() const
+types::List* DiagramAdapter::getListObjects() const
 {
     return list_objects;
 }
 
-void DiagramAdapter::setListObjects(types::InternalType* v)
+void DiagramAdapter::setListObjects(types::List* v)
 {
-    // The old 'list_objects' needs to be freed after setting it to 'v'
     types::InternalType* temp = list_objects;
 
+    // do not check if v is nullptr on purpose ; it *should* not
     v->IncreaseRef();
     list_objects = v;
 
-    temp->DecreaseRef();
-    temp->killMe();
+    if (temp != nullptr)
+    {
+        temp->DecreaseRef();
+        temp->killMe();
+    }
 }
 
 std::vector<link_t> DiagramAdapter::getFrom() const
index 969801f..b134e46 100644 (file)
@@ -15,7 +15,8 @@
 
 #include <string>
 #include <vector>
-#include <memory>
+
+#include "list.hxx"
 
 #include "utilities.hxx"
 #include "adapters_utilities.hxx"
@@ -30,7 +31,7 @@ namespace view_scilab
 class DiagramAdapter : public BaseAdapter<DiagramAdapter, org_scilab_modules_scicos::model::Diagram>
 {
 public:
-    DiagramAdapter(std::shared_ptr<org_scilab_modules_scicos::model::Diagram> adaptee);
+    DiagramAdapter(const Controller& c, org_scilab_modules_scicos::model::Diagram* adaptee);
     DiagramAdapter(const DiagramAdapter& adapter);
     ~DiagramAdapter();
 
@@ -42,8 +43,8 @@ public:
     std::wstring getTypeStr();
     std::wstring getShortTypeStr();
 
-    types::InternalType* getListObjects() const;
-    void setListObjects(types::InternalType* v);
+    types::List* getListObjects() const;
+    void setListObjects(types::List* v);
 
     std::vector<link_t> getFrom() const;
     void setFrom(const std::vector<link_t>& from);
@@ -54,7 +55,7 @@ public:
     void setContribContent(types::InternalType* v);
 
 private:
-    types::InternalType* list_objects;
+    types::List* list_objects;
 
     std::vector<link_t> from_vec;
     std::vector<link_t> to_vec;
index 5740fe9..2a8b9f0 100644 (file)
@@ -15,7 +15,6 @@
 #include <string>
 #include <vector>
 #include <sstream>
-#include <memory>
 
 #include "list.hxx"
 #include "tlist.hxx"
@@ -1498,10 +1497,7 @@ struct style
 } /* namespace */
 
 template<> property<GraphicsAdapter>::props_t property<GraphicsAdapter>::fields = property<GraphicsAdapter>::props_t();
-
-GraphicsAdapter::GraphicsAdapter(std::shared_ptr<model::Block> adaptee) :
-    BaseAdapter<GraphicsAdapter, org_scilab_modules_scicos::model::Block>(adaptee),
-    gr_i_content(types::Double::Empty())
+static void initialize_fields()
 {
     if (property<GraphicsAdapter>::properties_have_not_been_set())
     {
@@ -1527,10 +1523,18 @@ GraphicsAdapter::GraphicsAdapter(std::shared_ptr<model::Block> adaptee) :
     }
 }
 
-GraphicsAdapter::GraphicsAdapter(const GraphicsAdapter& adapter) :
-    BaseAdapter<GraphicsAdapter, org_scilab_modules_scicos::model::Block>(adapter),
-    gr_i_content(adapter.getGrIContent())
+GraphicsAdapter::GraphicsAdapter() :
+    BaseAdapter<GraphicsAdapter, org_scilab_modules_scicos::model::Block>(),
+    gr_i_content(types::Double::Empty())
+{
+    initialize_fields();
+}
+
+GraphicsAdapter::GraphicsAdapter(const Controller& c, model::Block* adaptee) :
+    BaseAdapter<GraphicsAdapter, org_scilab_modules_scicos::model::Block>(c, adaptee),
+    gr_i_content(types::Double::Empty())
 {
+    initialize_fields();
 }
 
 GraphicsAdapter::~GraphicsAdapter()
index 9e04c11..391c5f6 100644 (file)
@@ -14,7 +14,6 @@
 #define GRAPHICSADAPTER_HXX_
 
 #include <string>
-#include <memory>
 
 #include "BaseAdapter.hxx"
 #include "model/Block.hxx"
@@ -27,8 +26,8 @@ namespace view_scilab
 class GraphicsAdapter : public BaseAdapter<GraphicsAdapter, org_scilab_modules_scicos::model::Block>
 {
 public:
-    GraphicsAdapter(std::shared_ptr<model::Block> adaptee);
-    GraphicsAdapter(const GraphicsAdapter& adapter);
+    GraphicsAdapter();
+    GraphicsAdapter(const Controller& c, model::Block* adaptee);
     ~GraphicsAdapter();
 
     static const std::wstring getSharedTypeStr()
index b232bbb..31945e7 100644 (file)
@@ -14,7 +14,6 @@
 #include <vector>
 #include <iterator>
 #include <algorithm>
-#include <memory>
 
 #include "internal.hxx"
 #include "list.hxx"
@@ -803,8 +802,8 @@ struct to
 
 template<> property<LinkAdapter>::props_t property<LinkAdapter>::fields = property<LinkAdapter>::props_t();
 
-LinkAdapter::LinkAdapter(std::shared_ptr<org_scilab_modules_scicos::model::Link> adaptee) :
-    BaseAdapter<LinkAdapter, org_scilab_modules_scicos::model::Link>(adaptee),
+LinkAdapter::LinkAdapter(const Controller& c, org_scilab_modules_scicos::model::Link* adaptee) :
+    BaseAdapter<LinkAdapter, org_scilab_modules_scicos::model::Link>(c, adaptee),
     m_from(),
     m_to()
 {
index 8d0680b..4842f5a 100644 (file)
@@ -14,7 +14,6 @@
 #define LINKADAPTER_HXX_
 
 #include <string>
-#include <memory>
 
 #include "utilities.hxx"
 #include "adapters_utilities.hxx"
@@ -30,7 +29,7 @@ namespace view_scilab
 class LinkAdapter : public BaseAdapter<LinkAdapter, org_scilab_modules_scicos::model::Link>
 {
 public:
-    LinkAdapter(std::shared_ptr<org_scilab_modules_scicos::model::Link> adaptee);
+    LinkAdapter(const Controller& c, org_scilab_modules_scicos::model::Link* adaptee);
     LinkAdapter(const LinkAdapter& adapter);
     ~LinkAdapter();
 
index 641cae4..8fe374d 100644 (file)
@@ -17,7 +17,6 @@
 #include <vector>
 #include <algorithm>
 #include <sstream>
-#include <memory>
 
 #include "bool.hxx"
 #include "double.hxx"
@@ -514,9 +513,6 @@ bool setInnerBlocksRefs(ModelAdapter& adaptor, const std::vector<ScicosID>& chil
 
                 controller.setObjectProperty(*it, BLOCK, PORT_REFERENCE, port);
             }
-
-            // Regardless of the ports, use the loop to set each Block's 'parent_block' property
-            controller.setObjectProperty(*it, BLOCK, PARENT_BLOCK, adaptee);
         }
     }
     return true;
@@ -529,10 +525,10 @@ struct rpar
     {
         ScicosID adaptee = adaptor.getAdaptee()->id();
 
-        std::vector<ScicosID> diagramChild;
-        controller.getObjectProperty(adaptee, BLOCK, CHILDREN, diagramChild);
+        std::vector<ScicosID> diagramChildren;
+        controller.getObjectProperty(adaptee, BLOCK, CHILDREN, diagramChildren);
 
-        if (diagramChild.empty())
+        if (diagramChildren.empty())
         {
             std::vector<double> rpar;
             controller.getObjectProperty(adaptee, BLOCK, RPAR, rpar);
@@ -546,16 +542,15 @@ struct rpar
 #endif
             return o;
         }
-        else // SuperBlock, return the contained diagram
+        else // SuperBlock, return the contained diagram (allocating it on demand)
         {
-            std::shared_ptr<model::Diagram> super = std::static_pointer_cast<model::Diagram>(controller.getObject(diagramChild[0]));
-            DiagramAdapter* localAdaptor = new DiagramAdapter(super);
-
             DiagramAdapter* diagram = adaptor.getDiagram();
-            localAdaptor->setListObjects(diagram->getListObjects());
-            localAdaptor->setFrom(diagram->getFrom());
-            localAdaptor->setTo(diagram->getTo());
-            return localAdaptor;
+
+            /*
+             * FIXME: Sync all diagram children as the blocks might be modified by xcos
+             */
+
+            return diagram;
         }
     }
 
@@ -590,18 +585,52 @@ struct rpar
                 return false;
             }
 
-            // Translate 'v' to an DiagramAdapter, save it and update the Block's children list
-            DiagramAdapter* diagram = v->getAs<DiagramAdapter>();
-
+            // Translate 'v' to an DiagramAdapter ; copy if needed
+            DiagramAdapter* diagram;
+            if (v->getRef() > 1)
+            {
+                diagram = v->clone()->getAs<DiagramAdapter>();
+            }
+            else
+            {
+                diagram = v->getAs<DiagramAdapter>();
+            }
             adaptor.setDiagram(diagram);
 
-            // Save the child diagram's ID so it is deleted on 'clear'
-            std::vector<ScicosID> diagramChild (1, diagram->getAdaptee()->id());
-            controller.setObjectProperty(adaptee, BLOCK, CHILDREN, diagramChild);
-
-            // Link the Superblock ports to their inner "port blocks"
+            // set the diagram children as block children ; referencing them
             std::vector<ScicosID> diagramChildren;
             controller.getObjectProperty(diagram->getAdaptee()->id(), DIAGRAM, CHILDREN, diagramChildren);
+            std::vector<ScicosID> oldDiagramChildren;
+            controller.getObjectProperty(adaptor.getAdaptee()->id(), BLOCK, CHILDREN, oldDiagramChildren);
+
+            controller.setObjectProperty(adaptor.getAdaptee()->id(), BLOCK, CHILDREN, diagramChildren);
+            {
+                std::sort(oldDiagramChildren.begin(), oldDiagramChildren.end());
+                for (const ScicosID id : diagramChildren)
+                {
+                    if (id != 0 && !std::binary_search(oldDiagramChildren.begin(), oldDiagramChildren.end(), id))
+                    {
+                        auto o = controller.getObject(id);
+                        controller.setObjectProperty(o->id(), o->kind(), PARENT_BLOCK, adaptor.getAdaptee()->id());
+
+                        controller.referenceObject(id);
+                    }
+                }
+
+                std::sort(diagramChildren.begin(), diagramChildren.end());
+                for (const ScicosID id : oldDiagramChildren)
+                {
+                    if (id != 0 && !std::binary_search(diagramChildren.begin(), diagramChildren.end(), id))
+                    {
+                        auto o = controller.getObject(id);
+                        controller.setObjectProperty(o->id(), o->kind(), PARENT_BLOCK, ScicosID());
+
+                        controller.deleteObject(id);
+                    }
+                }
+            }
+
+            // Link the Superblock ports to their inner "port blocks"
             return setInnerBlocksRefs(adaptor, diagramChildren, controller);
         }
         else
@@ -1413,10 +1442,7 @@ struct uid
 } /* namespace */
 
 template<> property<ModelAdapter>::props_t property<ModelAdapter>::fields = property<ModelAdapter>::props_t();
-
-ModelAdapter::ModelAdapter(std::shared_ptr<model::Block> adaptee) :
-    BaseAdapter<ModelAdapter, org_scilab_modules_scicos::model::Block>(adaptee),
-    diagramAdapter(nullptr)
+static void initialize_fields()
 {
     if (property<ModelAdapter>::properties_have_not_been_set())
     {
@@ -1447,19 +1473,21 @@ ModelAdapter::ModelAdapter(std::shared_ptr<model::Block> adaptee) :
     }
 }
 
-ModelAdapter::ModelAdapter(const ModelAdapter& adapter) :
-    BaseAdapter<ModelAdapter, org_scilab_modules_scicos::model::Block>(adapter),
-    diagramAdapter(adapter.getDiagram())
+ModelAdapter::ModelAdapter() :
+    BaseAdapter<ModelAdapter, org_scilab_modules_scicos::model::Block>(),
+    m_diagramAdapter(nullptr)
+{
+    initialize_fields();
+}
+ModelAdapter::ModelAdapter(const Controller& c, model::Block* adaptee, DiagramAdapter* diagramAdapter) :
+    BaseAdapter<ModelAdapter, org_scilab_modules_scicos::model::Block>(c, adaptee),
+    m_diagramAdapter(diagramAdapter)
 {
+    initialize_fields();
 }
 
 ModelAdapter::~ModelAdapter()
 {
-    if (diagramAdapter != nullptr)
-    {
-        diagramAdapter->DecreaseRef();
-        diagramAdapter->killMe();
-    }
 }
 
 std::wstring ModelAdapter::getTypeStr()
@@ -1474,29 +1502,13 @@ std::wstring ModelAdapter::getShortTypeStr()
 
 DiagramAdapter* ModelAdapter::getDiagram() const
 {
-    if (diagramAdapter != nullptr)
-    {
-        diagramAdapter->IncreaseRef();
-    }
-    return diagramAdapter;
+    return m_diagramAdapter;
 }
 
-void ModelAdapter::setDiagram(DiagramAdapter* newDiagram)
+void ModelAdapter::setDiagram(DiagramAdapter* diagramAdapter)
 {
-    if (newDiagram != nullptr)
-    {
-        // The old 'diagramAdapter' needs to be freed after setting it to 'v'
-        DiagramAdapter* temp = diagramAdapter;
-
-        newDiagram->IncreaseRef();
-        diagramAdapter = newDiagram;
-
-        if (temp != nullptr)
-        {
-            temp->DecreaseRef();
-            temp->killMe();
-        }
-    }
+    // does not increment reference as this adapter does not own the DiagramAdapter
+    m_diagramAdapter = diagramAdapter;
 }
 
 } /* namespace view_scilab */
index a7636e3..44c7169 100644 (file)
@@ -14,7 +14,6 @@
 #define MODELADAPTER_HXX_
 
 #include <string>
-#include <memory>
 
 #include "BaseAdapter.hxx"
 #include "DiagramAdapter.hxx"
@@ -28,8 +27,8 @@ namespace view_scilab
 class ModelAdapter : public BaseAdapter<ModelAdapter, org_scilab_modules_scicos::model::Block>
 {
 public:
-    ModelAdapter(std::shared_ptr<model::Block> adaptee);
-    ModelAdapter(const ModelAdapter& adapter);
+    ModelAdapter();
+    ModelAdapter(const Controller& c, model::Block* adaptee, DiagramAdapter* diagramAdapter);
     ~ModelAdapter();
 
     static const std::wstring getSharedTypeStr()
@@ -41,10 +40,10 @@ public:
     std::wstring getShortTypeStr();
 
     DiagramAdapter* getDiagram() const;
-    void setDiagram(DiagramAdapter* newDiagram);
+    void setDiagram(DiagramAdapter* diagramAdapter);
 
 private:
-    DiagramAdapter* diagramAdapter;
+    DiagramAdapter* m_diagramAdapter;
 };
 
 } /* namespace view_scilab */
index b9d4ee8..436151f 100644 (file)
@@ -13,7 +13,6 @@
 #include <string>
 #include <vector>
 #include <algorithm>
-#include <memory>
 
 #include "double.hxx"
 #include "string.hxx"
@@ -304,10 +303,7 @@ struct doc
 } /* namespace */
 
 template<> property<ParamsAdapter>::props_t property<ParamsAdapter>::fields = property<ParamsAdapter>::props_t();
-
-ParamsAdapter::ParamsAdapter(std::shared_ptr<org_scilab_modules_scicos::model::Diagram> adaptee) :
-    BaseAdapter<ParamsAdapter, org_scilab_modules_scicos::model::Diagram>(adaptee),
-    doc_content(new types::List())
+static void initialize_fields()
 {
     if (property<ParamsAdapter>::properties_have_not_been_set())
     {
@@ -325,10 +321,18 @@ ParamsAdapter::ParamsAdapter(std::shared_ptr<org_scilab_modules_scicos::model::D
     }
 }
 
-ParamsAdapter::ParamsAdapter(const ParamsAdapter& adapter) :
-    BaseAdapter<ParamsAdapter, org_scilab_modules_scicos::model::Diagram>(adapter),
-    doc_content(adapter.getDocContent())
+ParamsAdapter::ParamsAdapter() :
+    BaseAdapter<ParamsAdapter, org_scilab_modules_scicos::model::Diagram>(),
+    doc_content(new types::List())
+{
+    initialize_fields();
+}
+
+ParamsAdapter::ParamsAdapter(const Controller& c, org_scilab_modules_scicos::model::Diagram* adaptee) :
+    BaseAdapter<ParamsAdapter, org_scilab_modules_scicos::model::Diagram>(c, adaptee),
+    doc_content(new types::List())
 {
+    initialize_fields();
 }
 
 ParamsAdapter::~ParamsAdapter()
index 1edaa0f..f794377 100644 (file)
@@ -14,7 +14,6 @@
 #define PARAMSADAPTER_HXX_
 
 #include <string>
-#include <memory>
 
 #include "BaseAdapter.hxx"
 
@@ -28,8 +27,8 @@ namespace view_scilab
 class ParamsAdapter : public BaseAdapter<ParamsAdapter, org_scilab_modules_scicos::model::Diagram>
 {
 public:
-    ParamsAdapter(std::shared_ptr<org_scilab_modules_scicos::model::Diagram> adaptee);
-    ParamsAdapter(const ParamsAdapter& adapter);
+    ParamsAdapter();
+    ParamsAdapter(const Controller& c, org_scilab_modules_scicos::model::Diagram* adaptee);
     ~ParamsAdapter();
 
     static const std::wstring getSharedTypeStr()
index 232f547..c841b62 100644 (file)
@@ -11,7 +11,6 @@
  */
 
 #include <string>
-#include <memory>
 
 #include "internal.hxx"
 #include "list.hxx"
@@ -32,8 +31,8 @@ namespace
 
 template<> property<ScsAdapter>::props_t property<ScsAdapter>::fields = property<ScsAdapter>::props_t();
 
-ScsAdapter::ScsAdapter(std::shared_ptr<org_scilab_modules_scicos::model::Diagram> adaptee) :
-    BaseAdapter<ScsAdapter, org_scilab_modules_scicos::model::Diagram>(adaptee)
+ScsAdapter::ScsAdapter(const Controller& c, org_scilab_modules_scicos::model::Diagram* adaptee) :
+    BaseAdapter<ScsAdapter, org_scilab_modules_scicos::model::Diagram>(c, adaptee)
 {
     if (property<ScsAdapter>::properties_have_not_been_set())
     {
index 5b9f0ca..328ec81 100644 (file)
@@ -14,7 +14,6 @@
 #define SCSADAPTER_HXX_
 
 #include <string>
-#include <memory>
 
 #include "BaseAdapter.hxx"
 
@@ -28,7 +27,7 @@ namespace view_scilab
 class ScsAdapter : public BaseAdapter<ScsAdapter, org_scilab_modules_scicos::model::Diagram>
 {
 public:
-    ScsAdapter(std::shared_ptr<org_scilab_modules_scicos::model::Diagram> adaptee);
+    ScsAdapter(const Controller& c, org_scilab_modules_scicos::model::Diagram* adaptee);
     ScsAdapter(const ScsAdapter& adapter);
     ~ScsAdapter();
 
index 59c2a2c..8d2ea5e 100644 (file)
@@ -11,7 +11,6 @@
  */
 
 #include <string>
-#include <memory>
 
 #include "internal.hxx"
 #include "types.hxx"
@@ -46,9 +45,7 @@ struct dummy_property
 } /* namespace */
 
 template<> property<StateAdapter>::props_t property<StateAdapter>::fields = property<StateAdapter>::props_t();
-
-StateAdapter::StateAdapter(std::shared_ptr<org_scilab_modules_scicos::model::Diagram> adaptee) :
-    BaseAdapter<StateAdapter, org_scilab_modules_scicos::model::Diagram>(adaptee)
+static void initialize_fields()
 {
     if (property<StateAdapter>::properties_have_not_been_set())
     {
@@ -64,9 +61,16 @@ StateAdapter::StateAdapter(std::shared_ptr<org_scilab_modules_scicos::model::Dia
     }
 }
 
-StateAdapter::StateAdapter(const StateAdapter& adapter) :
-    BaseAdapter<StateAdapter, org_scilab_modules_scicos::model::Diagram>(adapter)
+StateAdapter::StateAdapter() :
+    BaseAdapter<StateAdapter, org_scilab_modules_scicos::model::Diagram>()
+{
+    initialize_fields();
+}
+
+StateAdapter::StateAdapter(const Controller& c, org_scilab_modules_scicos::model::Diagram* adaptee) :
+    BaseAdapter<StateAdapter, org_scilab_modules_scicos::model::Diagram>(c, adaptee)
 {
+    initialize_fields();
 }
 
 StateAdapter::~StateAdapter()
index 9cdb44b..3657877 100644 (file)
@@ -14,7 +14,6 @@
 #define STATEADAPTER_HXX_
 
 #include <string>
-#include <memory>
 
 #include "BaseAdapter.hxx"
 
@@ -28,8 +27,8 @@ namespace view_scilab
 class StateAdapter : public BaseAdapter<StateAdapter, org_scilab_modules_scicos::model::Diagram>
 {
 public:
-    StateAdapter(std::shared_ptr<org_scilab_modules_scicos::model::Diagram> adaptee);
-    StateAdapter(const StateAdapter& adapter);
+    StateAdapter();
+    StateAdapter(const Controller& c, org_scilab_modules_scicos::model::Diagram* adaptee);
     ~StateAdapter();
 
     static const std::wstring getSharedTypeStr()
index 256813c..6f373fb 100644 (file)
@@ -12,7 +12,6 @@
 
 #include <string>
 #include <vector>
-#include <memory>
 
 #include "double.hxx"
 #include "string.hxx"
@@ -207,8 +206,8 @@ struct dummy_property
 
 template<> property<TextAdapter>::props_t property<TextAdapter>::fields = property<TextAdapter>::props_t();
 
-TextAdapter::TextAdapter(std::shared_ptr<org_scilab_modules_scicos::model::Annotation> adaptee) :
-    BaseAdapter<TextAdapter, org_scilab_modules_scicos::model::Annotation>(adaptee)
+TextAdapter::TextAdapter(const Controller& c, org_scilab_modules_scicos::model::Annotation* adaptee) :
+    BaseAdapter<TextAdapter, org_scilab_modules_scicos::model::Annotation>(c, adaptee)
 {
     if (property<TextAdapter>::properties_have_not_been_set())
     {
index be90de5..2405d2b 100644 (file)
@@ -14,7 +14,6 @@
 #define TEXTADAPTER_HXX_
 
 #include <string>
-#include <memory>
 
 #include "internal.hxx"
 
@@ -30,7 +29,7 @@ namespace view_scilab
 class TextAdapter : public BaseAdapter<TextAdapter, org_scilab_modules_scicos::model::Annotation>
 {
 public:
-    TextAdapter(std::shared_ptr<org_scilab_modules_scicos::model::Annotation> adaptee);
+    TextAdapter(const Controller& c, org_scilab_modules_scicos::model::Annotation* adaptee);
     TextAdapter(const TextAdapter& adapter);
     ~TextAdapter();
 
index 962f0ee..12cbf98 100644 (file)
@@ -14,6 +14,7 @@
 #ifndef PORTS_MANAGEMENT_HXX_
 #define PORTS_MANAGEMENT_HXX_
 
+#include <deque>
 #include <string>
 #include <vector>
 #include <algorithm>
@@ -78,10 +79,10 @@ types::InternalType* get_ports_property(const Adaptor& adaptor, const object_pro
                 return new types::Double(1);
             }
             datatypeIndex++;
-            // no break
+        // no break
         case DATATYPE_COLS:
             datatypeIndex++;
-            // no break
+        // no break
         case DATATYPE_ROWS:
         {
             datatypeIndex++;
@@ -272,10 +273,10 @@ bool set_ports_property(const Adaptor& adaptor, const object_properties_t port_k
 
             case DATATYPE_TYPE:
                 datatypeIndex++;
-                // no break
+            // no break
             case DATATYPE_COLS:
                 datatypeIndex++;
-                // no break
+            // no break
             case DATATYPE_ROWS:
             {
                 datatypeIndex++;
@@ -336,9 +337,9 @@ bool set_ports_property(const Adaptor& adaptor, const object_properties_t port_k
  * \return true on success, false otherwise
  */
 template<typename Adaptor, object_properties_t p>
-inline bool fillNewPorts(std::vector<int>& newPorts, const std::vector<ScicosID>& children, const double* d)
+inline bool fillNewPorts(std::deque<int>& newPorts, const std::vector<ScicosID>& children, const double* d)
 {
-    for (std::vector<int>::iterator it = newPorts.begin(); it != newPorts.end(); ++it, ++d)
+    for (std::deque<int>::iterator it = newPorts.begin(); it != newPorts.end(); ++it, ++d)
     {
 
         if (p == CONNECTED_SIGNALS)   // the associated link must exist
@@ -426,10 +427,10 @@ inline bool updateNewPort(const ScicosID oldPort, int newPort, Controller& contr
         {
             case DATATYPE_TYPE:
                 datatypeIndex++;
-                // no break
+            // no break
             case DATATYPE_COLS:
                 datatypeIndex++;
-                // no break
+            // no break
             case DATATYPE_ROWS:
             {
                 datatypeIndex++;
@@ -476,10 +477,10 @@ inline bool addNewPort(const ScicosID newPortID, int newPort, const std::vector<
         {
             case DATATYPE_TYPE:
                 datatypeIndex++;
-                // no break
+            // no break
             case DATATYPE_COLS:
                 datatypeIndex++;
-                // no break
+            // no break
             case DATATYPE_ROWS:
             {
                 datatypeIndex++;
@@ -512,21 +513,27 @@ bool update_ports_property(const Adaptor& adaptor, const object_properties_t por
     }
     types::Double* value = v->getAs<types::Double>();
 
+    ScicosID parentBlock;
+    controller.getObjectProperty(adaptee, BLOCK, PARENT_BLOCK, parentBlock);
     ScicosID parentDiagram;
     controller.getObjectProperty(adaptee, BLOCK, PARENT_DIAGRAM, parentDiagram);
 
     std::vector<ScicosID> children;
-    if (parentDiagram != 0)
+    if (parentBlock != 0)
+    {
+        controller.getObjectProperty(parentBlock, BLOCK, CHILDREN, children);
+    }
+    if (parentDiagram != 0 && children.empty())
     {
         controller.getObjectProperty(parentDiagram, DIAGRAM, CHILDREN, children);
     }
 
-    std::vector<int> newPorts (value->getSize());
+    std::deque<int> newPorts (value->getSize());
 
     // retrieve old data
-    std::vector<ScicosID> oldPorts;
-    controller.getObjectProperty(adaptee, BLOCK, port_kind, oldPorts);
-    std::vector<ScicosID> previousPorts = oldPorts;
+    std::vector<ScicosID> previousPorts;
+    controller.getObjectProperty(adaptee, BLOCK, port_kind, previousPorts);
+    std::deque<ScicosID> oldPorts(previousPorts.begin(), previousPorts.end());
 
     double* d = value->getReal();
     if (!fillNewPorts<Adaptor, p>(newPorts, children, d))
@@ -539,10 +546,10 @@ bool update_ports_property(const Adaptor& adaptor, const object_properties_t por
     // updated ports
     while (!oldPorts.empty() && !newPorts.empty())
     {
-        ScicosID oldPort = oldPorts.back();
-        oldPorts.pop_back();
-        int newPort = newPorts.back();
-        newPorts.pop_back();
+        ScicosID oldPort = oldPorts.front();
+        oldPorts.pop_front();
+        int newPort = newPorts.front();
+        newPorts.pop_front();
 
         if (!updateNewPort<Adaptor, p>(oldPort, newPort, controller, children, deletedObjects))
         {
@@ -553,12 +560,12 @@ bool update_ports_property(const Adaptor& adaptor, const object_properties_t por
     // removed ports
     if (!oldPorts.empty())
     {
-        previousPorts.erase(previousPorts.begin() + oldPorts.size(), previousPorts.end());
+        previousPorts.erase(previousPorts.end() - oldPorts.size(), previousPorts.end());
 
         while (!oldPorts.empty())
         {
-            ScicosID oldPort = oldPorts.back();
-            oldPorts.pop_back();
+            ScicosID oldPort = oldPorts.front();
+            oldPorts.pop_front();
 
             ScicosID signal;
             controller.getObjectProperty(oldPort, PORT, CONNECTED_SIGNALS, signal);
@@ -595,8 +602,8 @@ bool update_ports_property(const Adaptor& adaptor, const object_properties_t por
     {
         while (!newPorts.empty())
         {
-            int newPort = newPorts.back();
-            newPorts.pop_back();
+            int newPort = newPorts.front();
+            newPorts.pop_front();
 
             ScicosID id = controller.createObject(PORT);
             controller.setObjectProperty(id, PORT, SOURCE_BLOCK, adaptee);
@@ -627,6 +634,10 @@ bool update_ports_property(const Adaptor& adaptor, const object_properties_t por
     // remove objects from the model after de-association
     if (parentDiagram != 0)
     {
+        for (const ScicosID& id : children)
+        {
+            controller.referenceObject(id);
+        }
         controller.setObjectProperty(parentDiagram, DIAGRAM, CHILDREN, children);
     }
     for (std::vector<ScicosID>::iterator it = deletedObjects.begin(); it != deletedObjects.end(); ++it)
diff --git a/scilab/modules/scicos/src/cpp/view_scilab/recursive_cloning.cpp b/scilab/modules/scicos/src/cpp/view_scilab/recursive_cloning.cpp
deleted file mode 100644 (file)
index 2233ecb..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
- *  Copyright (C) 2014-2015 - Scilab Enterprises - Paul Bignier
- *
- *  This file must be used under the terms of the CeCILL.
- *  This source file is licensed as described in the file COPYING, which
- *  you should have received as part of this distribution.  The terms
- *  are also available at
- *  http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
- *
- */
-
-#include <vector>
-#include <memory>
-
-#include "types.hxx"
-#include "list.hxx"
-#include "mlist.hxx"
-#include "string.hxx"
-
-#include "utilities.hxx"
-#include "adapters_utilities.hxx"
-#include "Controller.hxx"
-#include "recursive_cloning.hxx"
-#include "BlockAdapter.hxx"
-#include "DiagramAdapter.hxx"
-#include "LinkAdapter.hxx"
-#include "TextAdapter.hxx"
-#include "model/BaseObject.hxx"
-
-namespace org_scilab_modules_scicos
-{
-namespace view_scilab
-{
-
-/*
- * Recursively create a List of Adapters for all objects contained in 'diagramChildren'.
- * At each call, do the linking at model-level
- */
-types::List* deepCreateAdapters(const std::vector<ScicosID>& diagramChildren, types::List* oldList_objects, const std::vector<link_t>& from, const std::vector<link_t>& to, Controller controller)
-{
-    std::vector<LinkAdapter*> linkListView; // Store the new LinkAdapters to make the linking at model-level after the loop
-    types::List* List_objects = new types::List();
-
-    for (int i = 0; i < static_cast<int>(diagramChildren.size()); ++i)
-    {
-        if (diagramChildren[i] == 0)
-        {
-            types::MList* deletedObject = new types::MList();
-            types::String* header = new types::String("Deleted");
-            deletedObject->append(header);
-            List_objects->append(deletedObject);
-            continue;
-        }
-
-        std::shared_ptr<model::BaseObject> item = controller.getObject(diagramChildren[i]);
-        switch (item->kind())
-        {
-            case ANNOTATION:
-            {
-                std::shared_ptr<model::Annotation> annotation = std::static_pointer_cast<model::Annotation>(item);
-                TextAdapter* localAdaptor = new TextAdapter(annotation);
-
-                List_objects->append(localAdaptor);
-                continue;
-            }
-            case BLOCK:
-            {
-                std::shared_ptr<model::Block> block = std::static_pointer_cast<model::Block>(item);
-                BlockAdapter* localAdaptor = new BlockAdapter(block);
-
-                std::vector<ScicosID> childDiagram;
-                controller.getObjectProperty(block->id(), BLOCK, CHILDREN, childDiagram);
-
-                if (!childDiagram.empty())
-                {
-                    std::shared_ptr<org_scilab_modules_scicos::model::Diagram> diagram = std::static_pointer_cast<org_scilab_modules_scicos::model::Diagram>(controller.getObject(childDiagram[0]));
-                    DiagramAdapter* diagramAdapter = new DiagramAdapter(diagram);
-
-                    // Extract the information of the old cloned diagram
-                    BlockAdapter* oldBlock = oldList_objects->get(i)->getAs<BlockAdapter>();
-                    DiagramAdapter* oldBlockDiagram = oldBlock->getDiagram();
-
-                    std::vector<ScicosID> subDiagramChildren;
-                    controller.getObjectProperty(diagram->id(), DIAGRAM, CHILDREN, subDiagramChildren);
-
-                    types::List* oldDiagramList_objects = oldBlockDiagram->getListObjects()->getAs<types::List>();
-
-                    std::vector<link_t> from_vec = oldBlockDiagram->getFrom();
-                    std::vector<link_t> to_vec = oldBlockDiagram->getTo();
-
-                    types::List* new_list_objects = deepCreateAdapters(subDiagramChildren, oldDiagramList_objects, from_vec, to_vec, controller);
-
-                    diagramAdapter->setListObjects(new_list_objects);
-                    diagramAdapter->setFrom(from_vec);
-                    diagramAdapter->setTo(to_vec);
-
-                    localAdaptor->setDiagram(diagramAdapter);
-                }
-
-                List_objects->append(localAdaptor);
-                continue;
-            }
-            case LINK:
-            {
-                std::shared_ptr<model::Link> link = std::static_pointer_cast<model::Link>(item);
-                LinkAdapter* localAdaptor = new LinkAdapter(link);
-
-                // Do the model linking in the next loop, in case the Link points to a Block that has not been added yet
-                linkListView.push_back(localAdaptor);
-
-                List_objects->append(localAdaptor);
-                continue;
-            }
-            default:
-            {
-            }
-        }
-    }
-
-    // Do the linking at model-level, from the old 'from_vec' and 'to_vec'
-    for (size_t i = 0; i < linkListView.size(); ++i)
-    {
-        // Trigger 'from' and 'to' properties
-        linkListView[i]->setFromInModel(from[i], controller);
-        linkListView[i]->setToInModel(to[i], controller);
-    }
-
-    return List_objects;
-}
-
-} /* namespace view_scilab */
-} /* namespace org_scilab_modules_scicos */
diff --git a/scilab/modules/scicos/src/cpp/view_scilab/recursive_cloning.hxx b/scilab/modules/scicos/src/cpp/view_scilab/recursive_cloning.hxx
deleted file mode 100644 (file)
index d8e003f..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
- *  Copyright (C) 2014-2015 - Scilab Enterprises - Paul Bignier
- *
- *  This file must be used under the terms of the CeCILL.
- *  This source file is licensed as described in the file COPYING, which
- *  you should have received as part of this distribution.  The terms
- *  are also available at
- *  http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
- *
- */
-
-#ifndef RECURSIVE_CLONING_HXX_
-#define RECURSIVE_CLONING_HXX_
-
-#include <vector>
-
-#include "types.hxx"
-#include "list.hxx"
-
-#include "utilities.hxx"
-#include "adapters_utilities.hxx"
-#include "Controller.hxx"
-
-namespace org_scilab_modules_scicos
-{
-namespace view_scilab
-{
-
-/*
- * Recursively create a List of Adapters for all objects contained in 'diagramChildren'.
- * At each call, do the linking at model-level
- */
-types::List* deepCreateAdapters(const std::vector<ScicosID>& diagramChildren, types::List* oldList_objects, const std::vector<link_t>& from, const std::vector<link_t>& to, Controller controller);
-
-} /* namespace view_scilab */
-} /* namespace org_scilab_modules_scicos */
-
-#endif /* RECURSIVE_CLONING_HXX_ */
index 5a41ff0..cb227b1 100644 (file)
@@ -39,8 +39,8 @@ propertyUpdated( 4 , PORT , LABEL ) : NO_CHANGES
 propertyUpdated( 1 , BLOCK , STYLE ) : NO_CHANGES
 propertyUpdated( 1 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
 propertyUpdated( 1 , BLOCK , SIM_FUNCTION_API ) : SUCCESS
-propertyUpdated( 3 , PORT , DATATYPE ) : SUCCESS
 propertyUpdated( 2 , PORT , DATATYPE ) : SUCCESS
+propertyUpdated( 3 , PORT , DATATYPE ) : SUCCESS
 propertyUpdated( 4 , PORT , DATATYPE ) : SUCCESS
 propertyUpdated( 1 , BLOCK , STATE ) : NO_CHANGES
 propertyUpdated( 1 , BLOCK , DSTATE ) : NO_CHANGES
@@ -216,7 +216,6 @@ propertyUpdated( 5 , BLOCK , OUTPUTS ) : SUCCESS
 propertyUpdated( 5 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
 propertyUpdated( 5 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
 propertyUpdated( 5 , BLOCK , PARENT_BLOCK ) : NO_CHANGES
-propertyUpdated( 5 , BLOCK , CHILDREN ) : NO_CHANGES
 propertyUpdated( 5 , BLOCK , GEOMETRY ) : NO_CHANGES
 propertyUpdated( 5 , BLOCK , GEOMETRY ) : NO_CHANGES
 propertyUpdated( 5 , BLOCK , ANGLE ) : NO_CHANGES
@@ -235,8 +234,8 @@ propertyUpdated( 8 , PORT , LABEL ) : NO_CHANGES
 propertyUpdated( 5 , BLOCK , STYLE ) : NO_CHANGES
 propertyUpdated( 5 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
 propertyUpdated( 5 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
-propertyUpdated( 7 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 6 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 7 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 6 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 7 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 6 , PORT , DATATYPE ) : NO_CHANGES
@@ -426,7 +425,6 @@ propertyUpdated( 9 , BLOCK , OUTPUTS ) : SUCCESS
 propertyUpdated( 9 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
 propertyUpdated( 9 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
 propertyUpdated( 9 , BLOCK , PARENT_BLOCK ) : NO_CHANGES
-propertyUpdated( 9 , BLOCK , CHILDREN ) : NO_CHANGES
 propertyUpdated( 9 , BLOCK , GEOMETRY ) : NO_CHANGES
 propertyUpdated( 9 , BLOCK , GEOMETRY ) : NO_CHANGES
 propertyUpdated( 9 , BLOCK , ANGLE ) : NO_CHANGES
@@ -445,8 +443,8 @@ propertyUpdated( 12 , PORT , LABEL ) : NO_CHANGES
 propertyUpdated( 9 , BLOCK , STYLE ) : NO_CHANGES
 propertyUpdated( 9 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
 propertyUpdated( 9 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
-propertyUpdated( 11 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 10 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 11 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 10 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 11 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 10 , PORT , DATATYPE ) : NO_CHANGES
@@ -636,7 +634,6 @@ propertyUpdated( 13 , BLOCK , OUTPUTS ) : SUCCESS
 propertyUpdated( 13 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
 propertyUpdated( 13 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
 propertyUpdated( 13 , BLOCK , PARENT_BLOCK ) : NO_CHANGES
-propertyUpdated( 13 , BLOCK , CHILDREN ) : NO_CHANGES
 propertyUpdated( 13 , BLOCK , GEOMETRY ) : NO_CHANGES
 propertyUpdated( 13 , BLOCK , GEOMETRY ) : NO_CHANGES
 propertyUpdated( 13 , BLOCK , ANGLE ) : NO_CHANGES
@@ -662,9 +659,9 @@ propertyUpdated( 16 , PORT , LABEL ) : NO_CHANGES
 propertyUpdated( 13 , BLOCK , STYLE ) : NO_CHANGES
 propertyUpdated( 13 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
 propertyUpdated( 13 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
-propertyUpdated( 17 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 15 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 14 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 15 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 17 , PORT , DATATYPE ) : SUCCESS
 propertyUpdated( 16 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 16 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 16 , PORT , DATATYPE ) : NO_CHANGES
@@ -859,34 +856,32 @@ propertyUpdated( 18 , BLOCK , OUTPUTS ) : SUCCESS
 propertyUpdated( 18 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
 propertyUpdated( 18 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
 propertyUpdated( 18 , BLOCK , PARENT_BLOCK ) : NO_CHANGES
-propertyUpdated( 18 , BLOCK , CHILDREN ) : NO_CHANGES
 propertyUpdated( 18 , BLOCK , GEOMETRY ) : NO_CHANGES
 propertyUpdated( 18 , BLOCK , GEOMETRY ) : NO_CHANGES
 propertyUpdated( 18 , BLOCK , ANGLE ) : NO_CHANGES
 propertyUpdated( 18 , BLOCK , ANGLE ) : NO_CHANGES
 propertyUpdated( 18 , BLOCK , EXPRS ) : SUCCESS
 propertyUpdated( 18 , BLOCK , INPUTS ) : SUCCESS
-propertyUpdated( 18 , BLOCK , INPUTS ) : SUCCESS
+propertyUpdated( 18 , BLOCK , INPUTS ) : NO_CHANGES
 propertyUpdated( 18 , BLOCK , OUTPUTS ) : NO_CHANGES
 propertyUpdated( 18 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
 propertyUpdated( 18 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
-objectDeleted( 19 , PORT )
+objectDeleted( 21 , PORT )
 propertyUpdated( 18 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 19 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 20 , PORT , IMPLICIT ) : NO_CHANGES
 propertyUpdated( 22 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 19 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 20 , PORT , STYLE ) : NO_CHANGES
 propertyUpdated( 22 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 19 , PORT , LABEL ) : NO_CHANGES
+propertyUpdated( 20 , PORT , LABEL ) : NO_CHANGES
 propertyUpdated( 22 , PORT , LABEL ) : NO_CHANGES
 propertyUpdated( 18 , BLOCK , STYLE ) : NO_CHANGES
 propertyUpdated( 18 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
 propertyUpdated( 18 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
-objectCreated( 23 , PORT )
-propertyUpdated( 23 , PORT , SOURCE_BLOCK ) : SUCCESS
-propertyUpdated( 23 , PORT , PORT_KIND ) : SUCCESS
-propertyUpdated( 23 , PORT , DATATYPE ) : SUCCESS
-objectCreated( 24 , PORT )
-propertyUpdated( 24 , PORT , SOURCE_BLOCK ) : SUCCESS
-propertyUpdated( 24 , PORT , PORT_KIND ) : SUCCESS
-propertyUpdated( 24 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 18 , BLOCK , INPUTS ) : SUCCESS
+propertyUpdated( 19 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 20 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 22 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 22 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 22 , PORT , DATATYPE ) : NO_CHANGES
@@ -1015,53 +1010,53 @@ equations = list()
 uid = ""
 // Try with another block containing event inputs
 o = CSCOPE("define")
-objectCreated( 25 , BLOCK )
-propertyUpdated( 25 , BLOCK , GEOMETRY ) : NO_CHANGES
-propertyUpdated( 25 , BLOCK , GEOMETRY ) : SUCCESS
-propertyUpdated( 25 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 25 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 25 , BLOCK , EXPRS ) : SUCCESS
-objectCreated( 26 , PORT )
-propertyUpdated( 26 , PORT , SOURCE_BLOCK ) : SUCCESS
-propertyUpdated( 26 , PORT , PORT_KIND ) : SUCCESS
-propertyUpdated( 25 , BLOCK , INPUTS ) : SUCCESS
-objectCreated( 27 , PORT )
-propertyUpdated( 27 , PORT , SOURCE_BLOCK ) : SUCCESS
-propertyUpdated( 27 , PORT , PORT_KIND ) : SUCCESS
-propertyUpdated( 25 , BLOCK , EVENT_INPUTS ) : SUCCESS
-propertyUpdated( 25 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 26 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 26 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 26 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 25 , BLOCK , STYLE ) : NO_CHANGES
-propertyUpdated( 25 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
-propertyUpdated( 25 , BLOCK , SIM_FUNCTION_API ) : SUCCESS
-propertyUpdated( 26 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 26 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 27 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 25 , BLOCK , STATE ) : NO_CHANGES
-propertyUpdated( 25 , BLOCK , DSTATE ) : NO_CHANGES
-propertyUpdated( 25 , BLOCK , ODSTATE ) : NO_CHANGES
-propertyUpdated( 25 , BLOCK , RPAR ) : SUCCESS
-propertyUpdated( 25 , BLOCK , IPAR ) : SUCCESS
-propertyUpdated( 25 , BLOCK , OPAR ) : NO_CHANGES
-propertyUpdated( 25 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 25 , BLOCK , SIM_DEP_UT ) : SUCCESS
-propertyUpdated( 25 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 25 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 25 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 25 , BLOCK , UID ) : NO_CHANGES
-propertyUpdated( 25 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
+objectCreated( 23 , BLOCK )
+propertyUpdated( 23 , BLOCK , GEOMETRY ) : NO_CHANGES
+propertyUpdated( 23 , BLOCK , GEOMETRY ) : SUCCESS
+propertyUpdated( 23 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 23 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 23 , BLOCK , EXPRS ) : SUCCESS
+objectCreated( 24 , PORT )
+propertyUpdated( 24 , PORT , SOURCE_BLOCK ) : SUCCESS
+propertyUpdated( 24 , PORT , PORT_KIND ) : SUCCESS
+propertyUpdated( 23 , BLOCK , INPUTS ) : SUCCESS
+objectCreated( 25 , PORT )
+propertyUpdated( 25 , PORT , SOURCE_BLOCK ) : SUCCESS
+propertyUpdated( 25 , PORT , PORT_KIND ) : SUCCESS
+propertyUpdated( 23 , BLOCK , EVENT_INPUTS ) : SUCCESS
+propertyUpdated( 23 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 24 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 24 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 24 , PORT , LABEL ) : NO_CHANGES
+propertyUpdated( 23 , BLOCK , STYLE ) : NO_CHANGES
+propertyUpdated( 23 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
+propertyUpdated( 23 , BLOCK , SIM_FUNCTION_API ) : SUCCESS
+propertyUpdated( 24 , PORT , DATATYPE ) : SUCCESS
+propertyUpdated( 24 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 25 , PORT , DATATYPE ) : SUCCESS
+propertyUpdated( 23 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 23 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 23 , BLOCK , ODSTATE ) : NO_CHANGES
+propertyUpdated( 23 , BLOCK , RPAR ) : SUCCESS
+propertyUpdated( 23 , BLOCK , IPAR ) : SUCCESS
+propertyUpdated( 23 , BLOCK , OPAR ) : NO_CHANGES
+propertyUpdated( 23 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 23 , BLOCK , SIM_DEP_UT ) : SUCCESS
+propertyUpdated( 23 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 23 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 23 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 23 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 23 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
 propertyUpdated( 18 , BLOCK , INPUTS ) : SUCCESS
 propertyUpdated( 18 , BLOCK , OUTPUTS ) : NO_CHANGES
 propertyUpdated( 18 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
 propertyUpdated( 18 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
-objectDeleted( 23 , PORT )
+objectDeleted( 19 , PORT )
 propertyUpdated( 18 , BLOCK , INPUTS ) : SUCCESS
 propertyUpdated( 18 , BLOCK , OUTPUTS ) : NO_CHANGES
 propertyUpdated( 18 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
 propertyUpdated( 18 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
-objectDeleted( 24 , PORT )
+objectDeleted( 20 , PORT )
 propertyUpdated( 18 , BLOCK , INPUTS ) : NO_CHANGES
 propertyUpdated( 18 , BLOCK , OUTPUTS ) : SUCCESS
 propertyUpdated( 18 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
@@ -1184,91 +1179,90 @@ function [ok,clrs,win,wpos,wdim,ymin,ymax,per,N,heritance,nom,exprs] = scicos_ge
 endfunction
 funcprot(p);
 o = CSCOPE("set", o)
-objectCreated( 28 , BLOCK )
-propertyUpdated( 28 , BLOCK , SIM_FUNCTION_API ) : SUCCESS
-propertyUpdated( 28 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
-propertyUpdated( 28 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
-propertyUpdated( 28 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 28 , BLOCK , UID ) : NO_CHANGES
-propertyUpdated( 28 , BLOCK , STYLE ) : NO_CHANGES
-propertyUpdated( 28 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 28 , BLOCK , GEOMETRY ) : SUCCESS
-propertyUpdated( 28 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 28 , BLOCK , STATE ) : NO_CHANGES
-propertyUpdated( 28 , BLOCK , DSTATE ) : NO_CHANGES
-propertyUpdated( 28 , BLOCK , ODSTATE ) : NO_CHANGES
-propertyUpdated( 28 , BLOCK , RPAR ) : SUCCESS
-propertyUpdated( 28 , BLOCK , OPAR ) : NO_CHANGES
-propertyUpdated( 28 , BLOCK , SIM_DEP_UT ) : SUCCESS
-propertyUpdated( 28 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 28 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 28 , BLOCK , IPAR ) : SUCCESS
-propertyUpdated( 28 , BLOCK , EXPRS ) : SUCCESS
-propertyUpdated( 28 , BLOCK , EQUATIONS ) : NO_CHANGES
-propertyUpdated( 28 , BLOCK , PARENT_DIAGRAM ) : NO_CHANGES
-objectCreated( 29 , PORT )
-propertyUpdated( 29 , PORT , FIRING ) : NO_CHANGES
-propertyUpdated( 29 , PORT , PORT_KIND ) : SUCCESS
-propertyUpdated( 29 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 29 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 29 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 29 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 29 , PORT , SOURCE_BLOCK ) : SUCCESS
-propertyUpdated( 29 , PORT , CONNECTED_SIGNALS ) : NO_CHANGES
-propertyUpdated( 28 , BLOCK , INPUTS ) : SUCCESS
-propertyUpdated( 28 , BLOCK , OUTPUTS ) : NO_CHANGES
-objectCreated( 30 , PORT )
-propertyUpdated( 30 , PORT , FIRING ) : NO_CHANGES
-propertyUpdated( 30 , PORT , PORT_KIND ) : SUCCESS
-propertyUpdated( 30 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 30 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 30 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 30 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 30 , PORT , SOURCE_BLOCK ) : SUCCESS
-propertyUpdated( 30 , PORT , CONNECTED_SIGNALS ) : NO_CHANGES
-propertyUpdated( 28 , BLOCK , EVENT_INPUTS ) : SUCCESS
-propertyUpdated( 28 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
-propertyUpdated( 28 , BLOCK , PARENT_BLOCK ) : NO_CHANGES
-propertyUpdated( 28 , BLOCK , CHILDREN ) : NO_CHANGES
-propertyUpdated( 28 , BLOCK , GEOMETRY ) : NO_CHANGES
-propertyUpdated( 28 , BLOCK , GEOMETRY ) : NO_CHANGES
-propertyUpdated( 28 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 28 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 28 , BLOCK , EXPRS ) : NO_CHANGES
-propertyUpdated( 28 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 29 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 29 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 29 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 28 , BLOCK , STYLE ) : NO_CHANGES
-propertyUpdated( 28 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
-propertyUpdated( 28 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
-propertyUpdated( 29 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 29 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 29 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 30 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 28 , BLOCK , STATE ) : NO_CHANGES
-propertyUpdated( 28 , BLOCK , DSTATE ) : NO_CHANGES
-propertyUpdated( 28 , BLOCK , ODSTATE ) : NO_CHANGES
-propertyUpdated( 28 , BLOCK , RPAR ) : NO_CHANGES
-propertyUpdated( 28 , BLOCK , IPAR ) : NO_CHANGES
-propertyUpdated( 28 , BLOCK , OPAR ) : NO_CHANGES
-propertyUpdated( 28 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 28 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
-propertyUpdated( 28 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 28 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 28 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 28 , BLOCK , UID ) : NO_CHANGES
-propertyUpdated( 25 , BLOCK , INPUTS ) : SUCCESS
-propertyUpdated( 25 , BLOCK , OUTPUTS ) : NO_CHANGES
-propertyUpdated( 25 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
-propertyUpdated( 25 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
-objectDeleted( 26 , PORT )
-propertyUpdated( 25 , BLOCK , INPUTS ) : NO_CHANGES
-propertyUpdated( 25 , BLOCK , OUTPUTS ) : NO_CHANGES
-propertyUpdated( 25 , BLOCK , EVENT_INPUTS ) : SUCCESS
-propertyUpdated( 25 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
-objectDeleted( 27 , PORT )
-objectDeleted( 25 , BLOCK )
+objectCreated( 26 , BLOCK )
+propertyUpdated( 26 , BLOCK , SIM_FUNCTION_API ) : SUCCESS
+propertyUpdated( 26 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
+propertyUpdated( 26 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
+propertyUpdated( 26 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 26 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 26 , BLOCK , STYLE ) : NO_CHANGES
+propertyUpdated( 26 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 26 , BLOCK , GEOMETRY ) : SUCCESS
+propertyUpdated( 26 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 26 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 26 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 26 , BLOCK , ODSTATE ) : NO_CHANGES
+propertyUpdated( 26 , BLOCK , RPAR ) : SUCCESS
+propertyUpdated( 26 , BLOCK , OPAR ) : NO_CHANGES
+propertyUpdated( 26 , BLOCK , SIM_DEP_UT ) : SUCCESS
+propertyUpdated( 26 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 26 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 26 , BLOCK , IPAR ) : SUCCESS
+propertyUpdated( 26 , BLOCK , EXPRS ) : SUCCESS
+propertyUpdated( 26 , BLOCK , EQUATIONS ) : NO_CHANGES
+propertyUpdated( 26 , BLOCK , PARENT_DIAGRAM ) : NO_CHANGES
+objectCreated( 27 , PORT )
+propertyUpdated( 27 , PORT , FIRING ) : NO_CHANGES
+propertyUpdated( 27 , PORT , PORT_KIND ) : SUCCESS
+propertyUpdated( 27 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 27 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 27 , PORT , LABEL ) : NO_CHANGES
+propertyUpdated( 27 , PORT , DATATYPE ) : SUCCESS
+propertyUpdated( 27 , PORT , SOURCE_BLOCK ) : SUCCESS
+propertyUpdated( 27 , PORT , CONNECTED_SIGNALS ) : NO_CHANGES
+propertyUpdated( 26 , BLOCK , INPUTS ) : SUCCESS
+propertyUpdated( 26 , BLOCK , OUTPUTS ) : NO_CHANGES
+objectCreated( 28 , PORT )
+propertyUpdated( 28 , PORT , FIRING ) : NO_CHANGES
+propertyUpdated( 28 , PORT , PORT_KIND ) : SUCCESS
+propertyUpdated( 28 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 28 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 28 , PORT , LABEL ) : NO_CHANGES
+propertyUpdated( 28 , PORT , DATATYPE ) : SUCCESS
+propertyUpdated( 28 , PORT , SOURCE_BLOCK ) : SUCCESS
+propertyUpdated( 28 , PORT , CONNECTED_SIGNALS ) : NO_CHANGES
+propertyUpdated( 26 , BLOCK , EVENT_INPUTS ) : SUCCESS
+propertyUpdated( 26 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+propertyUpdated( 26 , BLOCK , PARENT_BLOCK ) : NO_CHANGES
+propertyUpdated( 26 , BLOCK , GEOMETRY ) : NO_CHANGES
+propertyUpdated( 26 , BLOCK , GEOMETRY ) : NO_CHANGES
+propertyUpdated( 26 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 26 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 26 , BLOCK , EXPRS ) : NO_CHANGES
+propertyUpdated( 26 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 27 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 27 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 27 , PORT , LABEL ) : NO_CHANGES
+propertyUpdated( 26 , BLOCK , STYLE ) : NO_CHANGES
+propertyUpdated( 26 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
+propertyUpdated( 26 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
+propertyUpdated( 27 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 27 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 27 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 28 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 26 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 26 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 26 , BLOCK , ODSTATE ) : NO_CHANGES
+propertyUpdated( 26 , BLOCK , RPAR ) : NO_CHANGES
+propertyUpdated( 26 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 26 , BLOCK , OPAR ) : NO_CHANGES
+propertyUpdated( 26 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 26 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
+propertyUpdated( 26 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 26 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 26 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 26 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 23 , BLOCK , INPUTS ) : SUCCESS
+propertyUpdated( 23 , BLOCK , OUTPUTS ) : NO_CHANGES
+propertyUpdated( 23 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
+propertyUpdated( 23 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+objectDeleted( 24 , PORT )
+propertyUpdated( 23 , BLOCK , INPUTS ) : NO_CHANGES
+propertyUpdated( 23 , BLOCK , OUTPUTS ) : NO_CHANGES
+propertyUpdated( 23 , BLOCK , EVENT_INPUTS ) : SUCCESS
+propertyUpdated( 23 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+objectDeleted( 25 , PORT )
+objectDeleted( 23 , BLOCK )
 o  = 
 GUI     : CSCOPE
 Graphics: 
@@ -1316,74 +1310,74 @@ Model   :
           uid = ""
 // Test 'opar' and 'odstate'
 o = LOGIC("define")
-objectCreated( 31 , BLOCK )
-propertyUpdated( 31 , BLOCK , GEOMETRY ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , GEOMETRY ) : SUCCESS
-propertyUpdated( 31 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , EXPRS ) : SUCCESS
+objectCreated( 29 , BLOCK )
+propertyUpdated( 29 , BLOCK , GEOMETRY ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , GEOMETRY ) : SUCCESS
+propertyUpdated( 29 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , EXPRS ) : SUCCESS
+objectCreated( 30 , PORT )
+propertyUpdated( 30 , PORT , SOURCE_BLOCK ) : SUCCESS
+propertyUpdated( 30 , PORT , PORT_KIND ) : SUCCESS
+objectCreated( 31 , PORT )
+propertyUpdated( 31 , PORT , SOURCE_BLOCK ) : SUCCESS
+propertyUpdated( 31 , PORT , PORT_KIND ) : SUCCESS
+propertyUpdated( 29 , BLOCK , INPUTS ) : SUCCESS
 objectCreated( 32 , PORT )
 propertyUpdated( 32 , PORT , SOURCE_BLOCK ) : SUCCESS
 propertyUpdated( 32 , PORT , PORT_KIND ) : SUCCESS
+propertyUpdated( 29 , BLOCK , OUTPUTS ) : SUCCESS
 objectCreated( 33 , PORT )
 propertyUpdated( 33 , PORT , SOURCE_BLOCK ) : SUCCESS
 propertyUpdated( 33 , PORT , PORT_KIND ) : SUCCESS
-propertyUpdated( 31 , BLOCK , INPUTS ) : SUCCESS
-objectCreated( 34 , PORT )
-propertyUpdated( 34 , PORT , SOURCE_BLOCK ) : SUCCESS
-propertyUpdated( 34 , PORT , PORT_KIND ) : SUCCESS
-propertyUpdated( 31 , BLOCK , OUTPUTS ) : SUCCESS
-objectCreated( 35 , PORT )
-propertyUpdated( 35 , PORT , SOURCE_BLOCK ) : SUCCESS
-propertyUpdated( 35 , PORT , PORT_KIND ) : SUCCESS
-propertyUpdated( 31 , BLOCK , EVENT_INPUTS ) : SUCCESS
-propertyUpdated( 31 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , EVENT_INPUTS ) : SUCCESS
+propertyUpdated( 29 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 30 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 31 , PORT , IMPLICIT ) : NO_CHANGES
 propertyUpdated( 32 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 33 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 34 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 30 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 31 , PORT , STYLE ) : NO_CHANGES
 propertyUpdated( 32 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 33 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 34 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 30 , PORT , LABEL ) : NO_CHANGES
+propertyUpdated( 31 , PORT , LABEL ) : NO_CHANGES
 propertyUpdated( 32 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 33 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 34 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , STYLE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
-propertyUpdated( 31 , BLOCK , SIM_FUNCTION_API ) : SUCCESS
-propertyUpdated( 33 , PORT , DATATYPE ) : SUCCESS
+propertyUpdated( 29 , BLOCK , STYLE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
+propertyUpdated( 29 , BLOCK , SIM_FUNCTION_API ) : SUCCESS
+propertyUpdated( 30 , PORT , DATATYPE ) : SUCCESS
+propertyUpdated( 31 , PORT , DATATYPE ) : SUCCESS
+propertyUpdated( 30 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 31 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 30 , PORT , DATATYPE ) : SUCCESS
+propertyUpdated( 31 , PORT , DATATYPE ) : SUCCESS
 propertyUpdated( 32 , PORT , DATATYPE ) : SUCCESS
 propertyUpdated( 32 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 33 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 32 , PORT , DATATYPE ) : SUCCESS
 propertyUpdated( 33 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 34 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 34 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 34 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 35 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 31 , BLOCK , STATE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , DSTATE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , ODSTATE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , RPAR ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , IPAR ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , OPAR ) : SUCCESS
-propertyUpdated( 31 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , SIM_DEP_UT ) : SUCCESS
-propertyUpdated( 31 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , UID ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
-propertyUpdated( 28 , BLOCK , INPUTS ) : SUCCESS
-propertyUpdated( 28 , BLOCK , OUTPUTS ) : NO_CHANGES
-propertyUpdated( 28 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
-propertyUpdated( 28 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
-objectDeleted( 29 , PORT )
-propertyUpdated( 28 , BLOCK , INPUTS ) : NO_CHANGES
-propertyUpdated( 28 , BLOCK , OUTPUTS ) : NO_CHANGES
-propertyUpdated( 28 , BLOCK , EVENT_INPUTS ) : SUCCESS
-propertyUpdated( 28 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
-objectDeleted( 30 , PORT )
-objectDeleted( 28 , BLOCK )
+propertyUpdated( 29 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , ODSTATE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , RPAR ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , OPAR ) : SUCCESS
+propertyUpdated( 29 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , SIM_DEP_UT ) : SUCCESS
+propertyUpdated( 29 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
+propertyUpdated( 26 , BLOCK , INPUTS ) : SUCCESS
+propertyUpdated( 26 , BLOCK , OUTPUTS ) : NO_CHANGES
+propertyUpdated( 26 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
+propertyUpdated( 26 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+objectDeleted( 27 , PORT )
+propertyUpdated( 26 , BLOCK , INPUTS ) : NO_CHANGES
+propertyUpdated( 26 , BLOCK , OUTPUTS ) : NO_CHANGES
+propertyUpdated( 26 , BLOCK , EVENT_INPUTS ) : SUCCESS
+propertyUpdated( 26 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+objectDeleted( 28 , PORT )
+objectDeleted( 26 , BLOCK )
 o  = 
 GUI     : LOGIC
 Graphics: 
@@ -1439,400 +1433,400 @@ o.model.opar
 assert_checkequal(typeof(o.model.opar(1)), "int8");
 listRef = list([1 2 3; 4 5 6], ["Hello" "world!"; "Test" "123"], [%i 2 3*%i; 4 5*%i 6], uint32([32 32; 32 32]));
 o.model.opar = listRef;
-propertyUpdated( 31 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
-propertyUpdated( 33 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
+propertyUpdated( 30 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 31 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 30 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 31 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 30 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 31 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 32 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 32 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 33 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 32 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 33 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 34 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 34 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 34 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 35 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , STATE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , DSTATE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , ODSTATE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , RPAR ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , IPAR ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , OPAR ) : SUCCESS
-propertyUpdated( 31 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , ODSTATE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , RPAR ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , OPAR ) : SUCCESS
+propertyUpdated( 29 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , UID ) : NO_CHANGES
 assert_checkequal(o.model.opar, listRef);
 o.model.odstate = listRef;
-propertyUpdated( 31 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
-propertyUpdated( 33 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
+propertyUpdated( 30 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 31 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 30 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 31 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 30 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 31 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 32 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 32 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 33 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 32 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 33 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 34 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 34 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 34 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 35 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , STATE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , DSTATE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , ODSTATE ) : SUCCESS
-propertyUpdated( 31 , BLOCK , RPAR ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , IPAR ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , OPAR ) : SUCCESS
-propertyUpdated( 31 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , ODSTATE ) : SUCCESS
+propertyUpdated( 29 , BLOCK , RPAR ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , OPAR ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , UID ) : NO_CHANGES
 assert_checkequal(o.model.odstate, listRef);
 // With hypermatrices
 // Double
 testHM = hypermat([2 2 2], 1:8);
 listRef = list([], testHM, []);
 o.model.opar = listRef;
-propertyUpdated( 31 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
-propertyUpdated( 33 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
+propertyUpdated( 30 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 31 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 30 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 31 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 30 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 31 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 32 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 32 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 33 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 32 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 33 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 34 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 34 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 34 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 35 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , STATE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , DSTATE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , ODSTATE ) : SUCCESS
-propertyUpdated( 31 , BLOCK , RPAR ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , IPAR ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , OPAR ) : SUCCESS
-propertyUpdated( 31 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , ODSTATE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , RPAR ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , OPAR ) : SUCCESS
+propertyUpdated( 29 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , UID ) : NO_CHANGES
 assert_checkequal(o.model.opar, listRef);
 // int8
 listRef = list([], int8(testHM), []);
 o.model.opar = listRef;
-propertyUpdated( 31 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
-propertyUpdated( 33 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
+propertyUpdated( 30 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 31 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 30 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 31 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 30 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 31 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 32 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 32 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 33 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 32 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 33 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 34 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 34 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 34 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 35 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , STATE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , DSTATE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , ODSTATE ) : SUCCESS
-propertyUpdated( 31 , BLOCK , RPAR ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , IPAR ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , OPAR ) : SUCCESS
-propertyUpdated( 31 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , ODSTATE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , RPAR ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , OPAR ) : SUCCESS
+propertyUpdated( 29 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , UID ) : NO_CHANGES
 assert_checkequal(o.model.opar, listRef);
 // int16
 listRef = list([], int16(testHM), []);
 o.model.opar = listRef;
-propertyUpdated( 31 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
-propertyUpdated( 33 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
+propertyUpdated( 30 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 31 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 30 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 31 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 30 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 31 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 32 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 32 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 33 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 32 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 33 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 34 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 34 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 34 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 35 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , STATE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , DSTATE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , ODSTATE ) : SUCCESS
-propertyUpdated( 31 , BLOCK , RPAR ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , IPAR ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , OPAR ) : SUCCESS
-propertyUpdated( 31 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , ODSTATE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , RPAR ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , OPAR ) : SUCCESS
+propertyUpdated( 29 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , UID ) : NO_CHANGES
 assert_checkequal(o.model.opar, listRef);
 // int32
 listRef = list([], int32(testHM), []);
 o.model.opar = listRef;
-propertyUpdated( 31 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
-propertyUpdated( 33 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
+propertyUpdated( 30 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 31 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 30 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 31 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 30 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 31 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 32 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 32 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 33 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 32 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 33 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 34 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 34 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 34 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 35 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , STATE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , DSTATE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , ODSTATE ) : SUCCESS
-propertyUpdated( 31 , BLOCK , RPAR ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , IPAR ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , OPAR ) : SUCCESS
-propertyUpdated( 31 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , ODSTATE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , RPAR ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , OPAR ) : SUCCESS
+propertyUpdated( 29 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , UID ) : NO_CHANGES
 assert_checkequal(o.model.opar, listRef);
 // uint8
 listRef = list([], uint8(testHM), []);
 o.model.opar = listRef;
-propertyUpdated( 31 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
-propertyUpdated( 33 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
+propertyUpdated( 30 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 31 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 30 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 31 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 30 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 31 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 32 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 32 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 33 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 32 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 33 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 34 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 34 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 34 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 35 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , STATE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , DSTATE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , ODSTATE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , RPAR ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , IPAR ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , OPAR ) : SUCCESS
-propertyUpdated( 31 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , ODSTATE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , RPAR ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , OPAR ) : SUCCESS
+propertyUpdated( 29 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , UID ) : NO_CHANGES
 assert_checkequal(o.model.opar, listRef);
 // uint16
 listRef = list([], uint16(testHM), []);
 o.model.opar = listRef;
-propertyUpdated( 31 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
-propertyUpdated( 33 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
+propertyUpdated( 30 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 31 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 30 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 31 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 30 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 31 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 32 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 32 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 33 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 32 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 33 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 34 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 34 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 34 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 35 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , STATE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , DSTATE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , ODSTATE ) : SUCCESS
-propertyUpdated( 31 , BLOCK , RPAR ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , IPAR ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , OPAR ) : SUCCESS
-propertyUpdated( 31 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , ODSTATE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , RPAR ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , OPAR ) : SUCCESS
+propertyUpdated( 29 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , UID ) : NO_CHANGES
 assert_checkequal(o.model.opar, listRef);
 // uint32
 listRef = list([], uint32(testHM), []);
 o.model.opar = listRef;
-propertyUpdated( 31 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
-propertyUpdated( 33 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
+propertyUpdated( 30 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 31 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 30 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 31 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 30 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 31 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 32 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 32 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 33 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 32 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 33 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 34 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 34 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 34 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 35 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , STATE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , DSTATE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , ODSTATE ) : SUCCESS
-propertyUpdated( 31 , BLOCK , RPAR ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , IPAR ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , OPAR ) : SUCCESS
-propertyUpdated( 31 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , ODSTATE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , RPAR ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , OPAR ) : SUCCESS
+propertyUpdated( 29 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , UID ) : NO_CHANGES
 assert_checkequal(o.model.opar, listRef);
 // String
 listRef = list([], string(testHM), []);
 o.model.opar = listRef;
-propertyUpdated( 31 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
-propertyUpdated( 33 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
+propertyUpdated( 30 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 31 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 30 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 31 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 30 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 31 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 32 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 32 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 33 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 32 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 33 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 34 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 34 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 34 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 35 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , STATE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , DSTATE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , ODSTATE ) : SUCCESS
-propertyUpdated( 31 , BLOCK , RPAR ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , IPAR ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , OPAR ) : SUCCESS
-propertyUpdated( 31 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , ODSTATE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , RPAR ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , OPAR ) : SUCCESS
+propertyUpdated( 29 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , UID ) : NO_CHANGES
 assert_checkequal(o.model.opar, listRef);
 // Bool
 listRef = list([], testHM > 3, []);
 o.model.opar = listRef;
-propertyUpdated( 31 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
-propertyUpdated( 33 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
+propertyUpdated( 30 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 31 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 30 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 31 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 30 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 31 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 32 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 32 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 33 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 32 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 33 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 34 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 34 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 34 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 35 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , STATE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , DSTATE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , ODSTATE ) : SUCCESS
-propertyUpdated( 31 , BLOCK , RPAR ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , IPAR ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , OPAR ) : SUCCESS
-propertyUpdated( 31 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , ODSTATE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , RPAR ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , OPAR ) : SUCCESS
+propertyUpdated( 29 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , UID ) : NO_CHANGES
 assert_checkequal(o.model.opar, listRef);
 // Test 'equations'
 o = VsourceAC("define")
-objectCreated( 36 , BLOCK )
-propertyUpdated( 36 , BLOCK , GEOMETRY ) : NO_CHANGES
-propertyUpdated( 36 , BLOCK , GEOMETRY ) : SUCCESS
-propertyUpdated( 36 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 36 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 36 , BLOCK , EXPRS ) : SUCCESS
-objectCreated( 37 , PORT )
-propertyUpdated( 37 , PORT , SOURCE_BLOCK ) : SUCCESS
-propertyUpdated( 37 , PORT , PORT_KIND ) : SUCCESS
-propertyUpdated( 36 , BLOCK , INPUTS ) : SUCCESS
-objectCreated( 38 , PORT )
-propertyUpdated( 38 , PORT , SOURCE_BLOCK ) : SUCCESS
-propertyUpdated( 38 , PORT , PORT_KIND ) : SUCCESS
-propertyUpdated( 36 , BLOCK , OUTPUTS ) : SUCCESS
-propertyUpdated( 36 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 37 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 38 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 37 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 38 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 37 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 38 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 36 , BLOCK , STYLE ) : NO_CHANGES
-propertyUpdated( 36 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
-propertyUpdated( 36 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
-propertyUpdated( 37 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 38 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 36 , BLOCK , STATE ) : NO_CHANGES
-propertyUpdated( 36 , BLOCK , DSTATE ) : NO_CHANGES
-propertyUpdated( 36 , BLOCK , ODSTATE ) : NO_CHANGES
-propertyUpdated( 36 , BLOCK , RPAR ) : SUCCESS
-propertyUpdated( 36 , BLOCK , IPAR ) : NO_CHANGES
-propertyUpdated( 36 , BLOCK , OPAR ) : NO_CHANGES
-propertyUpdated( 36 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 36 , BLOCK , SIM_DEP_UT ) : SUCCESS
-propertyUpdated( 36 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 36 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 36 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 36 , BLOCK , EQUATIONS ) : SUCCESS
-propertyUpdated( 36 , BLOCK , UID ) : NO_CHANGES
-propertyUpdated( 36 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
-propertyUpdated( 36 , BLOCK , GEOMETRY ) : NO_CHANGES
-propertyUpdated( 36 , BLOCK , GEOMETRY ) : NO_CHANGES
-propertyUpdated( 36 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 36 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 36 , BLOCK , EXPRS ) : NO_CHANGES
-propertyUpdated( 36 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 37 , PORT , IMPLICIT ) : SUCCESS
-propertyUpdated( 38 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 37 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 38 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 37 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 38 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 36 , BLOCK , STYLE ) : NO_CHANGES
-propertyUpdated( 36 , BLOCK , GEOMETRY ) : NO_CHANGES
-propertyUpdated( 36 , BLOCK , GEOMETRY ) : NO_CHANGES
-propertyUpdated( 36 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 36 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 36 , BLOCK , EXPRS ) : NO_CHANGES
-propertyUpdated( 36 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 37 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 38 , PORT , IMPLICIT ) : SUCCESS
-propertyUpdated( 37 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 38 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 37 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 38 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 36 , BLOCK , STYLE ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , INPUTS ) : SUCCESS
-propertyUpdated( 31 , BLOCK , OUTPUTS ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+objectCreated( 34 , BLOCK )
+propertyUpdated( 34 , BLOCK , GEOMETRY ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , GEOMETRY ) : SUCCESS
+propertyUpdated( 34 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , EXPRS ) : SUCCESS
+objectCreated( 35 , PORT )
+propertyUpdated( 35 , PORT , SOURCE_BLOCK ) : SUCCESS
+propertyUpdated( 35 , PORT , PORT_KIND ) : SUCCESS
+propertyUpdated( 34 , BLOCK , INPUTS ) : SUCCESS
+objectCreated( 36 , PORT )
+propertyUpdated( 36 , PORT , SOURCE_BLOCK ) : SUCCESS
+propertyUpdated( 36 , PORT , PORT_KIND ) : SUCCESS
+propertyUpdated( 34 , BLOCK , OUTPUTS ) : SUCCESS
+propertyUpdated( 34 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 35 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 36 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 35 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 36 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 35 , PORT , LABEL ) : NO_CHANGES
+propertyUpdated( 36 , PORT , LABEL ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , STYLE ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
+propertyUpdated( 34 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
+propertyUpdated( 35 , PORT , DATATYPE ) : SUCCESS
+propertyUpdated( 36 , PORT , DATATYPE ) : SUCCESS
+propertyUpdated( 34 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , ODSTATE ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , RPAR ) : SUCCESS
+propertyUpdated( 34 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , OPAR ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , SIM_DEP_UT ) : SUCCESS
+propertyUpdated( 34 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , EQUATIONS ) : SUCCESS
+propertyUpdated( 34 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
+propertyUpdated( 34 , BLOCK , GEOMETRY ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , GEOMETRY ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , EXPRS ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 35 , PORT , IMPLICIT ) : SUCCESS
+propertyUpdated( 36 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 35 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 36 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 35 , PORT , LABEL ) : NO_CHANGES
+propertyUpdated( 36 , PORT , LABEL ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , STYLE ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , GEOMETRY ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , GEOMETRY ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , EXPRS ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 35 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 36 , PORT , IMPLICIT ) : SUCCESS
+propertyUpdated( 35 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 36 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 35 , PORT , LABEL ) : NO_CHANGES
+propertyUpdated( 36 , PORT , LABEL ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , STYLE ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , INPUTS ) : SUCCESS
+propertyUpdated( 29 , BLOCK , OUTPUTS ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+objectDeleted( 30 , PORT )
+propertyUpdated( 29 , BLOCK , INPUTS ) : SUCCESS
+propertyUpdated( 29 , BLOCK , OUTPUTS ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+objectDeleted( 31 , PORT )
+propertyUpdated( 29 , BLOCK , INPUTS ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , OUTPUTS ) : SUCCESS
+propertyUpdated( 29 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
 objectDeleted( 32 , PORT )
-propertyUpdated( 31 , BLOCK , INPUTS ) : SUCCESS
-propertyUpdated( 31 , BLOCK , OUTPUTS ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , INPUTS ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , OUTPUTS ) : NO_CHANGES
+propertyUpdated( 29 , BLOCK , EVENT_INPUTS ) : SUCCESS
+propertyUpdated( 29 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
 objectDeleted( 33 , PORT )
-propertyUpdated( 31 , BLOCK , INPUTS ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , OUTPUTS ) : SUCCESS
-propertyUpdated( 31 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
-objectDeleted( 34 , PORT )
-propertyUpdated( 31 , BLOCK , INPUTS ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , OUTPUTS ) : NO_CHANGES
-propertyUpdated( 31 , BLOCK , EVENT_INPUTS ) : SUCCESS
-propertyUpdated( 31 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
-objectDeleted( 35 , PORT )
-objectDeleted( 31 , BLOCK )
+objectDeleted( 29 , BLOCK )
 o  = 
 GUI     : VsourceAC
 Graphics: 
@@ -1900,120 +1894,120 @@ o.model.equations
     50.
 listRef = modelica();
 o.model.equations = listRef;
-propertyUpdated( 36 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
-propertyUpdated( 36 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
-propertyUpdated( 37 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 37 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 37 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 38 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 38 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 38 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 36 , BLOCK , STATE ) : NO_CHANGES
-propertyUpdated( 36 , BLOCK , DSTATE ) : NO_CHANGES
-propertyUpdated( 36 , BLOCK , ODSTATE ) : NO_CHANGES
-propertyUpdated( 36 , BLOCK , RPAR ) : NO_CHANGES
-propertyUpdated( 36 , BLOCK , IPAR ) : NO_CHANGES
-propertyUpdated( 36 , BLOCK , OPAR ) : NO_CHANGES
-propertyUpdated( 36 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 36 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
-propertyUpdated( 36 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 36 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 36 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 36 , BLOCK , EQUATIONS ) : SUCCESS
-propertyUpdated( 36 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
+propertyUpdated( 35 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 35 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 35 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 36 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 36 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 36 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , ODSTATE ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , RPAR ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , OPAR ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , EQUATIONS ) : SUCCESS
+propertyUpdated( 34 , BLOCK , UID ) : NO_CHANGES
 assert_checkequal(o.model.equations, listRef);
 // Test 'exprs' with Modelica Block
 o = MBLOCK("define")
-objectCreated( 39 , BLOCK )
-propertyUpdated( 39 , BLOCK , GEOMETRY ) : NO_CHANGES
-propertyUpdated( 39 , BLOCK , GEOMETRY ) : SUCCESS
-propertyUpdated( 39 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 39 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 39 , BLOCK , EXPRS ) : SUCCESS
+objectCreated( 37 , BLOCK )
+propertyUpdated( 37 , BLOCK , GEOMETRY ) : NO_CHANGES
+propertyUpdated( 37 , BLOCK , GEOMETRY ) : SUCCESS
+propertyUpdated( 37 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 37 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 37 , BLOCK , EXPRS ) : SUCCESS
+objectCreated( 38 , PORT )
+propertyUpdated( 38 , PORT , SOURCE_BLOCK ) : SUCCESS
+propertyUpdated( 38 , PORT , PORT_KIND ) : SUCCESS
+propertyUpdated( 37 , BLOCK , INPUTS ) : SUCCESS
+objectCreated( 39 , PORT )
+propertyUpdated( 39 , PORT , SOURCE_BLOCK ) : SUCCESS
+propertyUpdated( 39 , PORT , PORT_KIND ) : SUCCESS
 objectCreated( 40 , PORT )
 propertyUpdated( 40 , PORT , SOURCE_BLOCK ) : SUCCESS
 propertyUpdated( 40 , PORT , PORT_KIND ) : SUCCESS
-propertyUpdated( 39 , BLOCK , INPUTS ) : SUCCESS
-objectCreated( 41 , PORT )
-propertyUpdated( 41 , PORT , SOURCE_BLOCK ) : SUCCESS
-propertyUpdated( 41 , PORT , PORT_KIND ) : SUCCESS
-objectCreated( 42 , PORT )
-propertyUpdated( 42 , PORT , SOURCE_BLOCK ) : SUCCESS
-propertyUpdated( 42 , PORT , PORT_KIND ) : SUCCESS
-propertyUpdated( 39 , BLOCK , OUTPUTS ) : SUCCESS
-propertyUpdated( 39 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 37 , BLOCK , OUTPUTS ) : SUCCESS
+propertyUpdated( 37 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 38 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 39 , PORT , IMPLICIT ) : NO_CHANGES
 propertyUpdated( 40 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 41 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 42 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 38 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 39 , PORT , STYLE ) : NO_CHANGES
 propertyUpdated( 40 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 41 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 42 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 38 , PORT , LABEL ) : NO_CHANGES
+propertyUpdated( 39 , PORT , LABEL ) : NO_CHANGES
 propertyUpdated( 40 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 41 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 42 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 39 , BLOCK , STYLE ) : NO_CHANGES
-propertyUpdated( 39 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
-propertyUpdated( 39 , BLOCK , SIM_FUNCTION_API ) : SUCCESS
+propertyUpdated( 37 , BLOCK , STYLE ) : NO_CHANGES
+propertyUpdated( 37 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
+propertyUpdated( 37 , BLOCK , SIM_FUNCTION_API ) : SUCCESS
+propertyUpdated( 38 , PORT , DATATYPE ) : SUCCESS
+propertyUpdated( 39 , PORT , DATATYPE ) : SUCCESS
 propertyUpdated( 40 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 42 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 41 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 39 , BLOCK , STATE ) : NO_CHANGES
-propertyUpdated( 39 , BLOCK , DSTATE ) : NO_CHANGES
-propertyUpdated( 39 , BLOCK , ODSTATE ) : NO_CHANGES
-propertyUpdated( 39 , BLOCK , RPAR ) : SUCCESS
-propertyUpdated( 39 , BLOCK , IPAR ) : NO_CHANGES
-propertyUpdated( 39 , BLOCK , OPAR ) : NO_CHANGES
-propertyUpdated( 39 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 39 , BLOCK , SIM_DEP_UT ) : SUCCESS
-propertyUpdated( 39 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 39 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 39 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 39 , BLOCK , EQUATIONS ) : SUCCESS
-propertyUpdated( 39 , BLOCK , UID ) : NO_CHANGES
-propertyUpdated( 39 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
-propertyUpdated( 39 , BLOCK , GEOMETRY ) : NO_CHANGES
-propertyUpdated( 39 , BLOCK , GEOMETRY ) : NO_CHANGES
-propertyUpdated( 39 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 39 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 39 , BLOCK , EXPRS ) : NO_CHANGES
-propertyUpdated( 39 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 40 , PORT , IMPLICIT ) : SUCCESS
-propertyUpdated( 41 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 42 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 37 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 37 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 37 , BLOCK , ODSTATE ) : NO_CHANGES
+propertyUpdated( 37 , BLOCK , RPAR ) : SUCCESS
+propertyUpdated( 37 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 37 , BLOCK , OPAR ) : NO_CHANGES
+propertyUpdated( 37 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 37 , BLOCK , SIM_DEP_UT ) : SUCCESS
+propertyUpdated( 37 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 37 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 37 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 37 , BLOCK , EQUATIONS ) : SUCCESS
+propertyUpdated( 37 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 37 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
+propertyUpdated( 37 , BLOCK , GEOMETRY ) : NO_CHANGES
+propertyUpdated( 37 , BLOCK , GEOMETRY ) : NO_CHANGES
+propertyUpdated( 37 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 37 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 37 , BLOCK , EXPRS ) : NO_CHANGES
+propertyUpdated( 37 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 38 , PORT , IMPLICIT ) : SUCCESS
+propertyUpdated( 39 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 40 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 38 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 39 , PORT , STYLE ) : NO_CHANGES
 propertyUpdated( 40 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 41 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 42 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 38 , PORT , LABEL ) : NO_CHANGES
+propertyUpdated( 39 , PORT , LABEL ) : NO_CHANGES
 propertyUpdated( 40 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 41 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 42 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 39 , BLOCK , STYLE ) : NO_CHANGES
-propertyUpdated( 39 , BLOCK , GEOMETRY ) : NO_CHANGES
-propertyUpdated( 39 , BLOCK , GEOMETRY ) : NO_CHANGES
-propertyUpdated( 39 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 39 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 39 , BLOCK , EXPRS ) : NO_CHANGES
-propertyUpdated( 39 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 37 , BLOCK , STYLE ) : NO_CHANGES
+propertyUpdated( 37 , BLOCK , GEOMETRY ) : NO_CHANGES
+propertyUpdated( 37 , BLOCK , GEOMETRY ) : NO_CHANGES
+propertyUpdated( 37 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 37 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 37 , BLOCK , EXPRS ) : NO_CHANGES
+propertyUpdated( 37 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 38 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 39 , PORT , IMPLICIT ) : SUCCESS
 propertyUpdated( 40 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 41 , PORT , IMPLICIT ) : SUCCESS
-propertyUpdated( 42 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 38 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 39 , PORT , STYLE ) : NO_CHANGES
 propertyUpdated( 40 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 41 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 42 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 38 , PORT , LABEL ) : NO_CHANGES
+propertyUpdated( 39 , PORT , LABEL ) : NO_CHANGES
 propertyUpdated( 40 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 41 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 42 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 39 , BLOCK , STYLE ) : NO_CHANGES
-propertyUpdated( 36 , BLOCK , INPUTS ) : SUCCESS
-propertyUpdated( 36 , BLOCK , OUTPUTS ) : NO_CHANGES
-propertyUpdated( 36 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
-propertyUpdated( 36 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
-objectDeleted( 37 , PORT )
-propertyUpdated( 36 , BLOCK , INPUTS ) : NO_CHANGES
-propertyUpdated( 36 , BLOCK , OUTPUTS ) : SUCCESS
-propertyUpdated( 36 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
-propertyUpdated( 36 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
-objectDeleted( 38 , PORT )
-objectDeleted( 36 , BLOCK )
+propertyUpdated( 37 , BLOCK , STYLE ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , INPUTS ) : SUCCESS
+propertyUpdated( 34 , BLOCK , OUTPUTS ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+objectDeleted( 35 , PORT )
+propertyUpdated( 34 , BLOCK , INPUTS ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , OUTPUTS ) : SUCCESS
+propertyUpdated( 34 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+objectDeleted( 36 , PORT )
+objectDeleted( 34 , BLOCK )
 o  = 
 GUI     : MBLOCK
 Graphics: 
@@ -2130,16 +2124,102 @@ o.model.equations
 // SuperBlock with no parameter
 lS = list([],list([],"Configuration des Paramètres du bloc",list([])));
 o = scicos_block(gui="SUPER", graphics=scicos_graphics(exprs=lS));
+objectCreated( 41 , BLOCK )
+propertyUpdated( 41 , BLOCK , GEOMETRY ) : NO_CHANGES
+propertyUpdated( 41 , BLOCK , GEOMETRY ) : NO_CHANGES
+propertyUpdated( 41 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 41 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 41 , BLOCK , EXPRS ) : SUCCESS
+propertyUpdated( 41 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 41 , BLOCK , STYLE ) : NO_CHANGES
+propertyUpdated( 41 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
+propertyUpdated( 41 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
+propertyUpdated( 41 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 41 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 41 , BLOCK , ODSTATE ) : NO_CHANGES
+propertyUpdated( 41 , BLOCK , RPAR ) : NO_CHANGES
+propertyUpdated( 41 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 41 , BLOCK , OPAR ) : NO_CHANGES
+propertyUpdated( 41 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 41 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
+propertyUpdated( 41 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 41 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 41 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 41 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 41 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
+propertyUpdated( 37 , BLOCK , INPUTS ) : SUCCESS
+propertyUpdated( 37 , BLOCK , OUTPUTS ) : NO_CHANGES
+propertyUpdated( 37 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
+propertyUpdated( 37 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+objectDeleted( 38 , PORT )
+propertyUpdated( 37 , BLOCK , INPUTS ) : NO_CHANGES
+propertyUpdated( 37 , BLOCK , OUTPUTS ) : SUCCESS
+propertyUpdated( 37 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
+propertyUpdated( 37 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+objectDeleted( 39 , PORT )
+propertyUpdated( 37 , BLOCK , INPUTS ) : NO_CHANGES
+propertyUpdated( 37 , BLOCK , OUTPUTS ) : SUCCESS
+propertyUpdated( 37 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
+propertyUpdated( 37 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+objectDeleted( 40 , PORT )
+objectDeleted( 37 , BLOCK )
+assert_checkequal(o.graphics.exprs, lS);
+// Masked SuperBlock with one parameter
+lDS = list("3",list("J",["Configuration des Paramètres du bloc"; "mon_param"],list("pol", -1)));
+o = scicos_block(gui="DSUPER", graphics=scicos_graphics(exprs=lDS));
+objectCreated( 42 , BLOCK )
+propertyUpdated( 42 , BLOCK , GEOMETRY ) : NO_CHANGES
+propertyUpdated( 42 , BLOCK , GEOMETRY ) : NO_CHANGES
+propertyUpdated( 42 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 42 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 42 , BLOCK , EXPRS ) : SUCCESS
+propertyUpdated( 42 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 42 , BLOCK , STYLE ) : NO_CHANGES
+propertyUpdated( 42 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
+propertyUpdated( 42 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
+propertyUpdated( 42 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 42 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 42 , BLOCK , ODSTATE ) : NO_CHANGES
+propertyUpdated( 42 , BLOCK , RPAR ) : NO_CHANGES
+propertyUpdated( 42 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 42 , BLOCK , OPAR ) : NO_CHANGES
+propertyUpdated( 42 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 42 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
+propertyUpdated( 42 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 42 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 42 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 42 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 42 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
+objectDeleted( 41 , BLOCK )
+assert_checkequal(o.graphics.exprs, lDS);
+// CBLOCK, default has empty function body
+o = CBLOCK("define");
 objectCreated( 43 , BLOCK )
 propertyUpdated( 43 , BLOCK , GEOMETRY ) : NO_CHANGES
-propertyUpdated( 43 , BLOCK , GEOMETRY ) : NO_CHANGES
+propertyUpdated( 43 , BLOCK , GEOMETRY ) : SUCCESS
 propertyUpdated( 43 , BLOCK , ANGLE ) : NO_CHANGES
 propertyUpdated( 43 , BLOCK , ANGLE ) : NO_CHANGES
 propertyUpdated( 43 , BLOCK , EXPRS ) : SUCCESS
+objectCreated( 44 , PORT )
+propertyUpdated( 44 , PORT , SOURCE_BLOCK ) : SUCCESS
+propertyUpdated( 44 , PORT , PORT_KIND ) : SUCCESS
+propertyUpdated( 43 , BLOCK , INPUTS ) : SUCCESS
+objectCreated( 45 , PORT )
+propertyUpdated( 45 , PORT , SOURCE_BLOCK ) : SUCCESS
+propertyUpdated( 45 , PORT , PORT_KIND ) : SUCCESS
+propertyUpdated( 43 , BLOCK , OUTPUTS ) : SUCCESS
 propertyUpdated( 43 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 44 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 45 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 44 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 45 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 44 , PORT , LABEL ) : NO_CHANGES
+propertyUpdated( 45 , PORT , LABEL ) : NO_CHANGES
 propertyUpdated( 43 , BLOCK , STYLE ) : NO_CHANGES
-propertyUpdated( 43 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
-propertyUpdated( 43 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
+propertyUpdated( 43 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
+propertyUpdated( 43 , BLOCK , SIM_FUNCTION_API ) : SUCCESS
+propertyUpdated( 44 , PORT , DATATYPE ) : SUCCESS
+propertyUpdated( 45 , PORT , DATATYPE ) : SUCCESS
 propertyUpdated( 43 , BLOCK , STATE ) : NO_CHANGES
 propertyUpdated( 43 , BLOCK , DSTATE ) : NO_CHANGES
 propertyUpdated( 43 , BLOCK , ODSTATE ) : NO_CHANGES
@@ -2147,238 +2227,158 @@ propertyUpdated( 43 , BLOCK , RPAR ) : NO_CHANGES
 propertyUpdated( 43 , BLOCK , IPAR ) : NO_CHANGES
 propertyUpdated( 43 , BLOCK , OPAR ) : NO_CHANGES
 propertyUpdated( 43 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 43 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
+propertyUpdated( 43 , BLOCK , SIM_DEP_UT ) : SUCCESS
 propertyUpdated( 43 , BLOCK , LABEL ) : NO_CHANGES
 propertyUpdated( 43 , BLOCK , NZCROSS ) : NO_CHANGES
 propertyUpdated( 43 , BLOCK , NMODE ) : NO_CHANGES
 propertyUpdated( 43 , BLOCK , UID ) : NO_CHANGES
 propertyUpdated( 43 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
-propertyUpdated( 39 , BLOCK , INPUTS ) : SUCCESS
-propertyUpdated( 39 , BLOCK , OUTPUTS ) : NO_CHANGES
-propertyUpdated( 39 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
-propertyUpdated( 39 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
-objectDeleted( 40 , PORT )
-propertyUpdated( 39 , BLOCK , INPUTS ) : NO_CHANGES
-propertyUpdated( 39 , BLOCK , OUTPUTS ) : SUCCESS
-propertyUpdated( 39 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
-propertyUpdated( 39 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
-objectDeleted( 41 , PORT )
-propertyUpdated( 39 , BLOCK , INPUTS ) : NO_CHANGES
-propertyUpdated( 39 , BLOCK , OUTPUTS ) : SUCCESS
-propertyUpdated( 39 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
-propertyUpdated( 39 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
-objectDeleted( 42 , PORT )
-objectDeleted( 39 , BLOCK )
-assert_checkequal(o.graphics.exprs, lS);
-// Masked SuperBlock with one parameter
-lDS = list("3",list("J",["Configuration des Paramètres du bloc"; "mon_param"],list("pol", -1)));
-o = scicos_block(gui="DSUPER", graphics=scicos_graphics(exprs=lDS));
-objectCreated( 44 , BLOCK )
-propertyUpdated( 44 , BLOCK , GEOMETRY ) : NO_CHANGES
-propertyUpdated( 44 , BLOCK , GEOMETRY ) : NO_CHANGES
-propertyUpdated( 44 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 44 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 44 , BLOCK , EXPRS ) : SUCCESS
-propertyUpdated( 44 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 44 , BLOCK , STYLE ) : NO_CHANGES
-propertyUpdated( 44 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
-propertyUpdated( 44 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
-propertyUpdated( 44 , BLOCK , STATE ) : NO_CHANGES
-propertyUpdated( 44 , BLOCK , DSTATE ) : NO_CHANGES
-propertyUpdated( 44 , BLOCK , ODSTATE ) : NO_CHANGES
-propertyUpdated( 44 , BLOCK , RPAR ) : NO_CHANGES
-propertyUpdated( 44 , BLOCK , IPAR ) : NO_CHANGES
-propertyUpdated( 44 , BLOCK , OPAR ) : NO_CHANGES
-propertyUpdated( 44 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 44 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
-propertyUpdated( 44 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 44 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 44 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 44 , BLOCK , UID ) : NO_CHANGES
-propertyUpdated( 44 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
-objectDeleted( 43 , BLOCK )
-assert_checkequal(o.graphics.exprs, lDS);
-// CBLOCK, default has empty function body
-o = CBLOCK("define");
-objectCreated( 45 , BLOCK )
-propertyUpdated( 45 , BLOCK , GEOMETRY ) : NO_CHANGES
-propertyUpdated( 45 , BLOCK , GEOMETRY ) : SUCCESS
-propertyUpdated( 45 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 45 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 45 , BLOCK , EXPRS ) : SUCCESS
-objectCreated( 46 , PORT )
-propertyUpdated( 46 , PORT , SOURCE_BLOCK ) : SUCCESS
-propertyUpdated( 46 , PORT , PORT_KIND ) : SUCCESS
-propertyUpdated( 45 , BLOCK , INPUTS ) : SUCCESS
-objectCreated( 47 , PORT )
-propertyUpdated( 47 , PORT , SOURCE_BLOCK ) : SUCCESS
-propertyUpdated( 47 , PORT , PORT_KIND ) : SUCCESS
-propertyUpdated( 45 , BLOCK , OUTPUTS ) : SUCCESS
-propertyUpdated( 45 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 46 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 47 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 46 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 47 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 46 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 47 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 45 , BLOCK , STYLE ) : NO_CHANGES
-propertyUpdated( 45 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
-propertyUpdated( 45 , BLOCK , SIM_FUNCTION_API ) : SUCCESS
-propertyUpdated( 46 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 47 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 45 , BLOCK , STATE ) : NO_CHANGES
-propertyUpdated( 45 , BLOCK , DSTATE ) : NO_CHANGES
-propertyUpdated( 45 , BLOCK , ODSTATE ) : NO_CHANGES
-propertyUpdated( 45 , BLOCK , RPAR ) : NO_CHANGES
-propertyUpdated( 45 , BLOCK , IPAR ) : NO_CHANGES
-propertyUpdated( 45 , BLOCK , OPAR ) : NO_CHANGES
-propertyUpdated( 45 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 45 , BLOCK , SIM_DEP_UT ) : SUCCESS
-propertyUpdated( 45 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 45 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 45 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 45 , BLOCK , UID ) : NO_CHANGES
-propertyUpdated( 45 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
-objectDeleted( 44 , BLOCK )
+objectDeleted( 42 , BLOCK )
 lCB = list(["toto"; "n"; "1"; "1"; "[]"; "[]"; "[]"; "0"; "[]"; "[]"; "[]"; "[]"; "y"; "n"], []);
 assert_checkequal(o.graphics.exprs, lCB);
 // Add a function body
 lCB2 = list(["toto"; "n"; "1"; "1"; "[]"; "[]"; "[]"; "0"; "[]"; "[]"; "[]"; "[]"; "y"; "n"], ["Function body"]);
 o.graphics.exprs = lCB2;
-propertyUpdated( 45 , BLOCK , GEOMETRY ) : NO_CHANGES
-propertyUpdated( 45 , BLOCK , GEOMETRY ) : NO_CHANGES
-propertyUpdated( 45 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 45 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 45 , BLOCK , EXPRS ) : SUCCESS
-propertyUpdated( 45 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 46 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 47 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 46 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 47 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 46 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 47 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 45 , BLOCK , STYLE ) : NO_CHANGES
+propertyUpdated( 43 , BLOCK , GEOMETRY ) : NO_CHANGES
+propertyUpdated( 43 , BLOCK , GEOMETRY ) : NO_CHANGES
+propertyUpdated( 43 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 43 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 43 , BLOCK , EXPRS ) : SUCCESS
+propertyUpdated( 43 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 44 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 45 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 44 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 45 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 44 , PORT , LABEL ) : NO_CHANGES
+propertyUpdated( 45 , PORT , LABEL ) : NO_CHANGES
+propertyUpdated( 43 , BLOCK , STYLE ) : NO_CHANGES
 assert_checkequal(o.graphics.exprs, lCB2);
 // scifunc_block_m
 o = scifunc_block_m("define");
-objectCreated( 48 , BLOCK )
-propertyUpdated( 48 , BLOCK , GEOMETRY ) : NO_CHANGES
-propertyUpdated( 48 , BLOCK , GEOMETRY ) : SUCCESS
-propertyUpdated( 48 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 48 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 48 , BLOCK , EXPRS ) : SUCCESS
-objectCreated( 49 , PORT )
-propertyUpdated( 49 , PORT , SOURCE_BLOCK ) : SUCCESS
-propertyUpdated( 49 , PORT , PORT_KIND ) : SUCCESS
-propertyUpdated( 48 , BLOCK , INPUTS ) : SUCCESS
+objectCreated( 46 , BLOCK )
+propertyUpdated( 46 , BLOCK , GEOMETRY ) : NO_CHANGES
+propertyUpdated( 46 , BLOCK , GEOMETRY ) : SUCCESS
+propertyUpdated( 46 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 46 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 46 , BLOCK , EXPRS ) : SUCCESS
+objectCreated( 47 , PORT )
+propertyUpdated( 47 , PORT , SOURCE_BLOCK ) : SUCCESS
+propertyUpdated( 47 , PORT , PORT_KIND ) : SUCCESS
+propertyUpdated( 46 , BLOCK , INPUTS ) : SUCCESS
+objectCreated( 48 , PORT )
+propertyUpdated( 48 , PORT , SOURCE_BLOCK ) : SUCCESS
+propertyUpdated( 48 , PORT , PORT_KIND ) : SUCCESS
+propertyUpdated( 46 , BLOCK , OUTPUTS ) : SUCCESS
+propertyUpdated( 46 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 47 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 48 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 47 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 48 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 47 , PORT , LABEL ) : NO_CHANGES
+propertyUpdated( 48 , PORT , LABEL ) : NO_CHANGES
+propertyUpdated( 46 , BLOCK , STYLE ) : NO_CHANGES
+propertyUpdated( 46 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
+propertyUpdated( 46 , BLOCK , SIM_FUNCTION_API ) : SUCCESS
+propertyUpdated( 47 , PORT , DATATYPE ) : SUCCESS
+propertyUpdated( 47 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 47 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 48 , PORT , DATATYPE ) : SUCCESS
+propertyUpdated( 48 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 48 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 46 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 46 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 46 , BLOCK , ODSTATE ) : NO_CHANGES
+propertyUpdated( 46 , BLOCK , RPAR ) : NO_CHANGES
+propertyUpdated( 46 , BLOCK , IPAR ) : SUCCESS
+propertyUpdated( 46 , BLOCK , OPAR ) : NO_CHANGES
+propertyUpdated( 46 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 46 , BLOCK , SIM_DEP_UT ) : SUCCESS
+propertyUpdated( 46 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 46 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 46 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 46 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 46 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
+propertyUpdated( 43 , BLOCK , INPUTS ) : SUCCESS
+propertyUpdated( 43 , BLOCK , OUTPUTS ) : NO_CHANGES
+propertyUpdated( 43 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
+propertyUpdated( 43 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+objectDeleted( 44 , PORT )
+propertyUpdated( 43 , BLOCK , INPUTS ) : NO_CHANGES
+propertyUpdated( 43 , BLOCK , OUTPUTS ) : SUCCESS
+propertyUpdated( 43 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
+propertyUpdated( 43 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+objectDeleted( 45 , PORT )
+objectDeleted( 43 , BLOCK )
+lsci = list(["[1,1]";"[1,1]";"[]";"[]";"[]";"[]";"[]";"[]";"0"],list("y1=sin(u1)"," "," ","y1=sin(u1)"," "," "," "));
+assert_checkequal(o.graphics.exprs, lsci);
+// fortran_block
+o = fortran_block("define");
+objectCreated( 49 , BLOCK )
+propertyUpdated( 49 , BLOCK , GEOMETRY ) : NO_CHANGES
+propertyUpdated( 49 , BLOCK , GEOMETRY ) : SUCCESS
+propertyUpdated( 49 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 49 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 49 , BLOCK , EXPRS ) : SUCCESS
 objectCreated( 50 , PORT )
 propertyUpdated( 50 , PORT , SOURCE_BLOCK ) : SUCCESS
 propertyUpdated( 50 , PORT , PORT_KIND ) : SUCCESS
-propertyUpdated( 48 , BLOCK , OUTPUTS ) : SUCCESS
-propertyUpdated( 48 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 49 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 49 , BLOCK , INPUTS ) : SUCCESS
+objectCreated( 51 , PORT )
+propertyUpdated( 51 , PORT , SOURCE_BLOCK ) : SUCCESS
+propertyUpdated( 51 , PORT , PORT_KIND ) : SUCCESS
+propertyUpdated( 49 , BLOCK , OUTPUTS ) : SUCCESS
+propertyUpdated( 49 , BLOCK , LABEL ) : NO_CHANGES
 propertyUpdated( 50 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 49 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 51 , PORT , IMPLICIT ) : NO_CHANGES
 propertyUpdated( 50 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 49 , PORT , LABEL ) : NO_CHANGES
+propertyUpdated( 51 , PORT , STYLE ) : NO_CHANGES
 propertyUpdated( 50 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 48 , BLOCK , STYLE ) : NO_CHANGES
-propertyUpdated( 48 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
-propertyUpdated( 48 , BLOCK , SIM_FUNCTION_API ) : SUCCESS
-propertyUpdated( 49 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 49 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 49 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 51 , PORT , LABEL ) : NO_CHANGES
+propertyUpdated( 49 , BLOCK , STYLE ) : NO_CHANGES
+propertyUpdated( 49 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
+propertyUpdated( 49 , BLOCK , SIM_FUNCTION_API ) : SUCCESS
 propertyUpdated( 50 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 50 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 50 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 48 , BLOCK , STATE ) : NO_CHANGES
-propertyUpdated( 48 , BLOCK , DSTATE ) : NO_CHANGES
-propertyUpdated( 48 , BLOCK , ODSTATE ) : NO_CHANGES
-propertyUpdated( 48 , BLOCK , RPAR ) : NO_CHANGES
-propertyUpdated( 48 , BLOCK , IPAR ) : SUCCESS
-propertyUpdated( 48 , BLOCK , OPAR ) : NO_CHANGES
-propertyUpdated( 48 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 48 , BLOCK , SIM_DEP_UT ) : SUCCESS
-propertyUpdated( 48 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 48 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 48 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 48 , BLOCK , UID ) : NO_CHANGES
-propertyUpdated( 48 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
-propertyUpdated( 45 , BLOCK , INPUTS ) : SUCCESS
-propertyUpdated( 45 , BLOCK , OUTPUTS ) : NO_CHANGES
-propertyUpdated( 45 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
-propertyUpdated( 45 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
-objectDeleted( 46 , PORT )
-propertyUpdated( 45 , BLOCK , INPUTS ) : NO_CHANGES
-propertyUpdated( 45 , BLOCK , OUTPUTS ) : SUCCESS
-propertyUpdated( 45 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
-propertyUpdated( 45 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+propertyUpdated( 51 , PORT , DATATYPE ) : SUCCESS
+propertyUpdated( 49 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 49 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 49 , BLOCK , ODSTATE ) : NO_CHANGES
+propertyUpdated( 49 , BLOCK , RPAR ) : NO_CHANGES
+propertyUpdated( 49 , BLOCK , IPAR ) : SUCCESS
+propertyUpdated( 49 , BLOCK , OPAR ) : NO_CHANGES
+propertyUpdated( 49 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 49 , BLOCK , SIM_DEP_UT ) : SUCCESS
+propertyUpdated( 49 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 49 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 49 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 49 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 49 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
+propertyUpdated( 46 , BLOCK , INPUTS ) : SUCCESS
+propertyUpdated( 46 , BLOCK , OUTPUTS ) : NO_CHANGES
+propertyUpdated( 46 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
+propertyUpdated( 46 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
 objectDeleted( 47 , PORT )
-objectDeleted( 45 , BLOCK )
-lsci = list(["[1,1]";"[1,1]";"[]";"[]";"[]";"[]";"[]";"[]";"0"],list("y1=sin(u1)"," "," ","y1=sin(u1)"," "," "," "));
-assert_checkequal(o.graphics.exprs, lsci);
-// fortran_block
-o = fortran_block("define");
-objectCreated( 51 , BLOCK )
-propertyUpdated( 51 , BLOCK , GEOMETRY ) : NO_CHANGES
-propertyUpdated( 51 , BLOCK , GEOMETRY ) : SUCCESS
-propertyUpdated( 51 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 51 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 51 , BLOCK , EXPRS ) : SUCCESS
-objectCreated( 52 , PORT )
-propertyUpdated( 52 , PORT , SOURCE_BLOCK ) : SUCCESS
-propertyUpdated( 52 , PORT , PORT_KIND ) : SUCCESS
-propertyUpdated( 51 , BLOCK , INPUTS ) : SUCCESS
-objectCreated( 53 , PORT )
-propertyUpdated( 53 , PORT , SOURCE_BLOCK ) : SUCCESS
-propertyUpdated( 53 , PORT , PORT_KIND ) : SUCCESS
-propertyUpdated( 51 , BLOCK , OUTPUTS ) : SUCCESS
-propertyUpdated( 51 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 52 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 53 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 52 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 53 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 52 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 53 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 51 , BLOCK , STYLE ) : NO_CHANGES
-propertyUpdated( 51 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
-propertyUpdated( 51 , BLOCK , SIM_FUNCTION_API ) : SUCCESS
-propertyUpdated( 52 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 53 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 51 , BLOCK , STATE ) : NO_CHANGES
-propertyUpdated( 51 , BLOCK , DSTATE ) : NO_CHANGES
-propertyUpdated( 51 , BLOCK , ODSTATE ) : NO_CHANGES
-propertyUpdated( 51 , BLOCK , RPAR ) : NO_CHANGES
-propertyUpdated( 51 , BLOCK , IPAR ) : SUCCESS
-propertyUpdated( 51 , BLOCK , OPAR ) : NO_CHANGES
-propertyUpdated( 51 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 51 , BLOCK , SIM_DEP_UT ) : SUCCESS
-propertyUpdated( 51 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 51 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 51 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 51 , BLOCK , UID ) : NO_CHANGES
-propertyUpdated( 51 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
-propertyUpdated( 48 , BLOCK , INPUTS ) : SUCCESS
-propertyUpdated( 48 , BLOCK , OUTPUTS ) : NO_CHANGES
-propertyUpdated( 48 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
-propertyUpdated( 48 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
-objectDeleted( 49 , PORT )
-propertyUpdated( 48 , BLOCK , INPUTS ) : NO_CHANGES
-propertyUpdated( 48 , BLOCK , OUTPUTS ) : SUCCESS
-propertyUpdated( 48 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
-propertyUpdated( 48 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
-objectDeleted( 50 , PORT )
-objectDeleted( 48 , BLOCK )
+propertyUpdated( 46 , BLOCK , INPUTS ) : NO_CHANGES
+propertyUpdated( 46 , BLOCK , OUTPUTS ) : SUCCESS
+propertyUpdated( 46 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
+propertyUpdated( 46 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+objectDeleted( 48 , PORT )
+objectDeleted( 46 , BLOCK )
 lfort = list(["1";"1";"[]";"forty"],list([]));
 assert_checkequal(o.graphics.exprs, lfort);
 // Test a PDE block
 o = PDE("define");
-objectCreated( 54 , BLOCK )
-propertyUpdated( 54 , BLOCK , GEOMETRY ) : NO_CHANGES
-propertyUpdated( 54 , BLOCK , GEOMETRY ) : SUCCESS
-propertyUpdated( 54 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 54 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 54 , BLOCK , EXPRS ) : SUCCESS
+objectCreated( 52 , BLOCK )
+propertyUpdated( 52 , BLOCK , GEOMETRY ) : NO_CHANGES
+propertyUpdated( 52 , BLOCK , GEOMETRY ) : SUCCESS
+propertyUpdated( 52 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 52 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 52 , BLOCK , EXPRS ) : SUCCESS
+objectCreated( 53 , PORT )
+propertyUpdated( 53 , PORT , SOURCE_BLOCK ) : SUCCESS
+propertyUpdated( 53 , PORT , PORT_KIND ) : SUCCESS
+objectCreated( 54 , PORT )
+propertyUpdated( 54 , PORT , SOURCE_BLOCK ) : SUCCESS
+propertyUpdated( 54 , PORT , PORT_KIND ) : SUCCESS
 objectCreated( 55 , PORT )
 propertyUpdated( 55 , PORT , SOURCE_BLOCK ) : SUCCESS
 propertyUpdated( 55 , PORT , PORT_KIND ) : SUCCESS
@@ -2388,76 +2388,70 @@ propertyUpdated( 56 , PORT , PORT_KIND ) : SUCCESS
 objectCreated( 57 , PORT )
 propertyUpdated( 57 , PORT , SOURCE_BLOCK ) : SUCCESS
 propertyUpdated( 57 , PORT , PORT_KIND ) : SUCCESS
+propertyUpdated( 52 , BLOCK , INPUTS ) : SUCCESS
 objectCreated( 58 , PORT )
 propertyUpdated( 58 , PORT , SOURCE_BLOCK ) : SUCCESS
 propertyUpdated( 58 , PORT , PORT_KIND ) : SUCCESS
 objectCreated( 59 , PORT )
 propertyUpdated( 59 , PORT , SOURCE_BLOCK ) : SUCCESS
 propertyUpdated( 59 , PORT , PORT_KIND ) : SUCCESS
-propertyUpdated( 54 , BLOCK , INPUTS ) : SUCCESS
-objectCreated( 60 , PORT )
-propertyUpdated( 60 , PORT , SOURCE_BLOCK ) : SUCCESS
-propertyUpdated( 60 , PORT , PORT_KIND ) : SUCCESS
-objectCreated( 61 , PORT )
-propertyUpdated( 61 , PORT , SOURCE_BLOCK ) : SUCCESS
-propertyUpdated( 61 , PORT , PORT_KIND ) : SUCCESS
-propertyUpdated( 54 , BLOCK , OUTPUTS ) : SUCCESS
-propertyUpdated( 54 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 52 , BLOCK , OUTPUTS ) : SUCCESS
+propertyUpdated( 52 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 53 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 54 , PORT , IMPLICIT ) : NO_CHANGES
 propertyUpdated( 55 , PORT , IMPLICIT ) : NO_CHANGES
 propertyUpdated( 56 , PORT , IMPLICIT ) : NO_CHANGES
 propertyUpdated( 57 , PORT , IMPLICIT ) : NO_CHANGES
 propertyUpdated( 58 , PORT , IMPLICIT ) : NO_CHANGES
 propertyUpdated( 59 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 60 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 61 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 53 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 54 , PORT , STYLE ) : NO_CHANGES
 propertyUpdated( 55 , PORT , STYLE ) : NO_CHANGES
 propertyUpdated( 56 , PORT , STYLE ) : NO_CHANGES
 propertyUpdated( 57 , PORT , STYLE ) : NO_CHANGES
 propertyUpdated( 58 , PORT , STYLE ) : NO_CHANGES
 propertyUpdated( 59 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 60 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 61 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 53 , PORT , LABEL ) : NO_CHANGES
+propertyUpdated( 54 , PORT , LABEL ) : NO_CHANGES
 propertyUpdated( 55 , PORT , LABEL ) : NO_CHANGES
 propertyUpdated( 56 , PORT , LABEL ) : NO_CHANGES
 propertyUpdated( 57 , PORT , LABEL ) : NO_CHANGES
 propertyUpdated( 58 , PORT , LABEL ) : NO_CHANGES
 propertyUpdated( 59 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 60 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 61 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 54 , BLOCK , STYLE ) : NO_CHANGES
-propertyUpdated( 54 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
-propertyUpdated( 54 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
-propertyUpdated( 59 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 58 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 57 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 56 , PORT , DATATYPE ) : SUCCESS
+propertyUpdated( 52 , BLOCK , STYLE ) : NO_CHANGES
+propertyUpdated( 52 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
+propertyUpdated( 52 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
+propertyUpdated( 53 , PORT , DATATYPE ) : SUCCESS
+propertyUpdated( 54 , PORT , DATATYPE ) : SUCCESS
 propertyUpdated( 55 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 61 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 60 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 54 , BLOCK , STATE ) : SUCCESS
-propertyUpdated( 54 , BLOCK , DSTATE ) : NO_CHANGES
-propertyUpdated( 54 , BLOCK , ODSTATE ) : NO_CHANGES
-propertyUpdated( 54 , BLOCK , RPAR ) : NO_CHANGES
-propertyUpdated( 54 , BLOCK , IPAR ) : NO_CHANGES
-propertyUpdated( 54 , BLOCK , OPAR ) : NO_CHANGES
-propertyUpdated( 54 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 54 , BLOCK , SIM_DEP_UT ) : SUCCESS
-propertyUpdated( 54 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 54 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 54 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 54 , BLOCK , UID ) : NO_CHANGES
-propertyUpdated( 54 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
-propertyUpdated( 51 , BLOCK , INPUTS ) : SUCCESS
-propertyUpdated( 51 , BLOCK , OUTPUTS ) : NO_CHANGES
-propertyUpdated( 51 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
-propertyUpdated( 51 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
-objectDeleted( 52 , PORT )
-propertyUpdated( 51 , BLOCK , INPUTS ) : NO_CHANGES
-propertyUpdated( 51 , BLOCK , OUTPUTS ) : SUCCESS
-propertyUpdated( 51 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
-propertyUpdated( 51 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
-objectDeleted( 53 , PORT )
-objectDeleted( 51 , BLOCK )
+propertyUpdated( 56 , PORT , DATATYPE ) : SUCCESS
+propertyUpdated( 57 , PORT , DATATYPE ) : SUCCESS
+propertyUpdated( 58 , PORT , DATATYPE ) : SUCCESS
+propertyUpdated( 59 , PORT , DATATYPE ) : SUCCESS
+propertyUpdated( 52 , BLOCK , STATE ) : SUCCESS
+propertyUpdated( 52 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 52 , BLOCK , ODSTATE ) : NO_CHANGES
+propertyUpdated( 52 , BLOCK , RPAR ) : NO_CHANGES
+propertyUpdated( 52 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 52 , BLOCK , OPAR ) : NO_CHANGES
+propertyUpdated( 52 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 52 , BLOCK , SIM_DEP_UT ) : SUCCESS
+propertyUpdated( 52 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 52 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 52 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 52 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 52 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
+propertyUpdated( 49 , BLOCK , INPUTS ) : SUCCESS
+propertyUpdated( 49 , BLOCK , OUTPUTS ) : NO_CHANGES
+propertyUpdated( 49 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
+propertyUpdated( 49 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+objectDeleted( 50 , PORT )
+propertyUpdated( 49 , BLOCK , INPUTS ) : NO_CHANGES
+propertyUpdated( 49 , BLOCK , OUTPUTS ) : SUCCESS
+propertyUpdated( 49 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
+propertyUpdated( 49 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+objectDeleted( 51 , PORT )
+objectDeleted( 49 , BLOCK )
 o.graphics.exprs
  ans  =
              ans(1)
@@ -2641,161 +2635,161 @@ o.graphics.exprs
  
 // Test 'ipar', 'nzcross' and 'nmode' fields
 o = scicos_block();
-objectCreated( 62 , BLOCK )
-propertyUpdated( 62 , BLOCK , GEOMETRY ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , GEOMETRY ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , EXPRS ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , STYLE ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , STATE ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , DSTATE ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , ODSTATE ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , RPAR ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , IPAR ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , OPAR ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , UID ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , INTERFACE_FUNCTION ) : NO_CHANGES
-propertyUpdated( 54 , BLOCK , INPUTS ) : SUCCESS
-propertyUpdated( 54 , BLOCK , OUTPUTS ) : NO_CHANGES
-propertyUpdated( 54 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
-propertyUpdated( 54 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+objectCreated( 60 , BLOCK )
+propertyUpdated( 60 , BLOCK , GEOMETRY ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , GEOMETRY ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , EXPRS ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , STYLE ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , ODSTATE ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , RPAR ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , OPAR ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , INTERFACE_FUNCTION ) : NO_CHANGES
+propertyUpdated( 52 , BLOCK , INPUTS ) : SUCCESS
+propertyUpdated( 52 , BLOCK , OUTPUTS ) : NO_CHANGES
+propertyUpdated( 52 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
+propertyUpdated( 52 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+objectDeleted( 53 , PORT )
+propertyUpdated( 52 , BLOCK , INPUTS ) : SUCCESS
+propertyUpdated( 52 , BLOCK , OUTPUTS ) : NO_CHANGES
+propertyUpdated( 52 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
+propertyUpdated( 52 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+objectDeleted( 54 , PORT )
+propertyUpdated( 52 , BLOCK , INPUTS ) : SUCCESS
+propertyUpdated( 52 , BLOCK , OUTPUTS ) : NO_CHANGES
+propertyUpdated( 52 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
+propertyUpdated( 52 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
 objectDeleted( 55 , PORT )
-propertyUpdated( 54 , BLOCK , INPUTS ) : SUCCESS
-propertyUpdated( 54 , BLOCK , OUTPUTS ) : NO_CHANGES
-propertyUpdated( 54 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
-propertyUpdated( 54 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+propertyUpdated( 52 , BLOCK , INPUTS ) : SUCCESS
+propertyUpdated( 52 , BLOCK , OUTPUTS ) : NO_CHANGES
+propertyUpdated( 52 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
+propertyUpdated( 52 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
 objectDeleted( 56 , PORT )
-propertyUpdated( 54 , BLOCK , INPUTS ) : SUCCESS
-propertyUpdated( 54 , BLOCK , OUTPUTS ) : NO_CHANGES
-propertyUpdated( 54 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
-propertyUpdated( 54 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+propertyUpdated( 52 , BLOCK , INPUTS ) : SUCCESS
+propertyUpdated( 52 , BLOCK , OUTPUTS ) : NO_CHANGES
+propertyUpdated( 52 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
+propertyUpdated( 52 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
 objectDeleted( 57 , PORT )
-propertyUpdated( 54 , BLOCK , INPUTS ) : SUCCESS
-propertyUpdated( 54 , BLOCK , OUTPUTS ) : NO_CHANGES
-propertyUpdated( 54 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
-propertyUpdated( 54 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+propertyUpdated( 52 , BLOCK , INPUTS ) : NO_CHANGES
+propertyUpdated( 52 , BLOCK , OUTPUTS ) : SUCCESS
+propertyUpdated( 52 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
+propertyUpdated( 52 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
 objectDeleted( 58 , PORT )
-propertyUpdated( 54 , BLOCK , INPUTS ) : SUCCESS
-propertyUpdated( 54 , BLOCK , OUTPUTS ) : NO_CHANGES
-propertyUpdated( 54 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
-propertyUpdated( 54 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+propertyUpdated( 52 , BLOCK , INPUTS ) : NO_CHANGES
+propertyUpdated( 52 , BLOCK , OUTPUTS ) : SUCCESS
+propertyUpdated( 52 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
+propertyUpdated( 52 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
 objectDeleted( 59 , PORT )
-propertyUpdated( 54 , BLOCK , INPUTS ) : NO_CHANGES
-propertyUpdated( 54 , BLOCK , OUTPUTS ) : SUCCESS
-propertyUpdated( 54 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
-propertyUpdated( 54 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
-objectDeleted( 60 , PORT )
-propertyUpdated( 54 , BLOCK , INPUTS ) : NO_CHANGES
-propertyUpdated( 54 , BLOCK , OUTPUTS ) : SUCCESS
-propertyUpdated( 54 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
-propertyUpdated( 54 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
-objectDeleted( 61 , PORT )
-objectDeleted( 54 , BLOCK )
+objectDeleted( 52 , BLOCK )
 o.model.ipar = [];
-propertyUpdated( 62 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , STATE ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , DSTATE ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , ODSTATE ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , RPAR ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , IPAR ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , OPAR ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , ODSTATE ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , RPAR ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , OPAR ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , UID ) : NO_CHANGES
 assert_checkequal(o.model.ipar, []);
 o.model.nzcross = [];
-propertyUpdated( 62 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , STATE ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , DSTATE ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , ODSTATE ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , RPAR ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , IPAR ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , OPAR ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , NZCROSS ) : SUCCESS
-propertyUpdated( 62 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , ODSTATE ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , RPAR ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , OPAR ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , NZCROSS ) : SUCCESS
+propertyUpdated( 60 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , UID ) : NO_CHANGES
 assert_checkequal(o.model.nzcross, []);
 o.model.nmode = [];
-propertyUpdated( 62 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , STATE ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , DSTATE ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , ODSTATE ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , RPAR ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , IPAR ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , OPAR ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , NMODE ) : SUCCESS
-propertyUpdated( 62 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , ODSTATE ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , RPAR ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , OPAR ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , NMODE ) : SUCCESS
+propertyUpdated( 60 , BLOCK , UID ) : NO_CHANGES
 assert_checkequal(o.model.nmode, []);
 o.model.ipar = [1; 2; 3];
-propertyUpdated( 62 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , STATE ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , DSTATE ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , ODSTATE ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , RPAR ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , IPAR ) : SUCCESS
-propertyUpdated( 62 , BLOCK , OPAR ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , ODSTATE ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , RPAR ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , IPAR ) : SUCCESS
+propertyUpdated( 60 , BLOCK , OPAR ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , UID ) : NO_CHANGES
 assert_checkequal(o.model.ipar, [1; 2; 3]);
 o.model.nzcross = [1; 2; 3];
-propertyUpdated( 62 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , STATE ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , DSTATE ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , ODSTATE ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , RPAR ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , IPAR ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , OPAR ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , NZCROSS ) : SUCCESS
-propertyUpdated( 62 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , ODSTATE ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , RPAR ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , OPAR ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , NZCROSS ) : SUCCESS
+propertyUpdated( 60 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , UID ) : NO_CHANGES
 assert_checkequal(o.model.nzcross, [1; 2; 3]);
 o.model.nmode = [1; 2; 3];
-propertyUpdated( 62 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , STATE ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , DSTATE ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , ODSTATE ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , RPAR ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , IPAR ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , OPAR ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 62 , BLOCK , NMODE ) : SUCCESS
-propertyUpdated( 62 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , ODSTATE ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , RPAR ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , OPAR ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 60 , BLOCK , NMODE ) : SUCCESS
+propertyUpdated( 60 , BLOCK , UID ) : NO_CHANGES
 assert_checkequal(o.model.nmode, [1; 2; 3]);
 // Check that all the model items are freed
 clear
-objectDeleted( 62 , BLOCK )
+objectDeleted( 60 , BLOCK )
index 1001e15..c2f7968 100644 (file)
@@ -39,8 +39,8 @@ propertyUpdated( 4 , PORT , LABEL ) : NO_CHANGES
 propertyUpdated( 1 , BLOCK , STYLE ) : NO_CHANGES
 propertyUpdated( 1 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
 propertyUpdated( 1 , BLOCK , SIM_FUNCTION_API ) : SUCCESS
-propertyUpdated( 3 , PORT , DATATYPE ) : SUCCESS
 propertyUpdated( 2 , PORT , DATATYPE ) : SUCCESS
+propertyUpdated( 3 , PORT , DATATYPE ) : SUCCESS
 propertyUpdated( 4 , PORT , DATATYPE ) : SUCCESS
 propertyUpdated( 1 , BLOCK , STATE ) : NO_CHANGES
 propertyUpdated( 1 , BLOCK , DSTATE ) : NO_CHANGES
@@ -107,7 +107,7 @@ Model   :
 clear Sum
 // Sum2's refCount must have been affected by "clear Sum"
 Sum2
-Sum2  = 
+Sum2  = (2)
 GUI     : BIGSOM_f
 Graphics: 
           orig = [0,0]
index 6266f4f..296b2d5 100644 (file)
@@ -93,57 +93,20 @@ propertyUpdated( 4 , BLOCK , OUTPUTS ) : NO_CHANGES
 propertyUpdated( 4 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
 propertyUpdated( 4 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
 propertyUpdated( 4 , BLOCK , PARENT_BLOCK ) : NO_CHANGES
-propertyUpdated( 4 , BLOCK , CHILDREN ) : NO_CHANGES
-propertyUpdated( 4 , BLOCK , PARENT_DIAGRAM ) : SUCCESS
 propertyUpdated( 2 , DIAGRAM , CHILDREN ) : SUCCESS
+propertyUpdated( 4 , BLOCK , PARENT_DIAGRAM ) : SUCCESS
 super.model.rpar = d;
 propertyUpdated( 1 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
 propertyUpdated( 1 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
 propertyUpdated( 1 , BLOCK , STATE ) : NO_CHANGES
 propertyUpdated( 1 , BLOCK , DSTATE ) : NO_CHANGES
 propertyUpdated( 1 , BLOCK , ODSTATE ) : NO_CHANGES
-propertyUpdated( 1 , BLOCK , CHILDREN ) : SUCCESS
-propertyUpdated( 4 , BLOCK , PARENT_BLOCK ) : SUCCESS
-propertyUpdated( 1 , BLOCK , IPAR ) : NO_CHANGES
-propertyUpdated( 1 , BLOCK , OPAR ) : NO_CHANGES
-propertyUpdated( 1 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 1 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
-propertyUpdated( 1 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 1 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 1 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 1 , BLOCK , UID ) : NO_CHANGES
-// 'b' is a SuperBlock containing a Block
-sizeBeforeInsert = size(super.model.rpar.objs);
-super.model.rpar = d;
-propertyUpdated( 1 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
-propertyUpdated( 1 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
-propertyUpdated( 1 , BLOCK , STATE ) : NO_CHANGES
-propertyUpdated( 1 , BLOCK , DSTATE ) : NO_CHANGES
-propertyUpdated( 1 , BLOCK , ODSTATE ) : NO_CHANGES
-propertyUpdated( 1 , BLOCK , CHILDREN ) : NO_CHANGES
-propertyUpdated( 4 , BLOCK , PARENT_BLOCK ) : NO_CHANGES
-propertyUpdated( 1 , BLOCK , IPAR ) : NO_CHANGES
-propertyUpdated( 1 , BLOCK , OPAR ) : NO_CHANGES
-propertyUpdated( 1 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 1 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
-propertyUpdated( 1 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 1 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 1 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 1 , BLOCK , UID ) : NO_CHANGES
-sizeAfterInsert  = size(super.model.rpar.objs);
-assert_checkequal(sizeBeforeInsert, 1);
-assert_checkequal(sizeAfterInsert,  1);
-// Check consecutive initialization of a SuperBlock in a diagram
-superD = scicos_diagram();
 objectCreated( 5 , DIAGRAM )
 propertyUpdated( 5 , DIAGRAM , TITLE ) : NO_CHANGES
 propertyUpdated( 5 , DIAGRAM , PATH ) : NO_CHANGES
-propertyUpdated( 5 , DIAGRAM , PROPERTIES ) : NO_CHANGES
+propertyUpdated( 5 , DIAGRAM , VERSION_NUMBER ) : NO_CHANGES
 propertyUpdated( 5 , DIAGRAM , PROPERTIES ) : NO_CHANGES
 propertyUpdated( 5 , DIAGRAM , CONTEXT ) : NO_CHANGES
-propertyUpdated( 5 , DIAGRAM , CHILDREN ) : NO_CHANGES
-propertyUpdated( 5 , DIAGRAM , VERSION_NUMBER ) : NO_CHANGES
-superD.objs(1) = super;
 objectCreated( 6 , BLOCK )
 propertyUpdated( 6 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
 propertyUpdated( 6 , BLOCK , INTERFACE_FUNCTION ) : NO_CHANGES
@@ -171,6 +134,26 @@ propertyUpdated( 6 , BLOCK , OUTPUTS ) : NO_CHANGES
 propertyUpdated( 6 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
 propertyUpdated( 6 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
 propertyUpdated( 6 , BLOCK , PARENT_BLOCK ) : NO_CHANGES
+propertyUpdated( 5 , DIAGRAM , CHILDREN ) : SUCCESS
+propertyUpdated( 6 , BLOCK , PARENT_DIAGRAM ) : SUCCESS
+propertyUpdated( 1 , BLOCK , CHILDREN ) : SUCCESS
+propertyUpdated( 6 , BLOCK , PARENT_BLOCK ) : SUCCESS
+propertyUpdated( 1 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 1 , BLOCK , OPAR ) : NO_CHANGES
+propertyUpdated( 1 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 1 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
+propertyUpdated( 1 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 1 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 1 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 1 , BLOCK , UID ) : NO_CHANGES
+// 'b' is a SuperBlock containing a Block
+sizeBeforeInsert = size(super.model.rpar.objs);
+super.model.rpar = d;
+propertyUpdated( 1 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
+propertyUpdated( 1 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
+propertyUpdated( 1 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 1 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 1 , BLOCK , ODSTATE ) : NO_CHANGES
 objectCreated( 7 , DIAGRAM )
 propertyUpdated( 7 , DIAGRAM , TITLE ) : NO_CHANGES
 propertyUpdated( 7 , DIAGRAM , PATH ) : NO_CHANGES
@@ -198,98 +181,227 @@ propertyUpdated( 8 , BLOCK , NMODE ) : NO_CHANGES
 propertyUpdated( 8 , BLOCK , IPAR ) : NO_CHANGES
 propertyUpdated( 8 , BLOCK , EXPRS ) : NO_CHANGES
 propertyUpdated( 8 , BLOCK , EQUATIONS ) : NO_CHANGES
-propertyUpdated( 8 , BLOCK , PARENT_DIAGRAM ) : SUCCESS
+propertyUpdated( 8 , BLOCK , PARENT_DIAGRAM ) : NO_CHANGES
 propertyUpdated( 8 , BLOCK , INPUTS ) : NO_CHANGES
 propertyUpdated( 8 , BLOCK , OUTPUTS ) : NO_CHANGES
 propertyUpdated( 8 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
 propertyUpdated( 8 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
-propertyUpdated( 8 , BLOCK , PARENT_BLOCK ) : SUCCESS
-propertyUpdated( 8 , BLOCK , CHILDREN ) : NO_CHANGES
+propertyUpdated( 8 , BLOCK , PARENT_BLOCK ) : NO_CHANGES
 propertyUpdated( 7 , DIAGRAM , CHILDREN ) : SUCCESS
-propertyUpdated( 6 , BLOCK , CHILDREN ) : SUCCESS
-propertyUpdated( 6 , BLOCK , PARENT_DIAGRAM ) : SUCCESS
+propertyUpdated( 8 , BLOCK , PARENT_DIAGRAM ) : SUCCESS
+propertyUpdated( 1 , BLOCK , CHILDREN ) : SUCCESS
+propertyUpdated( 8 , BLOCK , PARENT_BLOCK ) : SUCCESS
+propertyUpdated( 6 , BLOCK , PARENT_BLOCK ) : SUCCESS
+propertyUpdated( 1 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 1 , BLOCK , OPAR ) : NO_CHANGES
+propertyUpdated( 1 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 1 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
+propertyUpdated( 1 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 1 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 1 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 1 , BLOCK , UID ) : NO_CHANGES
 propertyUpdated( 5 , DIAGRAM , CHILDREN ) : SUCCESS
+objectDeleted( 6 , BLOCK )
+objectDeleted( 5 , DIAGRAM )
+sizeAfterInsert  = size(super.model.rpar.objs);
+assert_checkequal(sizeBeforeInsert, 1);
+assert_checkequal(sizeAfterInsert,  1);
+// Check consecutive initialization of a SuperBlock in a diagram
+superD = scicos_diagram();
+objectCreated( 9 , DIAGRAM )
+propertyUpdated( 9 , DIAGRAM , TITLE ) : NO_CHANGES
+propertyUpdated( 9 , DIAGRAM , PATH ) : NO_CHANGES
+propertyUpdated( 9 , DIAGRAM , PROPERTIES ) : NO_CHANGES
+propertyUpdated( 9 , DIAGRAM , PROPERTIES ) : NO_CHANGES
+propertyUpdated( 9 , DIAGRAM , CONTEXT ) : NO_CHANGES
+propertyUpdated( 9 , DIAGRAM , CHILDREN ) : NO_CHANGES
+propertyUpdated( 9 , DIAGRAM , VERSION_NUMBER ) : NO_CHANGES
+superD.objs(1) = super;
+objectCreated( 10 , BLOCK )
+propertyUpdated( 10 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
+propertyUpdated( 10 , BLOCK , INTERFACE_FUNCTION ) : NO_CHANGES
+propertyUpdated( 10 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
+propertyUpdated( 10 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 10 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 10 , BLOCK , STYLE ) : NO_CHANGES
+propertyUpdated( 10 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 10 , BLOCK , GEOMETRY ) : NO_CHANGES
+propertyUpdated( 10 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 10 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 10 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 10 , BLOCK , ODSTATE ) : NO_CHANGES
+propertyUpdated( 10 , BLOCK , RPAR ) : NO_CHANGES
+propertyUpdated( 10 , BLOCK , OPAR ) : NO_CHANGES
+propertyUpdated( 10 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
+propertyUpdated( 10 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 10 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 10 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 10 , BLOCK , EXPRS ) : NO_CHANGES
+propertyUpdated( 10 , BLOCK , EQUATIONS ) : NO_CHANGES
+propertyUpdated( 10 , BLOCK , PARENT_DIAGRAM ) : NO_CHANGES
+propertyUpdated( 10 , BLOCK , INPUTS ) : NO_CHANGES
+propertyUpdated( 10 , BLOCK , OUTPUTS ) : NO_CHANGES
+propertyUpdated( 10 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
+propertyUpdated( 10 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+propertyUpdated( 10 , BLOCK , PARENT_BLOCK ) : NO_CHANGES
+propertyUpdated( 10 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
+propertyUpdated( 10 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
+propertyUpdated( 10 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 10 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 10 , BLOCK , ODSTATE ) : NO_CHANGES
+objectCreated( 11 , DIAGRAM )
+propertyUpdated( 11 , DIAGRAM , TITLE ) : NO_CHANGES
+propertyUpdated( 11 , DIAGRAM , PATH ) : NO_CHANGES
+propertyUpdated( 11 , DIAGRAM , VERSION_NUMBER ) : NO_CHANGES
+propertyUpdated( 11 , DIAGRAM , PROPERTIES ) : NO_CHANGES
+propertyUpdated( 11 , DIAGRAM , CONTEXT ) : NO_CHANGES
+objectCreated( 12 , BLOCK )
+propertyUpdated( 12 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
+propertyUpdated( 12 , BLOCK , INTERFACE_FUNCTION ) : NO_CHANGES
+propertyUpdated( 12 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
+propertyUpdated( 12 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 12 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 12 , BLOCK , STYLE ) : NO_CHANGES
+propertyUpdated( 12 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 12 , BLOCK , GEOMETRY ) : NO_CHANGES
+propertyUpdated( 12 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 12 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 12 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 12 , BLOCK , ODSTATE ) : NO_CHANGES
+propertyUpdated( 12 , BLOCK , RPAR ) : NO_CHANGES
+propertyUpdated( 12 , BLOCK , OPAR ) : NO_CHANGES
+propertyUpdated( 12 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
+propertyUpdated( 12 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 12 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 12 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 12 , BLOCK , EXPRS ) : NO_CHANGES
+propertyUpdated( 12 , BLOCK , EQUATIONS ) : NO_CHANGES
+propertyUpdated( 12 , BLOCK , PARENT_DIAGRAM ) : NO_CHANGES
+propertyUpdated( 12 , BLOCK , INPUTS ) : NO_CHANGES
+propertyUpdated( 12 , BLOCK , OUTPUTS ) : NO_CHANGES
+propertyUpdated( 12 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
+propertyUpdated( 12 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+propertyUpdated( 12 , BLOCK , PARENT_BLOCK ) : NO_CHANGES
+propertyUpdated( 11 , DIAGRAM , CHILDREN ) : SUCCESS
+propertyUpdated( 12 , BLOCK , PARENT_DIAGRAM ) : SUCCESS
+propertyUpdated( 10 , BLOCK , CHILDREN ) : SUCCESS
+propertyUpdated( 12 , BLOCK , PARENT_BLOCK ) : SUCCESS
+propertyUpdated( 10 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 10 , BLOCK , OPAR ) : NO_CHANGES
+propertyUpdated( 10 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 10 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
+propertyUpdated( 10 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 10 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 10 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 10 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 9 , DIAGRAM , CHILDREN ) : SUCCESS
+propertyUpdated( 10 , BLOCK , PARENT_DIAGRAM ) : SUCCESS
 // 'superD' is a diagram containing a SuperBlock
 sBeforeInsert = size(superD.objs(1).model.rpar.objs);
 superD.objs(1) = super;
-objectCreated( 9 , BLOCK )
-propertyUpdated( 9 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
-propertyUpdated( 9 , BLOCK , INTERFACE_FUNCTION ) : NO_CHANGES
-propertyUpdated( 9 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
-propertyUpdated( 9 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 9 , BLOCK , UID ) : NO_CHANGES
-propertyUpdated( 9 , BLOCK , STYLE ) : NO_CHANGES
-propertyUpdated( 9 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 9 , BLOCK , GEOMETRY ) : NO_CHANGES
-propertyUpdated( 9 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 9 , BLOCK , STATE ) : NO_CHANGES
-propertyUpdated( 9 , BLOCK , DSTATE ) : NO_CHANGES
-propertyUpdated( 9 , BLOCK , ODSTATE ) : NO_CHANGES
-propertyUpdated( 9 , BLOCK , RPAR ) : NO_CHANGES
-propertyUpdated( 9 , BLOCK , OPAR ) : NO_CHANGES
-propertyUpdated( 9 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
-propertyUpdated( 9 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 9 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 9 , BLOCK , IPAR ) : NO_CHANGES
-propertyUpdated( 9 , BLOCK , EXPRS ) : NO_CHANGES
-propertyUpdated( 9 , BLOCK , EQUATIONS ) : NO_CHANGES
-propertyUpdated( 9 , BLOCK , PARENT_DIAGRAM ) : NO_CHANGES
-propertyUpdated( 9 , BLOCK , INPUTS ) : NO_CHANGES
-propertyUpdated( 9 , BLOCK , OUTPUTS ) : NO_CHANGES
-propertyUpdated( 9 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
-propertyUpdated( 9 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
-propertyUpdated( 9 , BLOCK , PARENT_BLOCK ) : NO_CHANGES
-objectCreated( 10 , DIAGRAM )
-propertyUpdated( 10 , DIAGRAM , TITLE ) : NO_CHANGES
-propertyUpdated( 10 , DIAGRAM , PATH ) : NO_CHANGES
-propertyUpdated( 10 , DIAGRAM , VERSION_NUMBER ) : NO_CHANGES
-propertyUpdated( 10 , DIAGRAM , PROPERTIES ) : NO_CHANGES
-propertyUpdated( 10 , DIAGRAM , CONTEXT ) : NO_CHANGES
-objectCreated( 11 , BLOCK )
-propertyUpdated( 11 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
-propertyUpdated( 11 , BLOCK , INTERFACE_FUNCTION ) : NO_CHANGES
-propertyUpdated( 11 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
-propertyUpdated( 11 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 11 , BLOCK , UID ) : NO_CHANGES
-propertyUpdated( 11 , BLOCK , STYLE ) : NO_CHANGES
-propertyUpdated( 11 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 11 , BLOCK , GEOMETRY ) : NO_CHANGES
-propertyUpdated( 11 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 11 , BLOCK , STATE ) : NO_CHANGES
-propertyUpdated( 11 , BLOCK , DSTATE ) : NO_CHANGES
-propertyUpdated( 11 , BLOCK , ODSTATE ) : NO_CHANGES
-propertyUpdated( 11 , BLOCK , RPAR ) : NO_CHANGES
-propertyUpdated( 11 , BLOCK , OPAR ) : NO_CHANGES
-propertyUpdated( 11 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
-propertyUpdated( 11 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 11 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 11 , BLOCK , IPAR ) : NO_CHANGES
-propertyUpdated( 11 , BLOCK , EXPRS ) : NO_CHANGES
-propertyUpdated( 11 , BLOCK , EQUATIONS ) : NO_CHANGES
-propertyUpdated( 11 , BLOCK , PARENT_DIAGRAM ) : SUCCESS
-propertyUpdated( 11 , BLOCK , INPUTS ) : NO_CHANGES
-propertyUpdated( 11 , BLOCK , OUTPUTS ) : NO_CHANGES
-propertyUpdated( 11 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
-propertyUpdated( 11 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
-propertyUpdated( 11 , BLOCK , PARENT_BLOCK ) : SUCCESS
-propertyUpdated( 11 , BLOCK , CHILDREN ) : NO_CHANGES
-propertyUpdated( 10 , DIAGRAM , CHILDREN ) : SUCCESS
-propertyUpdated( 9 , BLOCK , CHILDREN ) : SUCCESS
-propertyUpdated( 6 , BLOCK , PARENT_DIAGRAM ) : SUCCESS
-propertyUpdated( 9 , BLOCK , PARENT_DIAGRAM ) : SUCCESS
-propertyUpdated( 5 , DIAGRAM , CHILDREN ) : SUCCESS
-propertyUpdated( 6 , BLOCK , CHILDREN ) : SUCCESS
-objectDeleted( 6 , BLOCK )
+propertyUpdated( 11 , DIAGRAM , CHILDREN ) : SUCCESS
+propertyUpdated( 10 , BLOCK , CHILDREN ) : SUCCESS
+objectDeleted( 12 , BLOCK )
+objectDeleted( 11 , DIAGRAM )
+objectCreated( 13 , BLOCK )
+propertyUpdated( 13 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
+propertyUpdated( 13 , BLOCK , INTERFACE_FUNCTION ) : NO_CHANGES
+propertyUpdated( 13 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
+propertyUpdated( 13 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 13 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 13 , BLOCK , STYLE ) : NO_CHANGES
+propertyUpdated( 13 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 13 , BLOCK , GEOMETRY ) : NO_CHANGES
+propertyUpdated( 13 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 13 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 13 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 13 , BLOCK , ODSTATE ) : NO_CHANGES
+propertyUpdated( 13 , BLOCK , RPAR ) : NO_CHANGES
+propertyUpdated( 13 , BLOCK , OPAR ) : NO_CHANGES
+propertyUpdated( 13 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
+propertyUpdated( 13 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 13 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 13 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 13 , BLOCK , EXPRS ) : NO_CHANGES
+propertyUpdated( 13 , BLOCK , EQUATIONS ) : NO_CHANGES
+propertyUpdated( 13 , BLOCK , PARENT_DIAGRAM ) : NO_CHANGES
+propertyUpdated( 13 , BLOCK , INPUTS ) : NO_CHANGES
+propertyUpdated( 13 , BLOCK , OUTPUTS ) : NO_CHANGES
+propertyUpdated( 13 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
+propertyUpdated( 13 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+propertyUpdated( 13 , BLOCK , PARENT_BLOCK ) : NO_CHANGES
+propertyUpdated( 13 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
+propertyUpdated( 13 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
+propertyUpdated( 13 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 13 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 13 , BLOCK , ODSTATE ) : NO_CHANGES
+objectCreated( 14 , DIAGRAM )
+propertyUpdated( 14 , DIAGRAM , TITLE ) : NO_CHANGES
+propertyUpdated( 14 , DIAGRAM , PATH ) : NO_CHANGES
+propertyUpdated( 14 , DIAGRAM , VERSION_NUMBER ) : NO_CHANGES
+propertyUpdated( 14 , DIAGRAM , PROPERTIES ) : NO_CHANGES
+propertyUpdated( 14 , DIAGRAM , CONTEXT ) : NO_CHANGES
+objectCreated( 15 , BLOCK )
+propertyUpdated( 15 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , INTERFACE_FUNCTION ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , STYLE ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , GEOMETRY ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , ODSTATE ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , RPAR ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , OPAR ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , EXPRS ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , EQUATIONS ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , PARENT_DIAGRAM ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , INPUTS ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , OUTPUTS ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , PARENT_BLOCK ) : NO_CHANGES
+propertyUpdated( 14 , DIAGRAM , CHILDREN ) : SUCCESS
+propertyUpdated( 15 , BLOCK , PARENT_DIAGRAM ) : SUCCESS
+propertyUpdated( 13 , BLOCK , CHILDREN ) : SUCCESS
+propertyUpdated( 15 , BLOCK , PARENT_BLOCK ) : SUCCESS
+propertyUpdated( 13 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 13 , BLOCK , OPAR ) : NO_CHANGES
+propertyUpdated( 13 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 13 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
+propertyUpdated( 13 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 13 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 13 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 13 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 9 , DIAGRAM , CHILDREN ) : SUCCESS
+propertyUpdated( 13 , BLOCK , PARENT_DIAGRAM ) : SUCCESS
+propertyUpdated( 10 , BLOCK , PARENT_DIAGRAM ) : SUCCESS
+objectDeleted( 10 , BLOCK )
 sAfterInsert  = size(superD.objs(1).model.rpar.objs);
 assert_checkequal(sizeBeforeInsert, 1);
 assert_checkequal(sizeAfterInsert,  1);
 // Check that all the model items are freed
 clear
+propertyUpdated( 2 , DIAGRAM , CHILDREN ) : SUCCESS
+objectDeleted( 4 , BLOCK )
+objectDeleted( 2 , DIAGRAM )
 objectDeleted( 3 , BLOCK )
+propertyUpdated( 7 , DIAGRAM , CHILDREN ) : SUCCESS
 propertyUpdated( 1 , BLOCK , CHILDREN ) : SUCCESS
+objectDeleted( 8 , BLOCK )
+objectDeleted( 7 , DIAGRAM )
 objectDeleted( 1 , BLOCK )
-propertyUpdated( 9 , BLOCK , PARENT_DIAGRAM ) : SUCCESS
-propertyUpdated( 5 , DIAGRAM , CHILDREN ) : SUCCESS
-propertyUpdated( 9 , BLOCK , CHILDREN ) : SUCCESS
-objectDeleted( 9 , BLOCK )
-objectDeleted( 5 , DIAGRAM )
+propertyUpdated( 14 , DIAGRAM , CHILDREN ) : SUCCESS
+propertyUpdated( 13 , BLOCK , CHILDREN ) : SUCCESS
+objectDeleted( 15 , BLOCK )
+objectDeleted( 14 , DIAGRAM )
+propertyUpdated( 9 , DIAGRAM , CHILDREN ) : SUCCESS
+objectDeleted( 13 , BLOCK )
+objectDeleted( 9 , DIAGRAM )
index ba6adf7..a8ca7b8 100644 (file)
@@ -105,9 +105,8 @@ propertyUpdated( 5 , BLOCK , OUTPUTS ) : NO_CHANGES
 propertyUpdated( 5 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
 propertyUpdated( 5 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
 propertyUpdated( 5 , BLOCK , PARENT_BLOCK ) : NO_CHANGES
-propertyUpdated( 5 , BLOCK , CHILDREN ) : NO_CHANGES
-propertyUpdated( 5 , BLOCK , PARENT_DIAGRAM ) : SUCCESS
 propertyUpdated( 2 , DIAGRAM , CHILDREN ) : SUCCESS
+propertyUpdated( 5 , BLOCK , PARENT_DIAGRAM ) : SUCCESS
 d.objs(2) = l;
 objectCreated( 6 , LINK )
 propertyUpdated( 6 , LINK , COLOR ) : NO_CHANGES
@@ -116,12 +115,11 @@ propertyUpdated( 6 , LINK , LABEL ) : NO_CHANGES
 propertyUpdated( 6 , LINK , CONTROL_POINTS ) : NO_CHANGES
 propertyUpdated( 6 , LINK , THICK ) : NO_CHANGES
 propertyUpdated( 6 , LINK , PARENT_DIAGRAM ) : NO_CHANGES
+propertyUpdated( 6 , LINK , PARENT_BLOCK ) : NO_CHANGES
 propertyUpdated( 6 , LINK , SOURCE_PORT ) : NO_CHANGES
 propertyUpdated( 6 , LINK , DESTINATION_PORT ) : NO_CHANGES
-propertyUpdated( 5 , BLOCK , PARENT_DIAGRAM ) : SUCCESS
-propertyUpdated( 5 , BLOCK , PARENT_DIAGRAM ) : SUCCESS
-propertyUpdated( 6 , LINK , PARENT_DIAGRAM ) : SUCCESS
 propertyUpdated( 2 , DIAGRAM , CHILDREN ) : SUCCESS
+propertyUpdated( 6 , LINK , PARENT_DIAGRAM ) : SUCCESS
 objectCreated( 7 , PORT )
 propertyUpdated( 7 , PORT , IMPLICIT ) : NO_CHANGES
 propertyUpdated( 7 , PORT , PORT_KIND ) : SUCCESS
@@ -146,27 +144,12 @@ propertyUpdated( 1 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
 propertyUpdated( 1 , BLOCK , STATE ) : NO_CHANGES
 propertyUpdated( 1 , BLOCK , DSTATE ) : NO_CHANGES
 propertyUpdated( 1 , BLOCK , ODSTATE ) : NO_CHANGES
-propertyUpdated( 1 , BLOCK , CHILDREN ) : SUCCESS
-propertyUpdated( 5 , BLOCK , PARENT_BLOCK ) : SUCCESS
-propertyUpdated( 1 , BLOCK , IPAR ) : NO_CHANGES
-propertyUpdated( 1 , BLOCK , OPAR ) : NO_CHANGES
-propertyUpdated( 1 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 1 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
-propertyUpdated( 1 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 1 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 1 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 1 , BLOCK , UID ) : NO_CHANGES
-// Main diagram
-scs_m = scicos_diagram();
 objectCreated( 9 , DIAGRAM )
 propertyUpdated( 9 , DIAGRAM , TITLE ) : NO_CHANGES
 propertyUpdated( 9 , DIAGRAM , PATH ) : NO_CHANGES
-propertyUpdated( 9 , DIAGRAM , PROPERTIES ) : NO_CHANGES
+propertyUpdated( 9 , DIAGRAM , VERSION_NUMBER ) : NO_CHANGES
 propertyUpdated( 9 , DIAGRAM , PROPERTIES ) : NO_CHANGES
 propertyUpdated( 9 , DIAGRAM , CONTEXT ) : NO_CHANGES
-propertyUpdated( 9 , DIAGRAM , CHILDREN ) : NO_CHANGES
-propertyUpdated( 9 , DIAGRAM , VERSION_NUMBER ) : NO_CHANGES
-scs_m.objs(1) = sb;
 objectCreated( 10 , BLOCK )
 propertyUpdated( 10 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
 propertyUpdated( 10 , BLOCK , INTERFACE_FUNCTION ) : NO_CHANGES
@@ -189,82 +172,181 @@ propertyUpdated( 10 , BLOCK , IPAR ) : NO_CHANGES
 propertyUpdated( 10 , BLOCK , EXPRS ) : NO_CHANGES
 propertyUpdated( 10 , BLOCK , EQUATIONS ) : NO_CHANGES
 propertyUpdated( 10 , BLOCK , PARENT_DIAGRAM ) : NO_CHANGES
-propertyUpdated( 10 , BLOCK , INPUTS ) : NO_CHANGES
-propertyUpdated( 10 , BLOCK , OUTPUTS ) : NO_CHANGES
+objectCreated( 11 , PORT )
+propertyUpdated( 11 , PORT , FIRING ) : NO_CHANGES
+propertyUpdated( 11 , PORT , PORT_KIND ) : SUCCESS
+propertyUpdated( 11 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 11 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 11 , PORT , LABEL ) : NO_CHANGES
+propertyUpdated( 11 , PORT , DATATYPE ) : SUCCESS
+propertyUpdated( 11 , PORT , SOURCE_BLOCK ) : SUCCESS
+propertyUpdated( 11 , PORT , CONNECTED_SIGNALS ) : NO_CHANGES
+propertyUpdated( 10 , BLOCK , INPUTS ) : SUCCESS
+objectCreated( 12 , PORT )
+propertyUpdated( 12 , PORT , FIRING ) : NO_CHANGES
+propertyUpdated( 12 , PORT , PORT_KIND ) : SUCCESS
+propertyUpdated( 12 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 12 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 12 , PORT , LABEL ) : NO_CHANGES
+propertyUpdated( 12 , PORT , DATATYPE ) : SUCCESS
+propertyUpdated( 12 , PORT , SOURCE_BLOCK ) : SUCCESS
+propertyUpdated( 12 , PORT , CONNECTED_SIGNALS ) : NO_CHANGES
+propertyUpdated( 10 , BLOCK , OUTPUTS ) : SUCCESS
 propertyUpdated( 10 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
 propertyUpdated( 10 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
 propertyUpdated( 10 , BLOCK , PARENT_BLOCK ) : NO_CHANGES
-objectCreated( 11 , DIAGRAM )
-propertyUpdated( 11 , DIAGRAM , TITLE ) : NO_CHANGES
-propertyUpdated( 11 , DIAGRAM , PATH ) : NO_CHANGES
-propertyUpdated( 11 , DIAGRAM , VERSION_NUMBER ) : NO_CHANGES
-propertyUpdated( 11 , DIAGRAM , PROPERTIES ) : NO_CHANGES
-propertyUpdated( 11 , DIAGRAM , CONTEXT ) : NO_CHANGES
-objectCreated( 12 , BLOCK )
-propertyUpdated( 12 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
-propertyUpdated( 12 , BLOCK , INTERFACE_FUNCTION ) : NO_CHANGES
-propertyUpdated( 12 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
-propertyUpdated( 12 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 12 , BLOCK , UID ) : NO_CHANGES
-propertyUpdated( 12 , BLOCK , STYLE ) : NO_CHANGES
-propertyUpdated( 12 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 12 , BLOCK , GEOMETRY ) : NO_CHANGES
-propertyUpdated( 12 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 12 , BLOCK , STATE ) : NO_CHANGES
-propertyUpdated( 12 , BLOCK , DSTATE ) : NO_CHANGES
-propertyUpdated( 12 , BLOCK , ODSTATE ) : NO_CHANGES
-propertyUpdated( 12 , BLOCK , RPAR ) : NO_CHANGES
-propertyUpdated( 12 , BLOCK , OPAR ) : NO_CHANGES
-propertyUpdated( 12 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
-propertyUpdated( 12 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 12 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 12 , BLOCK , IPAR ) : NO_CHANGES
-propertyUpdated( 12 , BLOCK , EXPRS ) : NO_CHANGES
-propertyUpdated( 12 , BLOCK , EQUATIONS ) : NO_CHANGES
-propertyUpdated( 12 , BLOCK , PARENT_DIAGRAM ) : SUCCESS
-objectCreated( 13 , PORT )
-propertyUpdated( 13 , PORT , FIRING ) : NO_CHANGES
-propertyUpdated( 13 , PORT , PORT_KIND ) : SUCCESS
-propertyUpdated( 13 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 13 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 13 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 13 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 13 , PORT , SOURCE_BLOCK ) : SUCCESS
-objectCreated( 14 , LINK )
-propertyUpdated( 14 , LINK , COLOR ) : NO_CHANGES
-propertyUpdated( 14 , LINK , KIND ) : NO_CHANGES
-propertyUpdated( 14 , LINK , LABEL ) : NO_CHANGES
-propertyUpdated( 14 , LINK , CONTROL_POINTS ) : NO_CHANGES
-propertyUpdated( 14 , LINK , THICK ) : NO_CHANGES
-propertyUpdated( 14 , LINK , PARENT_DIAGRAM ) : SUCCESS
-objectCreated( 15 , PORT )
-propertyUpdated( 15 , PORT , FIRING ) : NO_CHANGES
-propertyUpdated( 15 , PORT , PORT_KIND ) : SUCCESS
-propertyUpdated( 15 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 15 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 15 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 15 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 15 , PORT , SOURCE_BLOCK ) : SUCCESS
-propertyUpdated( 15 , PORT , CONNECTED_SIGNALS ) : SUCCESS
-propertyUpdated( 14 , LINK , SOURCE_PORT ) : SUCCESS
-propertyUpdated( 14 , LINK , DESTINATION_PORT ) : SUCCESS
-propertyUpdated( 13 , PORT , CONNECTED_SIGNALS ) : SUCCESS
-propertyUpdated( 12 , BLOCK , INPUTS ) : SUCCESS
-propertyUpdated( 12 , BLOCK , OUTPUTS ) : SUCCESS
-propertyUpdated( 12 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
-propertyUpdated( 12 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
-propertyUpdated( 12 , BLOCK , PARENT_BLOCK ) : SUCCESS
-propertyUpdated( 12 , BLOCK , CHILDREN ) : NO_CHANGES
-propertyUpdated( 11 , DIAGRAM , CHILDREN ) : SUCCESS
-propertyUpdated( 10 , BLOCK , CHILDREN ) : SUCCESS
-propertyUpdated( 15 , PORT , CONNECTED_SIGNALS ) : SUCCESS
-propertyUpdated( 15 , PORT , CONNECTED_SIGNALS ) : SUCCESS
-propertyUpdated( 14 , LINK , SOURCE_PORT ) : NO_CHANGES
-propertyUpdated( 13 , PORT , CONNECTED_SIGNALS ) : SUCCESS
-propertyUpdated( 13 , PORT , CONNECTED_SIGNALS ) : SUCCESS
-propertyUpdated( 14 , LINK , DESTINATION_PORT ) : NO_CHANGES
-propertyUpdated( 10 , BLOCK , PARENT_DIAGRAM ) : SUCCESS
+objectCreated( 13 , LINK )
+propertyUpdated( 13 , LINK , COLOR ) : NO_CHANGES
+propertyUpdated( 13 , LINK , KIND ) : NO_CHANGES
+propertyUpdated( 13 , LINK , LABEL ) : NO_CHANGES
+propertyUpdated( 13 , LINK , CONTROL_POINTS ) : NO_CHANGES
+propertyUpdated( 13 , LINK , THICK ) : NO_CHANGES
+propertyUpdated( 13 , LINK , PARENT_DIAGRAM ) : NO_CHANGES
+propertyUpdated( 13 , LINK , PARENT_BLOCK ) : NO_CHANGES
+propertyUpdated( 13 , LINK , SOURCE_PORT ) : NO_CHANGES
+propertyUpdated( 13 , LINK , DESTINATION_PORT ) : NO_CHANGES
 propertyUpdated( 9 , DIAGRAM , CHILDREN ) : SUCCESS
+propertyUpdated( 10 , BLOCK , PARENT_DIAGRAM ) : SUCCESS
+propertyUpdated( 13 , LINK , PARENT_DIAGRAM ) : SUCCESS
+propertyUpdated( 12 , PORT , CONNECTED_SIGNALS ) : SUCCESS
+propertyUpdated( 13 , LINK , SOURCE_PORT ) : SUCCESS
+propertyUpdated( 11 , PORT , CONNECTED_SIGNALS ) : SUCCESS
+propertyUpdated( 13 , LINK , DESTINATION_PORT ) : SUCCESS
+propertyUpdated( 1 , BLOCK , CHILDREN ) : SUCCESS
+propertyUpdated( 10 , BLOCK , PARENT_BLOCK ) : SUCCESS
+propertyUpdated( 13 , LINK , PARENT_BLOCK ) : SUCCESS
+propertyUpdated( 1 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 1 , BLOCK , OPAR ) : NO_CHANGES
+propertyUpdated( 1 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 1 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
+propertyUpdated( 1 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 1 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 1 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 1 , BLOCK , UID ) : NO_CHANGES
+// Main diagram
+scs_m = scicos_diagram();
+objectCreated( 14 , DIAGRAM )
+propertyUpdated( 14 , DIAGRAM , TITLE ) : NO_CHANGES
+propertyUpdated( 14 , DIAGRAM , PATH ) : NO_CHANGES
+propertyUpdated( 14 , DIAGRAM , PROPERTIES ) : NO_CHANGES
+propertyUpdated( 14 , DIAGRAM , PROPERTIES ) : NO_CHANGES
+propertyUpdated( 14 , DIAGRAM , CONTEXT ) : NO_CHANGES
+propertyUpdated( 14 , DIAGRAM , CHILDREN ) : NO_CHANGES
+propertyUpdated( 14 , DIAGRAM , VERSION_NUMBER ) : NO_CHANGES
+scs_m.objs(1) = sb;
+objectCreated( 15 , BLOCK )
+propertyUpdated( 15 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , INTERFACE_FUNCTION ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , STYLE ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , GEOMETRY ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , ODSTATE ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , RPAR ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , OPAR ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , EXPRS ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , EQUATIONS ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , PARENT_DIAGRAM ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , INPUTS ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , OUTPUTS ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , PARENT_BLOCK ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , ODSTATE ) : NO_CHANGES
+objectCreated( 16 , DIAGRAM )
+propertyUpdated( 16 , DIAGRAM , TITLE ) : NO_CHANGES
+propertyUpdated( 16 , DIAGRAM , PATH ) : NO_CHANGES
+propertyUpdated( 16 , DIAGRAM , VERSION_NUMBER ) : NO_CHANGES
+propertyUpdated( 16 , DIAGRAM , PROPERTIES ) : NO_CHANGES
+propertyUpdated( 16 , DIAGRAM , CONTEXT ) : NO_CHANGES
+objectCreated( 17 , BLOCK )
+propertyUpdated( 17 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
+propertyUpdated( 17 , BLOCK , INTERFACE_FUNCTION ) : NO_CHANGES
+propertyUpdated( 17 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
+propertyUpdated( 17 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 17 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 17 , BLOCK , STYLE ) : NO_CHANGES
+propertyUpdated( 17 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 17 , BLOCK , GEOMETRY ) : NO_CHANGES
+propertyUpdated( 17 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 17 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 17 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 17 , BLOCK , ODSTATE ) : NO_CHANGES
+propertyUpdated( 17 , BLOCK , RPAR ) : NO_CHANGES
+propertyUpdated( 17 , BLOCK , OPAR ) : NO_CHANGES
+propertyUpdated( 17 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
+propertyUpdated( 17 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 17 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 17 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 17 , BLOCK , EXPRS ) : NO_CHANGES
+propertyUpdated( 17 , BLOCK , EQUATIONS ) : NO_CHANGES
+propertyUpdated( 17 , BLOCK , PARENT_DIAGRAM ) : NO_CHANGES
+objectCreated( 18 , PORT )
+propertyUpdated( 18 , PORT , FIRING ) : NO_CHANGES
+propertyUpdated( 18 , PORT , PORT_KIND ) : SUCCESS
+propertyUpdated( 18 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 18 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 18 , PORT , LABEL ) : NO_CHANGES
+propertyUpdated( 18 , PORT , DATATYPE ) : SUCCESS
+propertyUpdated( 18 , PORT , SOURCE_BLOCK ) : SUCCESS
+propertyUpdated( 18 , PORT , CONNECTED_SIGNALS ) : NO_CHANGES
+propertyUpdated( 17 , BLOCK , INPUTS ) : SUCCESS
+objectCreated( 19 , PORT )
+propertyUpdated( 19 , PORT , FIRING ) : NO_CHANGES
+propertyUpdated( 19 , PORT , PORT_KIND ) : SUCCESS
+propertyUpdated( 19 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 19 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 19 , PORT , LABEL ) : NO_CHANGES
+propertyUpdated( 19 , PORT , DATATYPE ) : SUCCESS
+propertyUpdated( 19 , PORT , SOURCE_BLOCK ) : SUCCESS
+propertyUpdated( 19 , PORT , CONNECTED_SIGNALS ) : NO_CHANGES
+propertyUpdated( 17 , BLOCK , OUTPUTS ) : SUCCESS
+propertyUpdated( 17 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
+propertyUpdated( 17 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+propertyUpdated( 17 , BLOCK , PARENT_BLOCK ) : NO_CHANGES
+objectCreated( 20 , LINK )
+propertyUpdated( 20 , LINK , COLOR ) : NO_CHANGES
+propertyUpdated( 20 , LINK , KIND ) : NO_CHANGES
+propertyUpdated( 20 , LINK , LABEL ) : NO_CHANGES
+propertyUpdated( 20 , LINK , CONTROL_POINTS ) : NO_CHANGES
+propertyUpdated( 20 , LINK , THICK ) : NO_CHANGES
+propertyUpdated( 20 , LINK , PARENT_DIAGRAM ) : NO_CHANGES
+propertyUpdated( 20 , LINK , PARENT_BLOCK ) : NO_CHANGES
+propertyUpdated( 20 , LINK , SOURCE_PORT ) : NO_CHANGES
+propertyUpdated( 20 , LINK , DESTINATION_PORT ) : NO_CHANGES
+propertyUpdated( 16 , DIAGRAM , CHILDREN ) : SUCCESS
+propertyUpdated( 17 , BLOCK , PARENT_DIAGRAM ) : SUCCESS
+propertyUpdated( 20 , LINK , PARENT_DIAGRAM ) : SUCCESS
+propertyUpdated( 19 , PORT , CONNECTED_SIGNALS ) : SUCCESS
+propertyUpdated( 20 , LINK , SOURCE_PORT ) : SUCCESS
+propertyUpdated( 18 , PORT , CONNECTED_SIGNALS ) : SUCCESS
+propertyUpdated( 20 , LINK , DESTINATION_PORT ) : SUCCESS
+propertyUpdated( 15 , BLOCK , CHILDREN ) : SUCCESS
+propertyUpdated( 17 , BLOCK , PARENT_BLOCK ) : SUCCESS
+propertyUpdated( 20 , LINK , PARENT_BLOCK ) : SUCCESS
+propertyUpdated( 15 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , OPAR ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 15 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 14 , DIAGRAM , CHILDREN ) : SUCCESS
+propertyUpdated( 15 , BLOCK , PARENT_DIAGRAM ) : SUCCESS
 scs_m.objs(1).model.rpar // Checking 'sb' elements
  ans  =
 wpar = []
@@ -336,109 +418,125 @@ Link    :
           to: 1 1 1
 l = list(1); l(1) = scs_m; // Cloning 'scs_m'
 objectDeleted( 4 , LINK )
-objectCreated( 16 , DIAGRAM )
-propertyUpdated( 16 , DIAGRAM , TITLE ) : NO_CHANGES
-propertyUpdated( 16 , DIAGRAM , PATH ) : NO_CHANGES
-propertyUpdated( 16 , DIAGRAM , VERSION_NUMBER ) : NO_CHANGES
-propertyUpdated( 16 , DIAGRAM , PROPERTIES ) : NO_CHANGES
-propertyUpdated( 16 , DIAGRAM , CONTEXT ) : NO_CHANGES
-objectCreated( 17 , BLOCK )
-propertyUpdated( 17 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
-propertyUpdated( 17 , BLOCK , INTERFACE_FUNCTION ) : NO_CHANGES
-propertyUpdated( 17 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
-propertyUpdated( 17 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 17 , BLOCK , UID ) : NO_CHANGES
-propertyUpdated( 17 , BLOCK , STYLE ) : NO_CHANGES
-propertyUpdated( 17 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 17 , BLOCK , GEOMETRY ) : NO_CHANGES
-propertyUpdated( 17 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 17 , BLOCK , STATE ) : NO_CHANGES
-propertyUpdated( 17 , BLOCK , DSTATE ) : NO_CHANGES
-propertyUpdated( 17 , BLOCK , ODSTATE ) : NO_CHANGES
-propertyUpdated( 17 , BLOCK , RPAR ) : NO_CHANGES
-propertyUpdated( 17 , BLOCK , OPAR ) : NO_CHANGES
-propertyUpdated( 17 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
-propertyUpdated( 17 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 17 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 17 , BLOCK , IPAR ) : NO_CHANGES
-propertyUpdated( 17 , BLOCK , EXPRS ) : NO_CHANGES
-propertyUpdated( 17 , BLOCK , EQUATIONS ) : NO_CHANGES
-propertyUpdated( 17 , BLOCK , PARENT_DIAGRAM ) : SUCCESS
-propertyUpdated( 17 , BLOCK , INPUTS ) : NO_CHANGES
-propertyUpdated( 17 , BLOCK , OUTPUTS ) : NO_CHANGES
-propertyUpdated( 17 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
-propertyUpdated( 17 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
-propertyUpdated( 17 , BLOCK , PARENT_BLOCK ) : NO_CHANGES
-objectCreated( 18 , DIAGRAM )
-propertyUpdated( 18 , DIAGRAM , TITLE ) : NO_CHANGES
-propertyUpdated( 18 , DIAGRAM , PATH ) : NO_CHANGES
-propertyUpdated( 18 , DIAGRAM , VERSION_NUMBER ) : NO_CHANGES
-propertyUpdated( 18 , DIAGRAM , PROPERTIES ) : NO_CHANGES
-propertyUpdated( 18 , DIAGRAM , CONTEXT ) : NO_CHANGES
-objectCreated( 19 , BLOCK )
-propertyUpdated( 19 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
-propertyUpdated( 19 , BLOCK , INTERFACE_FUNCTION ) : NO_CHANGES
-propertyUpdated( 19 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
-propertyUpdated( 19 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 19 , BLOCK , UID ) : NO_CHANGES
-propertyUpdated( 19 , BLOCK , STYLE ) : NO_CHANGES
-propertyUpdated( 19 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 19 , BLOCK , GEOMETRY ) : NO_CHANGES
-propertyUpdated( 19 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 19 , BLOCK , STATE ) : NO_CHANGES
-propertyUpdated( 19 , BLOCK , DSTATE ) : NO_CHANGES
-propertyUpdated( 19 , BLOCK , ODSTATE ) : NO_CHANGES
-propertyUpdated( 19 , BLOCK , RPAR ) : NO_CHANGES
-propertyUpdated( 19 , BLOCK , OPAR ) : NO_CHANGES
-propertyUpdated( 19 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
-propertyUpdated( 19 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 19 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 19 , BLOCK , IPAR ) : NO_CHANGES
-propertyUpdated( 19 , BLOCK , EXPRS ) : NO_CHANGES
-propertyUpdated( 19 , BLOCK , EQUATIONS ) : NO_CHANGES
-propertyUpdated( 19 , BLOCK , PARENT_DIAGRAM ) : SUCCESS
-objectCreated( 20 , PORT )
-propertyUpdated( 20 , PORT , FIRING ) : NO_CHANGES
-propertyUpdated( 20 , PORT , PORT_KIND ) : SUCCESS
-propertyUpdated( 20 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 20 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 20 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 20 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 20 , PORT , SOURCE_BLOCK ) : SUCCESS
-objectCreated( 21 , LINK )
-propertyUpdated( 21 , LINK , COLOR ) : NO_CHANGES
-propertyUpdated( 21 , LINK , KIND ) : NO_CHANGES
-propertyUpdated( 21 , LINK , LABEL ) : NO_CHANGES
-propertyUpdated( 21 , LINK , CONTROL_POINTS ) : NO_CHANGES
-propertyUpdated( 21 , LINK , THICK ) : NO_CHANGES
-propertyUpdated( 21 , LINK , PARENT_DIAGRAM ) : SUCCESS
-objectCreated( 22 , PORT )
-propertyUpdated( 22 , PORT , FIRING ) : NO_CHANGES
-propertyUpdated( 22 , PORT , PORT_KIND ) : SUCCESS
-propertyUpdated( 22 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 22 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 22 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 22 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 22 , PORT , SOURCE_BLOCK ) : SUCCESS
-propertyUpdated( 22 , PORT , CONNECTED_SIGNALS ) : SUCCESS
-propertyUpdated( 21 , LINK , SOURCE_PORT ) : SUCCESS
-propertyUpdated( 21 , LINK , DESTINATION_PORT ) : SUCCESS
-propertyUpdated( 20 , PORT , CONNECTED_SIGNALS ) : SUCCESS
-propertyUpdated( 19 , BLOCK , INPUTS ) : SUCCESS
-propertyUpdated( 19 , BLOCK , OUTPUTS ) : SUCCESS
-propertyUpdated( 19 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
-propertyUpdated( 19 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
-propertyUpdated( 19 , BLOCK , PARENT_BLOCK ) : SUCCESS
-propertyUpdated( 19 , BLOCK , CHILDREN ) : NO_CHANGES
-propertyUpdated( 18 , DIAGRAM , CHILDREN ) : SUCCESS
-propertyUpdated( 17 , BLOCK , CHILDREN ) : SUCCESS
-propertyUpdated( 16 , DIAGRAM , CHILDREN ) : SUCCESS
-propertyUpdated( 22 , PORT , CONNECTED_SIGNALS ) : SUCCESS
-propertyUpdated( 22 , PORT , CONNECTED_SIGNALS ) : SUCCESS
-propertyUpdated( 21 , LINK , SOURCE_PORT ) : NO_CHANGES
-propertyUpdated( 20 , PORT , CONNECTED_SIGNALS ) : SUCCESS
-propertyUpdated( 20 , PORT , CONNECTED_SIGNALS ) : SUCCESS
-propertyUpdated( 21 , LINK , DESTINATION_PORT ) : NO_CHANGES
+objectCreated( 21 , DIAGRAM )
+propertyUpdated( 21 , DIAGRAM , TITLE ) : NO_CHANGES
+propertyUpdated( 21 , DIAGRAM , PATH ) : NO_CHANGES
+propertyUpdated( 21 , DIAGRAM , VERSION_NUMBER ) : NO_CHANGES
+propertyUpdated( 21 , DIAGRAM , PROPERTIES ) : NO_CHANGES
+propertyUpdated( 21 , DIAGRAM , CONTEXT ) : NO_CHANGES
+objectCreated( 22 , BLOCK )
+propertyUpdated( 22 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
+propertyUpdated( 22 , BLOCK , INTERFACE_FUNCTION ) : NO_CHANGES
+propertyUpdated( 22 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
+propertyUpdated( 22 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 22 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 22 , BLOCK , STYLE ) : NO_CHANGES
+propertyUpdated( 22 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 22 , BLOCK , GEOMETRY ) : NO_CHANGES
+propertyUpdated( 22 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 22 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 22 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 22 , BLOCK , ODSTATE ) : NO_CHANGES
+propertyUpdated( 22 , BLOCK , RPAR ) : NO_CHANGES
+propertyUpdated( 22 , BLOCK , OPAR ) : NO_CHANGES
+propertyUpdated( 22 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
+propertyUpdated( 22 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 22 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 22 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 22 , BLOCK , EXPRS ) : NO_CHANGES
+propertyUpdated( 22 , BLOCK , EQUATIONS ) : NO_CHANGES
+propertyUpdated( 22 , BLOCK , PARENT_DIAGRAM ) : NO_CHANGES
+propertyUpdated( 22 , BLOCK , INPUTS ) : NO_CHANGES
+propertyUpdated( 22 , BLOCK , OUTPUTS ) : NO_CHANGES
+propertyUpdated( 22 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
+propertyUpdated( 22 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+propertyUpdated( 22 , BLOCK , PARENT_BLOCK ) : NO_CHANGES
+propertyUpdated( 22 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
+propertyUpdated( 22 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
+propertyUpdated( 22 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 22 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 22 , BLOCK , ODSTATE ) : NO_CHANGES
+objectCreated( 23 , DIAGRAM )
+propertyUpdated( 23 , DIAGRAM , TITLE ) : NO_CHANGES
+propertyUpdated( 23 , DIAGRAM , PATH ) : NO_CHANGES
+propertyUpdated( 23 , DIAGRAM , VERSION_NUMBER ) : NO_CHANGES
+propertyUpdated( 23 , DIAGRAM , PROPERTIES ) : NO_CHANGES
+propertyUpdated( 23 , DIAGRAM , CONTEXT ) : NO_CHANGES
+objectCreated( 24 , BLOCK )
+propertyUpdated( 24 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
+propertyUpdated( 24 , BLOCK , INTERFACE_FUNCTION ) : NO_CHANGES
+propertyUpdated( 24 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
+propertyUpdated( 24 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 24 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 24 , BLOCK , STYLE ) : NO_CHANGES
+propertyUpdated( 24 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 24 , BLOCK , GEOMETRY ) : NO_CHANGES
+propertyUpdated( 24 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 24 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 24 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 24 , BLOCK , ODSTATE ) : NO_CHANGES
+propertyUpdated( 24 , BLOCK , RPAR ) : NO_CHANGES
+propertyUpdated( 24 , BLOCK , OPAR ) : NO_CHANGES
+propertyUpdated( 24 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
+propertyUpdated( 24 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 24 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 24 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 24 , BLOCK , EXPRS ) : NO_CHANGES
+propertyUpdated( 24 , BLOCK , EQUATIONS ) : NO_CHANGES
+propertyUpdated( 24 , BLOCK , PARENT_DIAGRAM ) : NO_CHANGES
+objectCreated( 25 , PORT )
+propertyUpdated( 25 , PORT , FIRING ) : NO_CHANGES
+propertyUpdated( 25 , PORT , PORT_KIND ) : SUCCESS
+propertyUpdated( 25 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 25 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 25 , PORT , LABEL ) : NO_CHANGES
+propertyUpdated( 25 , PORT , DATATYPE ) : SUCCESS
+propertyUpdated( 25 , PORT , SOURCE_BLOCK ) : SUCCESS
+propertyUpdated( 25 , PORT , CONNECTED_SIGNALS ) : NO_CHANGES
+propertyUpdated( 24 , BLOCK , INPUTS ) : SUCCESS
+objectCreated( 26 , PORT )
+propertyUpdated( 26 , PORT , FIRING ) : NO_CHANGES
+propertyUpdated( 26 , PORT , PORT_KIND ) : SUCCESS
+propertyUpdated( 26 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 26 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 26 , PORT , LABEL ) : NO_CHANGES
+propertyUpdated( 26 , PORT , DATATYPE ) : SUCCESS
+propertyUpdated( 26 , PORT , SOURCE_BLOCK ) : SUCCESS
+propertyUpdated( 26 , PORT , CONNECTED_SIGNALS ) : NO_CHANGES
+propertyUpdated( 24 , BLOCK , OUTPUTS ) : SUCCESS
+propertyUpdated( 24 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
+propertyUpdated( 24 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+propertyUpdated( 24 , BLOCK , PARENT_BLOCK ) : NO_CHANGES
+objectCreated( 27 , LINK )
+propertyUpdated( 27 , LINK , COLOR ) : NO_CHANGES
+propertyUpdated( 27 , LINK , KIND ) : NO_CHANGES
+propertyUpdated( 27 , LINK , LABEL ) : NO_CHANGES
+propertyUpdated( 27 , LINK , CONTROL_POINTS ) : NO_CHANGES
+propertyUpdated( 27 , LINK , THICK ) : NO_CHANGES
+propertyUpdated( 27 , LINK , PARENT_DIAGRAM ) : NO_CHANGES
+propertyUpdated( 27 , LINK , PARENT_BLOCK ) : NO_CHANGES
+propertyUpdated( 27 , LINK , SOURCE_PORT ) : NO_CHANGES
+propertyUpdated( 27 , LINK , DESTINATION_PORT ) : NO_CHANGES
+propertyUpdated( 23 , DIAGRAM , CHILDREN ) : SUCCESS
+propertyUpdated( 24 , BLOCK , PARENT_DIAGRAM ) : SUCCESS
+propertyUpdated( 27 , LINK , PARENT_DIAGRAM ) : SUCCESS
+propertyUpdated( 26 , PORT , CONNECTED_SIGNALS ) : SUCCESS
+propertyUpdated( 27 , LINK , SOURCE_PORT ) : SUCCESS
+propertyUpdated( 25 , PORT , CONNECTED_SIGNALS ) : SUCCESS
+propertyUpdated( 27 , LINK , DESTINATION_PORT ) : SUCCESS
+propertyUpdated( 22 , BLOCK , CHILDREN ) : SUCCESS
+propertyUpdated( 24 , BLOCK , PARENT_BLOCK ) : SUCCESS
+propertyUpdated( 27 , LINK , PARENT_BLOCK ) : SUCCESS
+propertyUpdated( 22 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 22 , BLOCK , OPAR ) : NO_CHANGES
+propertyUpdated( 22 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 22 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
+propertyUpdated( 22 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 22 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 22 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 22 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 21 , DIAGRAM , CHILDREN ) : SUCCESS
+propertyUpdated( 22 , BLOCK , PARENT_DIAGRAM ) : SUCCESS
 l(1).objs(1).model.rpar
  ans  =
 wpar = []
@@ -517,248 +615,250 @@ assert_checkequal(l(1).objs(1).model.rpar.objs(2).to,   [1 1 1]);
 // Check that all the model items are freed
 clear
 objectDeleted( 3 , BLOCK )
-propertyUpdated( 17 , BLOCK , PARENT_DIAGRAM ) : SUCCESS
-propertyUpdated( 16 , DIAGRAM , CHILDREN ) : SUCCESS
-propertyUpdated( 17 , BLOCK , CHILDREN ) : SUCCESS
-objectDeleted( 17 , BLOCK )
-objectDeleted( 16 , DIAGRAM )
-propertyUpdated( 1 , BLOCK , CHILDREN ) : SUCCESS
-objectDeleted( 1 , BLOCK )
-propertyUpdated( 10 , BLOCK , PARENT_DIAGRAM ) : SUCCESS
+propertyUpdated( 2 , DIAGRAM , CHILDREN ) : SUCCESS
+propertyUpdated( 5 , BLOCK , INPUTS ) : SUCCESS
+propertyUpdated( 5 , BLOCK , OUTPUTS ) : NO_CHANGES
+propertyUpdated( 5 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
+propertyUpdated( 5 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+propertyUpdated( 6 , LINK , DESTINATION_PORT ) : SUCCESS
+objectDeleted( 8 , PORT )
+propertyUpdated( 5 , BLOCK , INPUTS ) : NO_CHANGES
+propertyUpdated( 5 , BLOCK , OUTPUTS ) : SUCCESS
+propertyUpdated( 5 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
+propertyUpdated( 5 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+propertyUpdated( 6 , LINK , SOURCE_PORT ) : SUCCESS
+objectDeleted( 7 , PORT )
+objectDeleted( 5 , BLOCK )
+propertyUpdated( 2 , DIAGRAM , CHILDREN ) : SUCCESS
+objectDeleted( 6 , LINK )
+objectDeleted( 2 , DIAGRAM )
+propertyUpdated( 23 , DIAGRAM , CHILDREN ) : SUCCESS
+propertyUpdated( 22 , BLOCK , CHILDREN ) : SUCCESS
+propertyUpdated( 24 , BLOCK , INPUTS ) : SUCCESS
+propertyUpdated( 24 , BLOCK , OUTPUTS ) : NO_CHANGES
+propertyUpdated( 24 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
+propertyUpdated( 24 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+propertyUpdated( 27 , LINK , DESTINATION_PORT ) : SUCCESS
+objectDeleted( 25 , PORT )
+propertyUpdated( 24 , BLOCK , INPUTS ) : NO_CHANGES
+propertyUpdated( 24 , BLOCK , OUTPUTS ) : SUCCESS
+propertyUpdated( 24 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
+propertyUpdated( 24 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+propertyUpdated( 27 , LINK , SOURCE_PORT ) : SUCCESS
+objectDeleted( 26 , PORT )
+objectDeleted( 24 , BLOCK )
+propertyUpdated( 23 , DIAGRAM , CHILDREN ) : SUCCESS
+propertyUpdated( 22 , BLOCK , CHILDREN ) : SUCCESS
+objectDeleted( 27 , LINK )
+objectDeleted( 23 , DIAGRAM )
+propertyUpdated( 21 , DIAGRAM , CHILDREN ) : SUCCESS
+objectDeleted( 22 , BLOCK )
+objectDeleted( 21 , DIAGRAM )
 propertyUpdated( 9 , DIAGRAM , CHILDREN ) : SUCCESS
-propertyUpdated( 10 , BLOCK , CHILDREN ) : SUCCESS
+propertyUpdated( 1 , BLOCK , CHILDREN ) : SUCCESS
+propertyUpdated( 10 , BLOCK , INPUTS ) : SUCCESS
+propertyUpdated( 10 , BLOCK , OUTPUTS ) : NO_CHANGES
+propertyUpdated( 10 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
+propertyUpdated( 10 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+propertyUpdated( 13 , LINK , DESTINATION_PORT ) : SUCCESS
+objectDeleted( 11 , PORT )
+propertyUpdated( 10 , BLOCK , INPUTS ) : NO_CHANGES
+propertyUpdated( 10 , BLOCK , OUTPUTS ) : SUCCESS
+propertyUpdated( 10 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
+propertyUpdated( 10 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+propertyUpdated( 13 , LINK , SOURCE_PORT ) : SUCCESS
+objectDeleted( 12 , PORT )
 objectDeleted( 10 , BLOCK )
+propertyUpdated( 9 , DIAGRAM , CHILDREN ) : SUCCESS
+propertyUpdated( 1 , BLOCK , CHILDREN ) : SUCCESS
+objectDeleted( 13 , LINK )
 objectDeleted( 9 , DIAGRAM )
+objectDeleted( 1 , BLOCK )
+propertyUpdated( 16 , DIAGRAM , CHILDREN ) : SUCCESS
+propertyUpdated( 15 , BLOCK , CHILDREN ) : SUCCESS
+propertyUpdated( 17 , BLOCK , INPUTS ) : SUCCESS
+propertyUpdated( 17 , BLOCK , OUTPUTS ) : NO_CHANGES
+propertyUpdated( 17 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
+propertyUpdated( 17 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+propertyUpdated( 20 , LINK , DESTINATION_PORT ) : SUCCESS
+objectDeleted( 18 , PORT )
+propertyUpdated( 17 , BLOCK , INPUTS ) : NO_CHANGES
+propertyUpdated( 17 , BLOCK , OUTPUTS ) : SUCCESS
+propertyUpdated( 17 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
+propertyUpdated( 17 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+propertyUpdated( 20 , LINK , SOURCE_PORT ) : SUCCESS
+objectDeleted( 19 , PORT )
+objectDeleted( 17 , BLOCK )
+propertyUpdated( 16 , DIAGRAM , CHILDREN ) : SUCCESS
+propertyUpdated( 15 , BLOCK , CHILDREN ) : SUCCESS
+objectDeleted( 20 , LINK )
+objectDeleted( 16 , DIAGRAM )
+propertyUpdated( 14 , DIAGRAM , CHILDREN ) : SUCCESS
+objectDeleted( 15 , BLOCK )
+objectDeleted( 14 , DIAGRAM )
 // Try with two "BIGSOM_f" blocks connected together
 // The SuperBlock, containing a Block and a Link
 sb = scicos_block();
-objectCreated( 23 , BLOCK )
-propertyUpdated( 23 , BLOCK , GEOMETRY ) : NO_CHANGES
-propertyUpdated( 23 , BLOCK , GEOMETRY ) : NO_CHANGES
-propertyUpdated( 23 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 23 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 23 , BLOCK , EXPRS ) : NO_CHANGES
-propertyUpdated( 23 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 23 , BLOCK , STYLE ) : NO_CHANGES
-propertyUpdated( 23 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
-propertyUpdated( 23 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
-propertyUpdated( 23 , BLOCK , STATE ) : NO_CHANGES
-propertyUpdated( 23 , BLOCK , DSTATE ) : NO_CHANGES
-propertyUpdated( 23 , BLOCK , ODSTATE ) : NO_CHANGES
-propertyUpdated( 23 , BLOCK , RPAR ) : NO_CHANGES
-propertyUpdated( 23 , BLOCK , IPAR ) : NO_CHANGES
-propertyUpdated( 23 , BLOCK , OPAR ) : NO_CHANGES
-propertyUpdated( 23 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 23 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
-propertyUpdated( 23 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 23 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 23 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 23 , BLOCK , UID ) : NO_CHANGES
-propertyUpdated( 23 , BLOCK , INTERFACE_FUNCTION ) : NO_CHANGES
+objectCreated( 28 , BLOCK )
+propertyUpdated( 28 , BLOCK , GEOMETRY ) : NO_CHANGES
+propertyUpdated( 28 , BLOCK , GEOMETRY ) : NO_CHANGES
+propertyUpdated( 28 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 28 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 28 , BLOCK , EXPRS ) : NO_CHANGES
+propertyUpdated( 28 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 28 , BLOCK , STYLE ) : NO_CHANGES
+propertyUpdated( 28 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
+propertyUpdated( 28 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
+propertyUpdated( 28 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 28 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 28 , BLOCK , ODSTATE ) : NO_CHANGES
+propertyUpdated( 28 , BLOCK , RPAR ) : NO_CHANGES
+propertyUpdated( 28 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 28 , BLOCK , OPAR ) : NO_CHANGES
+propertyUpdated( 28 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 28 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
+propertyUpdated( 28 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 28 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 28 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 28 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 28 , BLOCK , INTERFACE_FUNCTION ) : NO_CHANGES
 // Sub-Diagram of 'sb'
 d = scicos_diagram();
-objectCreated( 24 , DIAGRAM )
-propertyUpdated( 24 , DIAGRAM , TITLE ) : NO_CHANGES
-propertyUpdated( 24 , DIAGRAM , PATH ) : NO_CHANGES
-propertyUpdated( 24 , DIAGRAM , PROPERTIES ) : NO_CHANGES
-propertyUpdated( 24 , DIAGRAM , PROPERTIES ) : NO_CHANGES
-propertyUpdated( 24 , DIAGRAM , CONTEXT ) : NO_CHANGES
-propertyUpdated( 24 , DIAGRAM , CHILDREN ) : NO_CHANGES
-propertyUpdated( 24 , DIAGRAM , VERSION_NUMBER ) : NO_CHANGES
+objectCreated( 29 , DIAGRAM )
+propertyUpdated( 29 , DIAGRAM , TITLE ) : NO_CHANGES
+propertyUpdated( 29 , DIAGRAM , PATH ) : NO_CHANGES
+propertyUpdated( 29 , DIAGRAM , PROPERTIES ) : NO_CHANGES
+propertyUpdated( 29 , DIAGRAM , PROPERTIES ) : NO_CHANGES
+propertyUpdated( 29 , DIAGRAM , CONTEXT ) : NO_CHANGES
+propertyUpdated( 29 , DIAGRAM , CHILDREN ) : NO_CHANGES
+propertyUpdated( 29 , DIAGRAM , VERSION_NUMBER ) : NO_CHANGES
 // Block & Link
 Sum1 = BIGSOM_f("define");
-objectCreated( 25 , BLOCK )
-propertyUpdated( 25 , BLOCK , GEOMETRY ) : NO_CHANGES
-propertyUpdated( 25 , BLOCK , GEOMETRY ) : SUCCESS
-propertyUpdated( 25 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 25 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 25 , BLOCK , EXPRS ) : SUCCESS
-objectCreated( 26 , PORT )
-propertyUpdated( 26 , PORT , SOURCE_BLOCK ) : SUCCESS
-propertyUpdated( 26 , PORT , PORT_KIND ) : SUCCESS
-objectCreated( 27 , PORT )
-propertyUpdated( 27 , PORT , SOURCE_BLOCK ) : SUCCESS
-propertyUpdated( 27 , PORT , PORT_KIND ) : SUCCESS
-propertyUpdated( 25 , BLOCK , INPUTS ) : SUCCESS
-objectCreated( 28 , PORT )
-propertyUpdated( 28 , PORT , SOURCE_BLOCK ) : SUCCESS
-propertyUpdated( 28 , PORT , PORT_KIND ) : SUCCESS
-propertyUpdated( 25 , BLOCK , OUTPUTS ) : SUCCESS
-propertyUpdated( 25 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 26 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 27 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 28 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 26 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 27 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 28 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 26 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 27 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 28 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 25 , BLOCK , STYLE ) : NO_CHANGES
-propertyUpdated( 25 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
-propertyUpdated( 25 , BLOCK , SIM_FUNCTION_API ) : SUCCESS
-propertyUpdated( 27 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 26 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 28 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 25 , BLOCK , STATE ) : NO_CHANGES
-propertyUpdated( 25 , BLOCK , DSTATE ) : NO_CHANGES
-propertyUpdated( 25 , BLOCK , ODSTATE ) : NO_CHANGES
-propertyUpdated( 25 , BLOCK , RPAR ) : SUCCESS
-propertyUpdated( 25 , BLOCK , IPAR ) : NO_CHANGES
-propertyUpdated( 25 , BLOCK , OPAR ) : NO_CHANGES
-propertyUpdated( 25 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 25 , BLOCK , SIM_DEP_UT ) : SUCCESS
-propertyUpdated( 25 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 25 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 25 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 25 , BLOCK , UID ) : NO_CHANGES
-propertyUpdated( 25 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
-Sum2 = BIGSOM_f("define");
-objectCreated( 29 , BLOCK )
-propertyUpdated( 29 , BLOCK , GEOMETRY ) : NO_CHANGES
-propertyUpdated( 29 , BLOCK , GEOMETRY ) : SUCCESS
-propertyUpdated( 29 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 29 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 29 , BLOCK , EXPRS ) : SUCCESS
-objectCreated( 30 , PORT )
-propertyUpdated( 30 , PORT , SOURCE_BLOCK ) : SUCCESS
-propertyUpdated( 30 , PORT , PORT_KIND ) : SUCCESS
+objectCreated( 30 , BLOCK )
+propertyUpdated( 30 , BLOCK , GEOMETRY ) : NO_CHANGES
+propertyUpdated( 30 , BLOCK , GEOMETRY ) : SUCCESS
+propertyUpdated( 30 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 30 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 30 , BLOCK , EXPRS ) : SUCCESS
 objectCreated( 31 , PORT )
 propertyUpdated( 31 , PORT , SOURCE_BLOCK ) : SUCCESS
 propertyUpdated( 31 , PORT , PORT_KIND ) : SUCCESS
-propertyUpdated( 29 , BLOCK , INPUTS ) : SUCCESS
 objectCreated( 32 , PORT )
 propertyUpdated( 32 , PORT , SOURCE_BLOCK ) : SUCCESS
 propertyUpdated( 32 , PORT , PORT_KIND ) : SUCCESS
-propertyUpdated( 29 , BLOCK , OUTPUTS ) : SUCCESS
-propertyUpdated( 29 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 30 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 30 , BLOCK , INPUTS ) : SUCCESS
+objectCreated( 33 , PORT )
+propertyUpdated( 33 , PORT , SOURCE_BLOCK ) : SUCCESS
+propertyUpdated( 33 , PORT , PORT_KIND ) : SUCCESS
+propertyUpdated( 30 , BLOCK , OUTPUTS ) : SUCCESS
+propertyUpdated( 30 , BLOCK , LABEL ) : NO_CHANGES
 propertyUpdated( 31 , PORT , IMPLICIT ) : NO_CHANGES
 propertyUpdated( 32 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 30 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 33 , PORT , IMPLICIT ) : NO_CHANGES
 propertyUpdated( 31 , PORT , STYLE ) : NO_CHANGES
 propertyUpdated( 32 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 30 , PORT , LABEL ) : NO_CHANGES
+propertyUpdated( 33 , PORT , STYLE ) : NO_CHANGES
 propertyUpdated( 31 , PORT , LABEL ) : NO_CHANGES
 propertyUpdated( 32 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 29 , BLOCK , STYLE ) : NO_CHANGES
-propertyUpdated( 29 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
-propertyUpdated( 29 , BLOCK , SIM_FUNCTION_API ) : SUCCESS
+propertyUpdated( 33 , PORT , LABEL ) : NO_CHANGES
+propertyUpdated( 30 , BLOCK , STYLE ) : NO_CHANGES
+propertyUpdated( 30 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
+propertyUpdated( 30 , BLOCK , SIM_FUNCTION_API ) : SUCCESS
 propertyUpdated( 31 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 30 , PORT , DATATYPE ) : SUCCESS
 propertyUpdated( 32 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 29 , BLOCK , STATE ) : NO_CHANGES
-propertyUpdated( 29 , BLOCK , DSTATE ) : NO_CHANGES
-propertyUpdated( 29 , BLOCK , ODSTATE ) : NO_CHANGES
-propertyUpdated( 29 , BLOCK , RPAR ) : SUCCESS
-propertyUpdated( 29 , BLOCK , IPAR ) : NO_CHANGES
-propertyUpdated( 29 , BLOCK , OPAR ) : NO_CHANGES
-propertyUpdated( 29 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 29 , BLOCK , SIM_DEP_UT ) : SUCCESS
-propertyUpdated( 29 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 29 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 29 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 29 , BLOCK , UID ) : NO_CHANGES
-propertyUpdated( 29 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
-l = scicos_link( from=[1 1 0],to=[2 1 1] ); // Connecting 'Sum1' to 'Sum2'
-objectCreated( 33 , LINK )
-propertyUpdated( 33 , LINK , CONTROL_POINTS ) : NO_CHANGES
-propertyUpdated( 33 , LINK , CONTROL_POINTS ) : NO_CHANGES
-propertyUpdated( 33 , LINK , LABEL ) : NO_CHANGES
-propertyUpdated( 33 , LINK , THICK ) : NO_CHANGES
-propertyUpdated( 33 , LINK , COLOR ) : NO_CHANGES
-propertyUpdated( 33 , LINK , KIND ) : NO_CHANGES
-// Assembling the elements, making 'sb' a SuperBlock
-d.objs(1) = Sum1;
+propertyUpdated( 33 , PORT , DATATYPE ) : SUCCESS
+propertyUpdated( 30 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 30 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 30 , BLOCK , ODSTATE ) : NO_CHANGES
+propertyUpdated( 30 , BLOCK , RPAR ) : SUCCESS
+propertyUpdated( 30 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 30 , BLOCK , OPAR ) : NO_CHANGES
+propertyUpdated( 30 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 30 , BLOCK , SIM_DEP_UT ) : SUCCESS
+propertyUpdated( 30 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 30 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 30 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 30 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 30 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
+Sum2 = BIGSOM_f("define");
 objectCreated( 34 , BLOCK )
-propertyUpdated( 34 , BLOCK , SIM_FUNCTION_API ) : SUCCESS
-propertyUpdated( 34 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
-propertyUpdated( 34 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
-propertyUpdated( 34 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 34 , BLOCK , UID ) : NO_CHANGES
-propertyUpdated( 34 , BLOCK , STYLE ) : NO_CHANGES
-propertyUpdated( 34 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , GEOMETRY ) : NO_CHANGES
 propertyUpdated( 34 , BLOCK , GEOMETRY ) : SUCCESS
 propertyUpdated( 34 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 34 , BLOCK , STATE ) : NO_CHANGES
-propertyUpdated( 34 , BLOCK , DSTATE ) : NO_CHANGES
-propertyUpdated( 34 , BLOCK , ODSTATE ) : NO_CHANGES
-propertyUpdated( 34 , BLOCK , RPAR ) : SUCCESS
-propertyUpdated( 34 , BLOCK , OPAR ) : NO_CHANGES
-propertyUpdated( 34 , BLOCK , SIM_DEP_UT ) : SUCCESS
-propertyUpdated( 34 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 34 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 34 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , ANGLE ) : NO_CHANGES
 propertyUpdated( 34 , BLOCK , EXPRS ) : SUCCESS
-propertyUpdated( 34 , BLOCK , EQUATIONS ) : NO_CHANGES
-propertyUpdated( 34 , BLOCK , PARENT_DIAGRAM ) : NO_CHANGES
 objectCreated( 35 , PORT )
-propertyUpdated( 35 , PORT , FIRING ) : NO_CHANGES
-propertyUpdated( 35 , PORT , PORT_KIND ) : SUCCESS
-propertyUpdated( 35 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 35 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 35 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 35 , PORT , DATATYPE ) : SUCCESS
 propertyUpdated( 35 , PORT , SOURCE_BLOCK ) : SUCCESS
-propertyUpdated( 35 , PORT , CONNECTED_SIGNALS ) : NO_CHANGES
+propertyUpdated( 35 , PORT , PORT_KIND ) : SUCCESS
 objectCreated( 36 , PORT )
-propertyUpdated( 36 , PORT , FIRING ) : NO_CHANGES
-propertyUpdated( 36 , PORT , PORT_KIND ) : SUCCESS
-propertyUpdated( 36 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 36 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 36 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 36 , PORT , DATATYPE ) : SUCCESS
 propertyUpdated( 36 , PORT , SOURCE_BLOCK ) : SUCCESS
-propertyUpdated( 36 , PORT , CONNECTED_SIGNALS ) : NO_CHANGES
+propertyUpdated( 36 , PORT , PORT_KIND ) : SUCCESS
 propertyUpdated( 34 , BLOCK , INPUTS ) : SUCCESS
 objectCreated( 37 , PORT )
-propertyUpdated( 37 , PORT , FIRING ) : NO_CHANGES
+propertyUpdated( 37 , PORT , SOURCE_BLOCK ) : SUCCESS
 propertyUpdated( 37 , PORT , PORT_KIND ) : SUCCESS
+propertyUpdated( 34 , BLOCK , OUTPUTS ) : SUCCESS
+propertyUpdated( 34 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 35 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 36 , PORT , IMPLICIT ) : NO_CHANGES
 propertyUpdated( 37 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 35 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 36 , PORT , STYLE ) : NO_CHANGES
 propertyUpdated( 37 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 35 , PORT , LABEL ) : NO_CHANGES
+propertyUpdated( 36 , PORT , LABEL ) : NO_CHANGES
 propertyUpdated( 37 , PORT , LABEL ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , STYLE ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
+propertyUpdated( 34 , BLOCK , SIM_FUNCTION_API ) : SUCCESS
+propertyUpdated( 35 , PORT , DATATYPE ) : SUCCESS
+propertyUpdated( 36 , PORT , DATATYPE ) : SUCCESS
 propertyUpdated( 37 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 37 , PORT , SOURCE_BLOCK ) : SUCCESS
-propertyUpdated( 37 , PORT , CONNECTED_SIGNALS ) : NO_CHANGES
-propertyUpdated( 34 , BLOCK , OUTPUTS ) : SUCCESS
-propertyUpdated( 34 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
-propertyUpdated( 34 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
-propertyUpdated( 34 , BLOCK , PARENT_BLOCK ) : NO_CHANGES
-propertyUpdated( 34 , BLOCK , CHILDREN ) : NO_CHANGES
-propertyUpdated( 34 , BLOCK , PARENT_DIAGRAM ) : SUCCESS
-propertyUpdated( 24 , DIAGRAM , CHILDREN ) : SUCCESS
-d.objs(2) = Sum2;
-objectCreated( 38 , BLOCK )
-propertyUpdated( 38 , BLOCK , SIM_FUNCTION_API ) : SUCCESS
-propertyUpdated( 38 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
-propertyUpdated( 38 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
-propertyUpdated( 38 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 38 , BLOCK , UID ) : NO_CHANGES
-propertyUpdated( 38 , BLOCK , STYLE ) : NO_CHANGES
-propertyUpdated( 38 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 38 , BLOCK , GEOMETRY ) : SUCCESS
-propertyUpdated( 38 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 38 , BLOCK , STATE ) : NO_CHANGES
-propertyUpdated( 38 , BLOCK , DSTATE ) : NO_CHANGES
-propertyUpdated( 38 , BLOCK , ODSTATE ) : NO_CHANGES
-propertyUpdated( 38 , BLOCK , RPAR ) : SUCCESS
-propertyUpdated( 38 , BLOCK , OPAR ) : NO_CHANGES
-propertyUpdated( 38 , BLOCK , SIM_DEP_UT ) : SUCCESS
-propertyUpdated( 38 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 38 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 38 , BLOCK , IPAR ) : NO_CHANGES
-propertyUpdated( 38 , BLOCK , EXPRS ) : SUCCESS
-propertyUpdated( 38 , BLOCK , EQUATIONS ) : NO_CHANGES
-propertyUpdated( 38 , BLOCK , PARENT_DIAGRAM ) : NO_CHANGES
-objectCreated( 39 , PORT )
-propertyUpdated( 39 , PORT , FIRING ) : NO_CHANGES
-propertyUpdated( 39 , PORT , PORT_KIND ) : SUCCESS
-propertyUpdated( 39 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 39 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 39 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 39 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 39 , PORT , SOURCE_BLOCK ) : SUCCESS
-propertyUpdated( 39 , PORT , CONNECTED_SIGNALS ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , ODSTATE ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , RPAR ) : SUCCESS
+propertyUpdated( 34 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , OPAR ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , SIM_DEP_UT ) : SUCCESS
+propertyUpdated( 34 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 34 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
+l = scicos_link( from=[1 1 0],to=[2 1 1] ); // Connecting 'Sum1' to 'Sum2'
+objectCreated( 38 , LINK )
+propertyUpdated( 38 , LINK , CONTROL_POINTS ) : NO_CHANGES
+propertyUpdated( 38 , LINK , CONTROL_POINTS ) : NO_CHANGES
+propertyUpdated( 38 , LINK , LABEL ) : NO_CHANGES
+propertyUpdated( 38 , LINK , THICK ) : NO_CHANGES
+propertyUpdated( 38 , LINK , COLOR ) : NO_CHANGES
+propertyUpdated( 38 , LINK , KIND ) : NO_CHANGES
+// Assembling the elements, making 'sb' a SuperBlock
+d.objs(1) = Sum1;
+objectCreated( 39 , BLOCK )
+propertyUpdated( 39 , BLOCK , SIM_FUNCTION_API ) : SUCCESS
+propertyUpdated( 39 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
+propertyUpdated( 39 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
+propertyUpdated( 39 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 39 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 39 , BLOCK , STYLE ) : NO_CHANGES
+propertyUpdated( 39 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 39 , BLOCK , GEOMETRY ) : SUCCESS
+propertyUpdated( 39 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 39 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 39 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 39 , BLOCK , ODSTATE ) : NO_CHANGES
+propertyUpdated( 39 , BLOCK , RPAR ) : SUCCESS
+propertyUpdated( 39 , BLOCK , OPAR ) : NO_CHANGES
+propertyUpdated( 39 , BLOCK , SIM_DEP_UT ) : SUCCESS
+propertyUpdated( 39 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 39 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 39 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 39 , BLOCK , EXPRS ) : SUCCESS
+propertyUpdated( 39 , BLOCK , EQUATIONS ) : NO_CHANGES
+propertyUpdated( 39 , BLOCK , PARENT_DIAGRAM ) : NO_CHANGES
 objectCreated( 40 , PORT )
 propertyUpdated( 40 , PORT , FIRING ) : NO_CHANGES
 propertyUpdated( 40 , PORT , PORT_KIND ) : SUCCESS
@@ -768,7 +868,6 @@ propertyUpdated( 40 , PORT , LABEL ) : NO_CHANGES
 propertyUpdated( 40 , PORT , DATATYPE ) : SUCCESS
 propertyUpdated( 40 , PORT , SOURCE_BLOCK ) : SUCCESS
 propertyUpdated( 40 , PORT , CONNECTED_SIGNALS ) : NO_CHANGES
-propertyUpdated( 38 , BLOCK , INPUTS ) : SUCCESS
 objectCreated( 41 , PORT )
 propertyUpdated( 41 , PORT , FIRING ) : NO_CHANGES
 propertyUpdated( 41 , PORT , PORT_KIND ) : SUCCESS
@@ -778,153 +877,139 @@ propertyUpdated( 41 , PORT , LABEL ) : NO_CHANGES
 propertyUpdated( 41 , PORT , DATATYPE ) : SUCCESS
 propertyUpdated( 41 , PORT , SOURCE_BLOCK ) : SUCCESS
 propertyUpdated( 41 , PORT , CONNECTED_SIGNALS ) : NO_CHANGES
-propertyUpdated( 38 , BLOCK , OUTPUTS ) : SUCCESS
-propertyUpdated( 38 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
-propertyUpdated( 38 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
-propertyUpdated( 38 , BLOCK , PARENT_BLOCK ) : NO_CHANGES
-propertyUpdated( 38 , BLOCK , CHILDREN ) : NO_CHANGES
-propertyUpdated( 34 , BLOCK , PARENT_DIAGRAM ) : SUCCESS
-propertyUpdated( 34 , BLOCK , PARENT_DIAGRAM ) : SUCCESS
-propertyUpdated( 38 , BLOCK , PARENT_DIAGRAM ) : SUCCESS
-propertyUpdated( 24 , DIAGRAM , CHILDREN ) : SUCCESS
+propertyUpdated( 39 , BLOCK , INPUTS ) : SUCCESS
+objectCreated( 42 , PORT )
+propertyUpdated( 42 , PORT , FIRING ) : NO_CHANGES
+propertyUpdated( 42 , PORT , PORT_KIND ) : SUCCESS
+propertyUpdated( 42 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 42 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 42 , PORT , LABEL ) : NO_CHANGES
+propertyUpdated( 42 , PORT , DATATYPE ) : SUCCESS
+propertyUpdated( 42 , PORT , SOURCE_BLOCK ) : SUCCESS
+propertyUpdated( 42 , PORT , CONNECTED_SIGNALS ) : NO_CHANGES
+propertyUpdated( 39 , BLOCK , OUTPUTS ) : SUCCESS
+propertyUpdated( 39 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
+propertyUpdated( 39 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+propertyUpdated( 39 , BLOCK , PARENT_BLOCK ) : NO_CHANGES
+propertyUpdated( 29 , DIAGRAM , CHILDREN ) : SUCCESS
+propertyUpdated( 39 , BLOCK , PARENT_DIAGRAM ) : SUCCESS
+d.objs(2) = Sum2;
+objectCreated( 43 , BLOCK )
+propertyUpdated( 43 , BLOCK , SIM_FUNCTION_API ) : SUCCESS
+propertyUpdated( 43 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
+propertyUpdated( 43 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
+propertyUpdated( 43 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 43 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 43 , BLOCK , STYLE ) : NO_CHANGES
+propertyUpdated( 43 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 43 , BLOCK , GEOMETRY ) : SUCCESS
+propertyUpdated( 43 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 43 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 43 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 43 , BLOCK , ODSTATE ) : NO_CHANGES
+propertyUpdated( 43 , BLOCK , RPAR ) : SUCCESS
+propertyUpdated( 43 , BLOCK , OPAR ) : NO_CHANGES
+propertyUpdated( 43 , BLOCK , SIM_DEP_UT ) : SUCCESS
+propertyUpdated( 43 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 43 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 43 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 43 , BLOCK , EXPRS ) : SUCCESS
+propertyUpdated( 43 , BLOCK , EQUATIONS ) : NO_CHANGES
+propertyUpdated( 43 , BLOCK , PARENT_DIAGRAM ) : NO_CHANGES
+objectCreated( 44 , PORT )
+propertyUpdated( 44 , PORT , FIRING ) : NO_CHANGES
+propertyUpdated( 44 , PORT , PORT_KIND ) : SUCCESS
+propertyUpdated( 44 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 44 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 44 , PORT , LABEL ) : NO_CHANGES
+propertyUpdated( 44 , PORT , DATATYPE ) : SUCCESS
+propertyUpdated( 44 , PORT , SOURCE_BLOCK ) : SUCCESS
+propertyUpdated( 44 , PORT , CONNECTED_SIGNALS ) : NO_CHANGES
+objectCreated( 45 , PORT )
+propertyUpdated( 45 , PORT , FIRING ) : NO_CHANGES
+propertyUpdated( 45 , PORT , PORT_KIND ) : SUCCESS
+propertyUpdated( 45 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 45 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 45 , PORT , LABEL ) : NO_CHANGES
+propertyUpdated( 45 , PORT , DATATYPE ) : SUCCESS
+propertyUpdated( 45 , PORT , SOURCE_BLOCK ) : SUCCESS
+propertyUpdated( 45 , PORT , CONNECTED_SIGNALS ) : NO_CHANGES
+propertyUpdated( 43 , BLOCK , INPUTS ) : SUCCESS
+objectCreated( 46 , PORT )
+propertyUpdated( 46 , PORT , FIRING ) : NO_CHANGES
+propertyUpdated( 46 , PORT , PORT_KIND ) : SUCCESS
+propertyUpdated( 46 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 46 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 46 , PORT , LABEL ) : NO_CHANGES
+propertyUpdated( 46 , PORT , DATATYPE ) : SUCCESS
+propertyUpdated( 46 , PORT , SOURCE_BLOCK ) : SUCCESS
+propertyUpdated( 46 , PORT , CONNECTED_SIGNALS ) : NO_CHANGES
+propertyUpdated( 43 , BLOCK , OUTPUTS ) : SUCCESS
+propertyUpdated( 43 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
+propertyUpdated( 43 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+propertyUpdated( 43 , BLOCK , PARENT_BLOCK ) : NO_CHANGES
+propertyUpdated( 29 , DIAGRAM , CHILDREN ) : SUCCESS
+propertyUpdated( 43 , BLOCK , PARENT_DIAGRAM ) : SUCCESS
 d.objs(3) = l;
-objectCreated( 42 , LINK )
-propertyUpdated( 42 , LINK , COLOR ) : NO_CHANGES
-propertyUpdated( 42 , LINK , KIND ) : NO_CHANGES
-propertyUpdated( 42 , LINK , LABEL ) : NO_CHANGES
-propertyUpdated( 42 , LINK , CONTROL_POINTS ) : NO_CHANGES
-propertyUpdated( 42 , LINK , THICK ) : NO_CHANGES
-propertyUpdated( 42 , LINK , PARENT_DIAGRAM ) : NO_CHANGES
-propertyUpdated( 42 , LINK , SOURCE_PORT ) : NO_CHANGES
-propertyUpdated( 42 , LINK , DESTINATION_PORT ) : NO_CHANGES
-propertyUpdated( 34 , BLOCK , PARENT_DIAGRAM ) : SUCCESS
-propertyUpdated( 38 , BLOCK , PARENT_DIAGRAM ) : SUCCESS
-propertyUpdated( 34 , BLOCK , PARENT_DIAGRAM ) : SUCCESS
-propertyUpdated( 38 , BLOCK , PARENT_DIAGRAM ) : SUCCESS
-propertyUpdated( 42 , LINK , PARENT_DIAGRAM ) : SUCCESS
-propertyUpdated( 24 , DIAGRAM , CHILDREN ) : SUCCESS
-propertyUpdated( 37 , PORT , CONNECTED_SIGNALS ) : SUCCESS
-propertyUpdated( 42 , LINK , SOURCE_PORT ) : SUCCESS
-propertyUpdated( 39 , PORT , CONNECTED_SIGNALS ) : SUCCESS
-propertyUpdated( 42 , LINK , DESTINATION_PORT ) : SUCCESS
+objectCreated( 47 , LINK )
+propertyUpdated( 47 , LINK , COLOR ) : NO_CHANGES
+propertyUpdated( 47 , LINK , KIND ) : NO_CHANGES
+propertyUpdated( 47 , LINK , LABEL ) : NO_CHANGES
+propertyUpdated( 47 , LINK , CONTROL_POINTS ) : NO_CHANGES
+propertyUpdated( 47 , LINK , THICK ) : NO_CHANGES
+propertyUpdated( 47 , LINK , PARENT_DIAGRAM ) : NO_CHANGES
+propertyUpdated( 47 , LINK , PARENT_BLOCK ) : NO_CHANGES
+propertyUpdated( 47 , LINK , SOURCE_PORT ) : NO_CHANGES
+propertyUpdated( 47 , LINK , DESTINATION_PORT ) : NO_CHANGES
+propertyUpdated( 29 , DIAGRAM , CHILDREN ) : SUCCESS
+propertyUpdated( 47 , LINK , PARENT_DIAGRAM ) : SUCCESS
+propertyUpdated( 42 , PORT , CONNECTED_SIGNALS ) : SUCCESS
+propertyUpdated( 47 , LINK , SOURCE_PORT ) : SUCCESS
+propertyUpdated( 44 , PORT , CONNECTED_SIGNALS ) : SUCCESS
+propertyUpdated( 47 , LINK , DESTINATION_PORT ) : SUCCESS
 sb.model.rpar = d;
-propertyUpdated( 23 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
-propertyUpdated( 23 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
-propertyUpdated( 23 , BLOCK , STATE ) : NO_CHANGES
-propertyUpdated( 23 , BLOCK , DSTATE ) : NO_CHANGES
-propertyUpdated( 23 , BLOCK , ODSTATE ) : NO_CHANGES
-propertyUpdated( 23 , BLOCK , CHILDREN ) : SUCCESS
-propertyUpdated( 34 , BLOCK , PARENT_BLOCK ) : SUCCESS
-propertyUpdated( 38 , BLOCK , PARENT_BLOCK ) : SUCCESS
-propertyUpdated( 23 , BLOCK , IPAR ) : NO_CHANGES
-propertyUpdated( 23 , BLOCK , OPAR ) : NO_CHANGES
-propertyUpdated( 23 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 23 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
-propertyUpdated( 23 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 23 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 23 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 23 , BLOCK , UID ) : NO_CHANGES
-// Main diagram
-scs_m = scicos_diagram();
-objectCreated( 43 , DIAGRAM )
-propertyUpdated( 43 , DIAGRAM , TITLE ) : NO_CHANGES
-propertyUpdated( 43 , DIAGRAM , PATH ) : NO_CHANGES
-propertyUpdated( 43 , DIAGRAM , PROPERTIES ) : NO_CHANGES
-propertyUpdated( 43 , DIAGRAM , PROPERTIES ) : NO_CHANGES
-propertyUpdated( 43 , DIAGRAM , CONTEXT ) : NO_CHANGES
-propertyUpdated( 43 , DIAGRAM , CHILDREN ) : NO_CHANGES
-propertyUpdated( 43 , DIAGRAM , VERSION_NUMBER ) : NO_CHANGES
-scs_m.objs(1) = sb;
-objectCreated( 44 , BLOCK )
-propertyUpdated( 44 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
-propertyUpdated( 44 , BLOCK , INTERFACE_FUNCTION ) : NO_CHANGES
-propertyUpdated( 44 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
-propertyUpdated( 44 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 44 , BLOCK , UID ) : NO_CHANGES
-propertyUpdated( 44 , BLOCK , STYLE ) : NO_CHANGES
-propertyUpdated( 44 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 44 , BLOCK , GEOMETRY ) : NO_CHANGES
-propertyUpdated( 44 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 44 , BLOCK , STATE ) : NO_CHANGES
-propertyUpdated( 44 , BLOCK , DSTATE ) : NO_CHANGES
-propertyUpdated( 44 , BLOCK , ODSTATE ) : NO_CHANGES
-propertyUpdated( 44 , BLOCK , RPAR ) : NO_CHANGES
-propertyUpdated( 44 , BLOCK , OPAR ) : NO_CHANGES
-propertyUpdated( 44 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
-propertyUpdated( 44 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 44 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 44 , BLOCK , IPAR ) : NO_CHANGES
-propertyUpdated( 44 , BLOCK , EXPRS ) : NO_CHANGES
-propertyUpdated( 44 , BLOCK , EQUATIONS ) : NO_CHANGES
-propertyUpdated( 44 , BLOCK , PARENT_DIAGRAM ) : NO_CHANGES
-propertyUpdated( 44 , BLOCK , INPUTS ) : NO_CHANGES
-propertyUpdated( 44 , BLOCK , OUTPUTS ) : NO_CHANGES
-propertyUpdated( 44 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
-propertyUpdated( 44 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
-propertyUpdated( 44 , BLOCK , PARENT_BLOCK ) : NO_CHANGES
-objectCreated( 45 , DIAGRAM )
-propertyUpdated( 45 , DIAGRAM , TITLE ) : NO_CHANGES
-propertyUpdated( 45 , DIAGRAM , PATH ) : NO_CHANGES
-propertyUpdated( 45 , DIAGRAM , VERSION_NUMBER ) : NO_CHANGES
-propertyUpdated( 45 , DIAGRAM , PROPERTIES ) : NO_CHANGES
-propertyUpdated( 45 , DIAGRAM , CONTEXT ) : NO_CHANGES
-objectCreated( 46 , BLOCK )
-propertyUpdated( 46 , BLOCK , SIM_FUNCTION_API ) : SUCCESS
-propertyUpdated( 46 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
-propertyUpdated( 46 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
-propertyUpdated( 46 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 46 , BLOCK , UID ) : NO_CHANGES
-propertyUpdated( 46 , BLOCK , STYLE ) : NO_CHANGES
-propertyUpdated( 46 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 46 , BLOCK , GEOMETRY ) : SUCCESS
-propertyUpdated( 46 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 46 , BLOCK , STATE ) : NO_CHANGES
-propertyUpdated( 46 , BLOCK , DSTATE ) : NO_CHANGES
-propertyUpdated( 46 , BLOCK , ODSTATE ) : NO_CHANGES
-propertyUpdated( 46 , BLOCK , RPAR ) : SUCCESS
-propertyUpdated( 46 , BLOCK , OPAR ) : NO_CHANGES
-propertyUpdated( 46 , BLOCK , SIM_DEP_UT ) : SUCCESS
-propertyUpdated( 46 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 46 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 46 , BLOCK , IPAR ) : NO_CHANGES
-propertyUpdated( 46 , BLOCK , EXPRS ) : SUCCESS
-propertyUpdated( 46 , BLOCK , EQUATIONS ) : NO_CHANGES
-propertyUpdated( 46 , BLOCK , PARENT_DIAGRAM ) : SUCCESS
-objectCreated( 47 , PORT )
-propertyUpdated( 47 , PORT , FIRING ) : NO_CHANGES
-propertyUpdated( 47 , PORT , PORT_KIND ) : SUCCESS
-propertyUpdated( 47 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 47 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 47 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 47 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 47 , PORT , SOURCE_BLOCK ) : SUCCESS
-propertyUpdated( 47 , PORT , CONNECTED_SIGNALS ) : NO_CHANGES
-objectCreated( 48 , PORT )
-propertyUpdated( 48 , PORT , FIRING ) : NO_CHANGES
-propertyUpdated( 48 , PORT , PORT_KIND ) : SUCCESS
-propertyUpdated( 48 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 48 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 48 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 48 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 48 , PORT , SOURCE_BLOCK ) : SUCCESS
-propertyUpdated( 48 , PORT , CONNECTED_SIGNALS ) : NO_CHANGES
-propertyUpdated( 46 , BLOCK , INPUTS ) : SUCCESS
-objectCreated( 49 , PORT )
-propertyUpdated( 49 , PORT , FIRING ) : NO_CHANGES
-propertyUpdated( 49 , PORT , PORT_KIND ) : SUCCESS
-propertyUpdated( 49 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 49 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 49 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 49 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 49 , PORT , SOURCE_BLOCK ) : SUCCESS
-objectCreated( 50 , LINK )
-propertyUpdated( 50 , LINK , COLOR ) : NO_CHANGES
-propertyUpdated( 50 , LINK , KIND ) : NO_CHANGES
-propertyUpdated( 50 , LINK , LABEL ) : NO_CHANGES
-propertyUpdated( 50 , LINK , CONTROL_POINTS ) : NO_CHANGES
-propertyUpdated( 50 , LINK , THICK ) : NO_CHANGES
-propertyUpdated( 50 , LINK , PARENT_DIAGRAM ) : SUCCESS
-propertyUpdated( 50 , LINK , SOURCE_PORT ) : SUCCESS
+propertyUpdated( 28 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
+propertyUpdated( 28 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
+propertyUpdated( 28 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 28 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 28 , BLOCK , ODSTATE ) : NO_CHANGES
+objectCreated( 48 , DIAGRAM )
+propertyUpdated( 48 , DIAGRAM , TITLE ) : NO_CHANGES
+propertyUpdated( 48 , DIAGRAM , PATH ) : NO_CHANGES
+propertyUpdated( 48 , DIAGRAM , VERSION_NUMBER ) : NO_CHANGES
+propertyUpdated( 48 , DIAGRAM , PROPERTIES ) : NO_CHANGES
+propertyUpdated( 48 , DIAGRAM , CONTEXT ) : NO_CHANGES
+objectCreated( 49 , BLOCK )
+propertyUpdated( 49 , BLOCK , SIM_FUNCTION_API ) : SUCCESS
+propertyUpdated( 49 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
+propertyUpdated( 49 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
+propertyUpdated( 49 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 49 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 49 , BLOCK , STYLE ) : NO_CHANGES
+propertyUpdated( 49 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 49 , BLOCK , GEOMETRY ) : SUCCESS
+propertyUpdated( 49 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 49 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 49 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 49 , BLOCK , ODSTATE ) : NO_CHANGES
+propertyUpdated( 49 , BLOCK , RPAR ) : SUCCESS
+propertyUpdated( 49 , BLOCK , OPAR ) : NO_CHANGES
+propertyUpdated( 49 , BLOCK , SIM_DEP_UT ) : SUCCESS
+propertyUpdated( 49 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 49 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 49 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 49 , BLOCK , EXPRS ) : SUCCESS
+propertyUpdated( 49 , BLOCK , EQUATIONS ) : NO_CHANGES
+propertyUpdated( 49 , BLOCK , PARENT_DIAGRAM ) : NO_CHANGES
+objectCreated( 50 , PORT )
+propertyUpdated( 50 , PORT , FIRING ) : NO_CHANGES
+propertyUpdated( 50 , PORT , PORT_KIND ) : SUCCESS
+propertyUpdated( 50 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 50 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 50 , PORT , LABEL ) : NO_CHANGES
+propertyUpdated( 50 , PORT , DATATYPE ) : SUCCESS
+propertyUpdated( 50 , PORT , SOURCE_BLOCK ) : SUCCESS
+propertyUpdated( 50 , PORT , CONNECTED_SIGNALS ) : NO_CHANGES
 objectCreated( 51 , PORT )
 propertyUpdated( 51 , PORT , FIRING ) : NO_CHANGES
 propertyUpdated( 51 , PORT , PORT_KIND ) : SUCCESS
@@ -932,38 +1017,44 @@ propertyUpdated( 51 , PORT , IMPLICIT ) : NO_CHANGES
 propertyUpdated( 51 , PORT , STYLE ) : NO_CHANGES
 propertyUpdated( 51 , PORT , LABEL ) : NO_CHANGES
 propertyUpdated( 51 , PORT , DATATYPE ) : SUCCESS
-objectCreated( 52 , BLOCK )
-propertyUpdated( 52 , BLOCK , SIM_FUNCTION_API ) : SUCCESS
-propertyUpdated( 52 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
-propertyUpdated( 52 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
-propertyUpdated( 52 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 52 , BLOCK , UID ) : NO_CHANGES
-propertyUpdated( 52 , BLOCK , STYLE ) : NO_CHANGES
-propertyUpdated( 52 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 52 , BLOCK , GEOMETRY ) : SUCCESS
-propertyUpdated( 52 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 52 , BLOCK , STATE ) : NO_CHANGES
-propertyUpdated( 52 , BLOCK , DSTATE ) : NO_CHANGES
-propertyUpdated( 52 , BLOCK , ODSTATE ) : NO_CHANGES
-propertyUpdated( 52 , BLOCK , RPAR ) : SUCCESS
-propertyUpdated( 52 , BLOCK , OPAR ) : NO_CHANGES
-propertyUpdated( 52 , BLOCK , SIM_DEP_UT ) : SUCCESS
-propertyUpdated( 52 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 52 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 52 , BLOCK , IPAR ) : NO_CHANGES
-propertyUpdated( 52 , BLOCK , EXPRS ) : SUCCESS
-propertyUpdated( 52 , BLOCK , EQUATIONS ) : NO_CHANGES
-propertyUpdated( 52 , BLOCK , PARENT_DIAGRAM ) : SUCCESS
-objectCreated( 53 , PORT )
-propertyUpdated( 53 , PORT , FIRING ) : NO_CHANGES
-propertyUpdated( 53 , PORT , PORT_KIND ) : SUCCESS
-propertyUpdated( 53 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 53 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 53 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 53 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 53 , PORT , SOURCE_BLOCK ) : SUCCESS
-propertyUpdated( 53 , PORT , CONNECTED_SIGNALS ) : NO_CHANGES
-propertyUpdated( 52 , BLOCK , INPUTS ) : SUCCESS
+propertyUpdated( 51 , PORT , SOURCE_BLOCK ) : SUCCESS
+propertyUpdated( 51 , PORT , CONNECTED_SIGNALS ) : NO_CHANGES
+propertyUpdated( 49 , BLOCK , INPUTS ) : SUCCESS
+objectCreated( 52 , PORT )
+propertyUpdated( 52 , PORT , FIRING ) : NO_CHANGES
+propertyUpdated( 52 , PORT , PORT_KIND ) : SUCCESS
+propertyUpdated( 52 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 52 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 52 , PORT , LABEL ) : NO_CHANGES
+propertyUpdated( 52 , PORT , DATATYPE ) : SUCCESS
+propertyUpdated( 52 , PORT , SOURCE_BLOCK ) : SUCCESS
+propertyUpdated( 52 , PORT , CONNECTED_SIGNALS ) : NO_CHANGES
+propertyUpdated( 49 , BLOCK , OUTPUTS ) : SUCCESS
+propertyUpdated( 49 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
+propertyUpdated( 49 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+propertyUpdated( 49 , BLOCK , PARENT_BLOCK ) : NO_CHANGES
+objectCreated( 53 , BLOCK )
+propertyUpdated( 53 , BLOCK , SIM_FUNCTION_API ) : SUCCESS
+propertyUpdated( 53 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
+propertyUpdated( 53 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
+propertyUpdated( 53 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 53 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 53 , BLOCK , STYLE ) : NO_CHANGES
+propertyUpdated( 53 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 53 , BLOCK , GEOMETRY ) : SUCCESS
+propertyUpdated( 53 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 53 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 53 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 53 , BLOCK , ODSTATE ) : NO_CHANGES
+propertyUpdated( 53 , BLOCK , RPAR ) : SUCCESS
+propertyUpdated( 53 , BLOCK , OPAR ) : NO_CHANGES
+propertyUpdated( 53 , BLOCK , SIM_DEP_UT ) : SUCCESS
+propertyUpdated( 53 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 53 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 53 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 53 , BLOCK , EXPRS ) : SUCCESS
+propertyUpdated( 53 , BLOCK , EQUATIONS ) : NO_CHANGES
+propertyUpdated( 53 , BLOCK , PARENT_DIAGRAM ) : NO_CHANGES
 objectCreated( 54 , PORT )
 propertyUpdated( 54 , PORT , FIRING ) : NO_CHANGES
 propertyUpdated( 54 , PORT , PORT_KIND ) : SUCCESS
@@ -973,30 +1064,248 @@ propertyUpdated( 54 , PORT , LABEL ) : NO_CHANGES
 propertyUpdated( 54 , PORT , DATATYPE ) : SUCCESS
 propertyUpdated( 54 , PORT , SOURCE_BLOCK ) : SUCCESS
 propertyUpdated( 54 , PORT , CONNECTED_SIGNALS ) : NO_CHANGES
-propertyUpdated( 52 , BLOCK , OUTPUTS ) : SUCCESS
-propertyUpdated( 52 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
-propertyUpdated( 52 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
-propertyUpdated( 52 , BLOCK , PARENT_BLOCK ) : SUCCESS
-propertyUpdated( 52 , BLOCK , CHILDREN ) : NO_CHANGES
-propertyUpdated( 51 , PORT , SOURCE_BLOCK ) : SUCCESS
-propertyUpdated( 51 , PORT , CONNECTED_SIGNALS ) : SUCCESS
-propertyUpdated( 50 , LINK , DESTINATION_PORT ) : SUCCESS
-propertyUpdated( 49 , PORT , CONNECTED_SIGNALS ) : SUCCESS
-propertyUpdated( 46 , BLOCK , OUTPUTS ) : SUCCESS
-propertyUpdated( 46 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
-propertyUpdated( 46 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
-propertyUpdated( 46 , BLOCK , PARENT_BLOCK ) : SUCCESS
-propertyUpdated( 46 , BLOCK , CHILDREN ) : NO_CHANGES
-propertyUpdated( 45 , DIAGRAM , CHILDREN ) : SUCCESS
-propertyUpdated( 44 , BLOCK , CHILDREN ) : SUCCESS
-propertyUpdated( 49 , PORT , CONNECTED_SIGNALS ) : SUCCESS
-propertyUpdated( 49 , PORT , CONNECTED_SIGNALS ) : SUCCESS
-propertyUpdated( 50 , LINK , SOURCE_PORT ) : NO_CHANGES
-propertyUpdated( 51 , PORT , CONNECTED_SIGNALS ) : SUCCESS
-propertyUpdated( 51 , PORT , CONNECTED_SIGNALS ) : SUCCESS
-propertyUpdated( 50 , LINK , DESTINATION_PORT ) : NO_CHANGES
-propertyUpdated( 44 , BLOCK , PARENT_DIAGRAM ) : SUCCESS
-propertyUpdated( 43 , DIAGRAM , CHILDREN ) : SUCCESS
+objectCreated( 55 , PORT )
+propertyUpdated( 55 , PORT , FIRING ) : NO_CHANGES
+propertyUpdated( 55 , PORT , PORT_KIND ) : SUCCESS
+propertyUpdated( 55 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 55 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 55 , PORT , LABEL ) : NO_CHANGES
+propertyUpdated( 55 , PORT , DATATYPE ) : SUCCESS
+propertyUpdated( 55 , PORT , SOURCE_BLOCK ) : SUCCESS
+propertyUpdated( 55 , PORT , CONNECTED_SIGNALS ) : NO_CHANGES
+propertyUpdated( 53 , BLOCK , INPUTS ) : SUCCESS
+objectCreated( 56 , PORT )
+propertyUpdated( 56 , PORT , FIRING ) : NO_CHANGES
+propertyUpdated( 56 , PORT , PORT_KIND ) : SUCCESS
+propertyUpdated( 56 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 56 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 56 , PORT , LABEL ) : NO_CHANGES
+propertyUpdated( 56 , PORT , DATATYPE ) : SUCCESS
+propertyUpdated( 56 , PORT , SOURCE_BLOCK ) : SUCCESS
+propertyUpdated( 56 , PORT , CONNECTED_SIGNALS ) : NO_CHANGES
+propertyUpdated( 53 , BLOCK , OUTPUTS ) : SUCCESS
+propertyUpdated( 53 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
+propertyUpdated( 53 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+propertyUpdated( 53 , BLOCK , PARENT_BLOCK ) : NO_CHANGES
+objectCreated( 57 , LINK )
+propertyUpdated( 57 , LINK , COLOR ) : NO_CHANGES
+propertyUpdated( 57 , LINK , KIND ) : NO_CHANGES
+propertyUpdated( 57 , LINK , LABEL ) : NO_CHANGES
+propertyUpdated( 57 , LINK , CONTROL_POINTS ) : NO_CHANGES
+propertyUpdated( 57 , LINK , THICK ) : NO_CHANGES
+propertyUpdated( 57 , LINK , PARENT_DIAGRAM ) : NO_CHANGES
+propertyUpdated( 57 , LINK , PARENT_BLOCK ) : NO_CHANGES
+propertyUpdated( 57 , LINK , SOURCE_PORT ) : NO_CHANGES
+propertyUpdated( 57 , LINK , DESTINATION_PORT ) : NO_CHANGES
+propertyUpdated( 48 , DIAGRAM , CHILDREN ) : SUCCESS
+propertyUpdated( 49 , BLOCK , PARENT_DIAGRAM ) : SUCCESS
+propertyUpdated( 53 , BLOCK , PARENT_DIAGRAM ) : SUCCESS
+propertyUpdated( 57 , LINK , PARENT_DIAGRAM ) : SUCCESS
+propertyUpdated( 52 , PORT , CONNECTED_SIGNALS ) : SUCCESS
+propertyUpdated( 57 , LINK , SOURCE_PORT ) : SUCCESS
+propertyUpdated( 54 , PORT , CONNECTED_SIGNALS ) : SUCCESS
+propertyUpdated( 57 , LINK , DESTINATION_PORT ) : SUCCESS
+propertyUpdated( 28 , BLOCK , CHILDREN ) : SUCCESS
+propertyUpdated( 49 , BLOCK , PARENT_BLOCK ) : SUCCESS
+propertyUpdated( 53 , BLOCK , PARENT_BLOCK ) : SUCCESS
+propertyUpdated( 57 , LINK , PARENT_BLOCK ) : SUCCESS
+propertyUpdated( 28 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 28 , BLOCK , OPAR ) : NO_CHANGES
+propertyUpdated( 28 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 28 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
+propertyUpdated( 28 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 28 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 28 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 28 , BLOCK , UID ) : NO_CHANGES
+// Main diagram
+scs_m = scicos_diagram();
+objectCreated( 58 , DIAGRAM )
+propertyUpdated( 58 , DIAGRAM , TITLE ) : NO_CHANGES
+propertyUpdated( 58 , DIAGRAM , PATH ) : NO_CHANGES
+propertyUpdated( 58 , DIAGRAM , PROPERTIES ) : NO_CHANGES
+propertyUpdated( 58 , DIAGRAM , PROPERTIES ) : NO_CHANGES
+propertyUpdated( 58 , DIAGRAM , CONTEXT ) : NO_CHANGES
+propertyUpdated( 58 , DIAGRAM , CHILDREN ) : NO_CHANGES
+propertyUpdated( 58 , DIAGRAM , VERSION_NUMBER ) : NO_CHANGES
+scs_m.objs(1) = sb;
+objectCreated( 59 , BLOCK )
+propertyUpdated( 59 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
+propertyUpdated( 59 , BLOCK , INTERFACE_FUNCTION ) : NO_CHANGES
+propertyUpdated( 59 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
+propertyUpdated( 59 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 59 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 59 , BLOCK , STYLE ) : NO_CHANGES
+propertyUpdated( 59 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 59 , BLOCK , GEOMETRY ) : NO_CHANGES
+propertyUpdated( 59 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 59 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 59 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 59 , BLOCK , ODSTATE ) : NO_CHANGES
+propertyUpdated( 59 , BLOCK , RPAR ) : NO_CHANGES
+propertyUpdated( 59 , BLOCK , OPAR ) : NO_CHANGES
+propertyUpdated( 59 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
+propertyUpdated( 59 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 59 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 59 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 59 , BLOCK , EXPRS ) : NO_CHANGES
+propertyUpdated( 59 , BLOCK , EQUATIONS ) : NO_CHANGES
+propertyUpdated( 59 , BLOCK , PARENT_DIAGRAM ) : NO_CHANGES
+propertyUpdated( 59 , BLOCK , INPUTS ) : NO_CHANGES
+propertyUpdated( 59 , BLOCK , OUTPUTS ) : NO_CHANGES
+propertyUpdated( 59 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
+propertyUpdated( 59 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+propertyUpdated( 59 , BLOCK , PARENT_BLOCK ) : NO_CHANGES
+propertyUpdated( 59 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
+propertyUpdated( 59 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
+propertyUpdated( 59 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 59 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 59 , BLOCK , ODSTATE ) : NO_CHANGES
+objectCreated( 60 , DIAGRAM )
+propertyUpdated( 60 , DIAGRAM , TITLE ) : NO_CHANGES
+propertyUpdated( 60 , DIAGRAM , PATH ) : NO_CHANGES
+propertyUpdated( 60 , DIAGRAM , VERSION_NUMBER ) : NO_CHANGES
+propertyUpdated( 60 , DIAGRAM , PROPERTIES ) : NO_CHANGES
+propertyUpdated( 60 , DIAGRAM , CONTEXT ) : NO_CHANGES
+objectCreated( 61 , BLOCK )
+propertyUpdated( 61 , BLOCK , SIM_FUNCTION_API ) : SUCCESS
+propertyUpdated( 61 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
+propertyUpdated( 61 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
+propertyUpdated( 61 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 61 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 61 , BLOCK , STYLE ) : NO_CHANGES
+propertyUpdated( 61 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 61 , BLOCK , GEOMETRY ) : SUCCESS
+propertyUpdated( 61 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 61 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 61 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 61 , BLOCK , ODSTATE ) : NO_CHANGES
+propertyUpdated( 61 , BLOCK , RPAR ) : SUCCESS
+propertyUpdated( 61 , BLOCK , OPAR ) : NO_CHANGES
+propertyUpdated( 61 , BLOCK , SIM_DEP_UT ) : SUCCESS
+propertyUpdated( 61 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 61 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 61 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 61 , BLOCK , EXPRS ) : SUCCESS
+propertyUpdated( 61 , BLOCK , EQUATIONS ) : NO_CHANGES
+propertyUpdated( 61 , BLOCK , PARENT_DIAGRAM ) : NO_CHANGES
+objectCreated( 62 , PORT )
+propertyUpdated( 62 , PORT , FIRING ) : NO_CHANGES
+propertyUpdated( 62 , PORT , PORT_KIND ) : SUCCESS
+propertyUpdated( 62 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 62 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 62 , PORT , LABEL ) : NO_CHANGES
+propertyUpdated( 62 , PORT , DATATYPE ) : SUCCESS
+propertyUpdated( 62 , PORT , SOURCE_BLOCK ) : SUCCESS
+propertyUpdated( 62 , PORT , CONNECTED_SIGNALS ) : NO_CHANGES
+objectCreated( 63 , PORT )
+propertyUpdated( 63 , PORT , FIRING ) : NO_CHANGES
+propertyUpdated( 63 , PORT , PORT_KIND ) : SUCCESS
+propertyUpdated( 63 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 63 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 63 , PORT , LABEL ) : NO_CHANGES
+propertyUpdated( 63 , PORT , DATATYPE ) : SUCCESS
+propertyUpdated( 63 , PORT , SOURCE_BLOCK ) : SUCCESS
+propertyUpdated( 63 , PORT , CONNECTED_SIGNALS ) : NO_CHANGES
+propertyUpdated( 61 , BLOCK , INPUTS ) : SUCCESS
+objectCreated( 64 , PORT )
+propertyUpdated( 64 , PORT , FIRING ) : NO_CHANGES
+propertyUpdated( 64 , PORT , PORT_KIND ) : SUCCESS
+propertyUpdated( 64 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 64 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 64 , PORT , LABEL ) : NO_CHANGES
+propertyUpdated( 64 , PORT , DATATYPE ) : SUCCESS
+propertyUpdated( 64 , PORT , SOURCE_BLOCK ) : SUCCESS
+propertyUpdated( 64 , PORT , CONNECTED_SIGNALS ) : NO_CHANGES
+propertyUpdated( 61 , BLOCK , OUTPUTS ) : SUCCESS
+propertyUpdated( 61 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
+propertyUpdated( 61 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+propertyUpdated( 61 , BLOCK , PARENT_BLOCK ) : NO_CHANGES
+objectCreated( 65 , BLOCK )
+propertyUpdated( 65 , BLOCK , SIM_FUNCTION_API ) : SUCCESS
+propertyUpdated( 65 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
+propertyUpdated( 65 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
+propertyUpdated( 65 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 65 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 65 , BLOCK , STYLE ) : NO_CHANGES
+propertyUpdated( 65 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 65 , BLOCK , GEOMETRY ) : SUCCESS
+propertyUpdated( 65 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 65 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 65 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 65 , BLOCK , ODSTATE ) : NO_CHANGES
+propertyUpdated( 65 , BLOCK , RPAR ) : SUCCESS
+propertyUpdated( 65 , BLOCK , OPAR ) : NO_CHANGES
+propertyUpdated( 65 , BLOCK , SIM_DEP_UT ) : SUCCESS
+propertyUpdated( 65 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 65 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 65 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 65 , BLOCK , EXPRS ) : SUCCESS
+propertyUpdated( 65 , BLOCK , EQUATIONS ) : NO_CHANGES
+propertyUpdated( 65 , BLOCK , PARENT_DIAGRAM ) : NO_CHANGES
+objectCreated( 66 , PORT )
+propertyUpdated( 66 , PORT , FIRING ) : NO_CHANGES
+propertyUpdated( 66 , PORT , PORT_KIND ) : SUCCESS
+propertyUpdated( 66 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 66 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 66 , PORT , LABEL ) : NO_CHANGES
+propertyUpdated( 66 , PORT , DATATYPE ) : SUCCESS
+propertyUpdated( 66 , PORT , SOURCE_BLOCK ) : SUCCESS
+propertyUpdated( 66 , PORT , CONNECTED_SIGNALS ) : NO_CHANGES
+objectCreated( 67 , PORT )
+propertyUpdated( 67 , PORT , FIRING ) : NO_CHANGES
+propertyUpdated( 67 , PORT , PORT_KIND ) : SUCCESS
+propertyUpdated( 67 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 67 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 67 , PORT , LABEL ) : NO_CHANGES
+propertyUpdated( 67 , PORT , DATATYPE ) : SUCCESS
+propertyUpdated( 67 , PORT , SOURCE_BLOCK ) : SUCCESS
+propertyUpdated( 67 , PORT , CONNECTED_SIGNALS ) : NO_CHANGES
+propertyUpdated( 65 , BLOCK , INPUTS ) : SUCCESS
+objectCreated( 68 , PORT )
+propertyUpdated( 68 , PORT , FIRING ) : NO_CHANGES
+propertyUpdated( 68 , PORT , PORT_KIND ) : SUCCESS
+propertyUpdated( 68 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 68 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 68 , PORT , LABEL ) : NO_CHANGES
+propertyUpdated( 68 , PORT , DATATYPE ) : SUCCESS
+propertyUpdated( 68 , PORT , SOURCE_BLOCK ) : SUCCESS
+propertyUpdated( 68 , PORT , CONNECTED_SIGNALS ) : NO_CHANGES
+propertyUpdated( 65 , BLOCK , OUTPUTS ) : SUCCESS
+propertyUpdated( 65 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
+propertyUpdated( 65 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+propertyUpdated( 65 , BLOCK , PARENT_BLOCK ) : NO_CHANGES
+objectCreated( 69 , LINK )
+propertyUpdated( 69 , LINK , COLOR ) : NO_CHANGES
+propertyUpdated( 69 , LINK , KIND ) : NO_CHANGES
+propertyUpdated( 69 , LINK , LABEL ) : NO_CHANGES
+propertyUpdated( 69 , LINK , CONTROL_POINTS ) : NO_CHANGES
+propertyUpdated( 69 , LINK , THICK ) : NO_CHANGES
+propertyUpdated( 69 , LINK , PARENT_DIAGRAM ) : NO_CHANGES
+propertyUpdated( 69 , LINK , PARENT_BLOCK ) : NO_CHANGES
+propertyUpdated( 69 , LINK , SOURCE_PORT ) : NO_CHANGES
+propertyUpdated( 69 , LINK , DESTINATION_PORT ) : NO_CHANGES
+propertyUpdated( 60 , DIAGRAM , CHILDREN ) : SUCCESS
+propertyUpdated( 61 , BLOCK , PARENT_DIAGRAM ) : SUCCESS
+propertyUpdated( 65 , BLOCK , PARENT_DIAGRAM ) : SUCCESS
+propertyUpdated( 69 , LINK , PARENT_DIAGRAM ) : SUCCESS
+propertyUpdated( 64 , PORT , CONNECTED_SIGNALS ) : SUCCESS
+propertyUpdated( 69 , LINK , SOURCE_PORT ) : SUCCESS
+propertyUpdated( 66 , PORT , CONNECTED_SIGNALS ) : SUCCESS
+propertyUpdated( 69 , LINK , DESTINATION_PORT ) : SUCCESS
+propertyUpdated( 59 , BLOCK , CHILDREN ) : SUCCESS
+propertyUpdated( 61 , BLOCK , PARENT_BLOCK ) : SUCCESS
+propertyUpdated( 65 , BLOCK , PARENT_BLOCK ) : SUCCESS
+propertyUpdated( 69 , LINK , PARENT_BLOCK ) : SUCCESS
+propertyUpdated( 59 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 59 , BLOCK , OPAR ) : NO_CHANGES
+propertyUpdated( 59 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 59 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
+propertyUpdated( 59 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 59 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 59 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 59 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 58 , DIAGRAM , CHILDREN ) : SUCCESS
+propertyUpdated( 59 , BLOCK , PARENT_DIAGRAM ) : SUCCESS
 scs_m.objs(1).model.rpar // Checking 'sb' elements
  ans  =
 wpar = []
@@ -1113,174 +1422,191 @@ Link    :
           from: 1 1 0
           to: 2 1 1
 l = list(1); l(1) = scs_m; // Cloning 'scs_m'
-objectDeleted( 33 , LINK )
-objectCreated( 55 , DIAGRAM )
-propertyUpdated( 55 , DIAGRAM , TITLE ) : NO_CHANGES
-propertyUpdated( 55 , DIAGRAM , PATH ) : NO_CHANGES
-propertyUpdated( 55 , DIAGRAM , VERSION_NUMBER ) : NO_CHANGES
-propertyUpdated( 55 , DIAGRAM , PROPERTIES ) : NO_CHANGES
-propertyUpdated( 55 , DIAGRAM , CONTEXT ) : NO_CHANGES
-objectCreated( 56 , BLOCK )
-propertyUpdated( 56 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
-propertyUpdated( 56 , BLOCK , INTERFACE_FUNCTION ) : NO_CHANGES
-propertyUpdated( 56 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
-propertyUpdated( 56 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-prop