Xcos MVC: add a gateway to configure logging 83/15683/3
Clément DAVID [Mon, 8 Dec 2014 10:07:06 +0000 (11:07 +0100)]
Change-Id: Iaea8564727473c6e5d2cdf7ea59c86d3fb7a33df

18 files changed:
scilab/modules/scicos/Makefile.am
scilab/modules/scicos/Makefile.in
scilab/modules/scicos/includes/Controller.hxx
scilab/modules/scicos/includes/gw_scicos.hxx
scilab/modules/scicos/sci_gateway/cpp/sci_scicos_log.cpp [new file with mode: 0644]
scilab/modules/scicos/sci_gateway/scicos_gateway.xml
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/tests/unit_tests/model/Block.dia.ref
scilab/modules/scicos/tests/unit_tests/model/Block.tst
scilab/modules/xcos/help/en_US/scilab_utilities_functions/scicos_log.xml [new file with mode: 0644]
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/jni/JavaController.i
scilab/modules/xcos/src/jni/JavaController_wrap.cxx

index edfffcd..7c7ea0b 100644 (file)
@@ -70,6 +70,7 @@ src/fortran/scifunc.f
 NO_SCICOS_C_SOURCES = src/c/noscicos/noscicos.c
 
 GATEWAY_CXX_SOURCES = \
+sci_gateway/cpp/sci_scicos_log.cpp \
 sci_gateway/cpp/sci_scicos_new.cpp \
 sci_gateway/cpp/sci_scicos_setfield.cpp
 
index 7cdc210..126172e 100644 (file)
@@ -289,6 +289,7 @@ libsciscicos_algo_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 libsciscicos_cli_la_DEPENDENCIES = libsciscicos-algo.la \
        $(am__append_2) $(am__DEPENDENCIES_1)
 am__libsciscicos_cli_la_SOURCES_DIST =  \
+       sci_gateway/cpp/sci_scicos_log.cpp \
        sci_gateway/cpp/sci_scicos_new.cpp \
        sci_gateway/cpp/sci_scicos_setfield.cpp \
        sci_gateway/c/gw_scicos.c sci_gateway/c/sci_buildouttb.c \
@@ -321,7 +322,8 @@ am__libsciscicos_cli_la_SOURCES_DIST =  \
        sci_gateway/fortran/sci_f_tree4.f \
        sci_gateway/fortran/sci_f_var2vec.f \
        sci_gateway/fortran/sci_f_vec2var.f
-am__objects_5 = sci_gateway/cpp/libsciscicos_cli_la-sci_scicos_new.lo \
+am__objects_5 = sci_gateway/cpp/libsciscicos_cli_la-sci_scicos_log.lo \
+       sci_gateway/cpp/libsciscicos_cli_la-sci_scicos_new.lo \
        sci_gateway/cpp/libsciscicos_cli_la-sci_scicos_setfield.lo
 am__objects_6 = sci_gateway/c/libsciscicos_cli_la-gw_scicos.lo \
        sci_gateway/c/libsciscicos_cli_la-sci_buildouttb.lo \
@@ -376,7 +378,8 @@ libsciscicos_cli_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 @XCOS_TRUE@am_libsciscicos_cli_la_rpath = -rpath $(pkglibdir)
 libsciscicos_la_DEPENDENCIES = libsciscicos-algo.la $(am__append_3) \
        $(am__DEPENDENCIES_1)
-am__libsciscicos_la_SOURCES_DIST = sci_gateway/cpp/sci_scicos_new.cpp \
+am__libsciscicos_la_SOURCES_DIST = sci_gateway/cpp/sci_scicos_log.cpp \
+       sci_gateway/cpp/sci_scicos_new.cpp \
        sci_gateway/cpp/sci_scicos_setfield.cpp \
        sci_gateway/c/gw_scicos.c sci_gateway/c/sci_buildouttb.c \
        sci_gateway/c/sci_callblk.c sci_gateway/c/sci_coserror.c \
@@ -408,7 +411,8 @@ am__libsciscicos_la_SOURCES_DIST = sci_gateway/cpp/sci_scicos_new.cpp \
        sci_gateway/fortran/sci_f_tree4.f \
        sci_gateway/fortran/sci_f_var2vec.f \
        sci_gateway/fortran/sci_f_vec2var.f
-am__objects_8 = sci_gateway/cpp/libsciscicos_la-sci_scicos_new.lo \
+am__objects_8 = sci_gateway/cpp/libsciscicos_la-sci_scicos_log.lo \
+       sci_gateway/cpp/libsciscicos_la-sci_scicos_new.lo \
        sci_gateway/cpp/libsciscicos_la-sci_scicos_setfield.lo
 am__objects_9 = sci_gateway/c/libsciscicos_la-gw_scicos.lo \
        sci_gateway/c/libsciscicos_la-sci_buildouttb.lo \
@@ -986,6 +990,7 @@ src/fortran/scifunc.f
 
 NO_SCICOS_C_SOURCES = src/c/noscicos/noscicos.c
 GATEWAY_CXX_SOURCES = \
+sci_gateway/cpp/sci_scicos_log.cpp \
 sci_gateway/cpp/sci_scicos_new.cpp \
 sci_gateway/cpp/sci_scicos_setfield.cpp
 
@@ -1585,6 +1590,9 @@ sci_gateway/cpp/$(am__dirstamp):
 sci_gateway/cpp/$(DEPDIR)/$(am__dirstamp):
        @$(MKDIR_P) sci_gateway/cpp/$(DEPDIR)
        @: > sci_gateway/cpp/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/cpp/libsciscicos_cli_la-sci_scicos_log.lo:  \
+       sci_gateway/cpp/$(am__dirstamp) \
+       sci_gateway/cpp/$(DEPDIR)/$(am__dirstamp)
 sci_gateway/cpp/libsciscicos_cli_la-sci_scicos_new.lo:  \
        sci_gateway/cpp/$(am__dirstamp) \
        sci_gateway/cpp/$(DEPDIR)/$(am__dirstamp)
@@ -1735,6 +1743,9 @@ sci_gateway/fortran/sci_f_vec2var.lo:  \
 
 libsciscicos-cli.la: $(libsciscicos_cli_la_OBJECTS) $(libsciscicos_cli_la_DEPENDENCIES) $(EXTRA_libsciscicos_cli_la_DEPENDENCIES) 
        $(AM_V_CXXLD)$(libsciscicos_cli_la_LINK) $(am_libsciscicos_cli_la_rpath) $(libsciscicos_cli_la_OBJECTS) $(libsciscicos_cli_la_LIBADD) $(LIBS)
+sci_gateway/cpp/libsciscicos_la-sci_scicos_log.lo:  \
+       sci_gateway/cpp/$(am__dirstamp) \
+       sci_gateway/cpp/$(DEPDIR)/$(am__dirstamp)
 sci_gateway/cpp/libsciscicos_la-sci_scicos_new.lo:  \
        sci_gateway/cpp/$(am__dirstamp) \
        sci_gateway/cpp/$(DEPDIR)/$(am__dirstamp)
@@ -2105,8 +2116,10 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libsciscicos_la-sci_sig2data.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libsciscicos_la-sci_var2vec.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libsciscicos_la-sci_vec2var.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/cpp/$(DEPDIR)/libsciscicos_cli_la-sci_scicos_log.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/cpp/$(DEPDIR)/libsciscicos_cli_la-sci_scicos_new.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/cpp/$(DEPDIR)/libsciscicos_cli_la-sci_scicos_setfield.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/cpp/$(DEPDIR)/libsciscicos_la-sci_scicos_log.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/cpp/$(DEPDIR)/libsciscicos_la-sci_scicos_new.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/cpp/$(DEPDIR)/libsciscicos_la-sci_scicos_setfield.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/c/$(DEPDIR)/libsciscicos_algo_la-MlistGetFieldNumber.Plo@am__quote@
@@ -3060,6 +3073,13 @@ 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
 
+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
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='sci_gateway/cpp/sci_scicos_log.cpp' object='sci_gateway/cpp/libsciscicos_cli_la-sci_scicos_log.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_cli_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -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
+
 sci_gateway/cpp/libsciscicos_cli_la-sci_scicos_new.lo: sci_gateway/cpp/sci_scicos_new.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_new.lo -MD -MP -MF sci_gateway/cpp/$(DEPDIR)/libsciscicos_cli_la-sci_scicos_new.Tpo -c -o sci_gateway/cpp/libsciscicos_cli_la-sci_scicos_new.lo `test -f 'sci_gateway/cpp/sci_scicos_new.cpp' || echo '$(srcdir)/'`sci_gateway/cpp/sci_scicos_new.cpp
 @am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) sci_gateway/cpp/$(DEPDIR)/libsciscicos_cli_la-sci_scicos_new.Tpo sci_gateway/cpp/$(DEPDIR)/libsciscicos_cli_la-sci_scicos_new.Plo
@@ -3074,6 +3094,13 @@ sci_gateway/cpp/libsciscicos_cli_la-sci_scicos_setfield.lo: sci_gateway/cpp/sci_
 @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_cli_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o sci_gateway/cpp/libsciscicos_cli_la-sci_scicos_setfield.lo `test -f 'sci_gateway/cpp/sci_scicos_setfield.cpp' || echo '$(srcdir)/'`sci_gateway/cpp/sci_scicos_setfield.cpp
 
+sci_gateway/cpp/libsciscicos_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_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT sci_gateway/cpp/libsciscicos_la-sci_scicos_log.lo -MD -MP -MF sci_gateway/cpp/$(DEPDIR)/libsciscicos_la-sci_scicos_log.Tpo -c -o sci_gateway/cpp/libsciscicos_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_la-sci_scicos_log.Tpo sci_gateway/cpp/$(DEPDIR)/libsciscicos_la-sci_scicos_log.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='sci_gateway/cpp/sci_scicos_log.cpp' object='sci_gateway/cpp/libsciscicos_la-sci_scicos_log.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_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o sci_gateway/cpp/libsciscicos_la-sci_scicos_log.lo `test -f 'sci_gateway/cpp/sci_scicos_log.cpp' || echo '$(srcdir)/'`sci_gateway/cpp/sci_scicos_log.cpp
+
 sci_gateway/cpp/libsciscicos_la-sci_scicos_new.lo: sci_gateway/cpp/sci_scicos_new.cpp
 @am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciscicos_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT sci_gateway/cpp/libsciscicos_la-sci_scicos_new.lo -MD -MP -MF sci_gateway/cpp/$(DEPDIR)/libsciscicos_la-sci_scicos_new.Tpo -c -o sci_gateway/cpp/libsciscicos_la-sci_scicos_new.lo `test -f 'sci_gateway/cpp/sci_scicos_new.cpp' || echo '$(srcdir)/'`sci_gateway/cpp/sci_scicos_new.cpp
 @am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) sci_gateway/cpp/$(DEPDIR)/libsciscicos_la-sci_scicos_new.Tpo sci_gateway/cpp/$(DEPDIR)/libsciscicos_la-sci_scicos_new.Plo
index 8c0264a..9ca5f9a 100644 (file)
@@ -34,8 +34,10 @@ namespace org_scilab_modules_scicos
 class SCICOS_IMPEXP Controller
 {
 public:
-    static void register_view(View* v);
+    static View* register_view(const std::string& name, View* v);
     static void unregister_view(View* v);
+    static View* unregister_view(const std::string& name);
+    static View* look_for_view(const std::string& name);
 
     Controller();
     ~Controller();
@@ -73,6 +75,7 @@ public:
 private:
 
     typedef std::vector<View*> view_set_t;
+    typedef std::vector<std::string> view_name_set_t;
 
     /**
      * Shared data through all instance of the controllers
@@ -80,6 +83,7 @@ private:
     struct SharedData
     {
         Model model;
+        view_name_set_t allNamedViews;
         view_set_t allViews;
 
         SharedData();
index 5af20b8..50e8090 100644 (file)
@@ -18,5 +18,6 @@
 
 CPP_GATEWAY_PROTOTYPE_EXPORT(sci_scicos_new, SCICOS_IMPEXP);
 CPP_GATEWAY_PROTOTYPE_EXPORT(sci_scicos_setfield, SCICOS_IMPEXP);
+CPP_GATEWAY_PROTOTYPE_EXPORT(sci_scicos_log, SCICOS_IMPEXP);
 
 #endif /* GW_SCICOS_HXX_ */
diff --git a/scilab/modules/scicos/sci_gateway/cpp/sci_scicos_log.cpp b/scilab/modules/scicos/sci_gateway/cpp/sci_scicos_log.cpp
new file mode 100644 (file)
index 0000000..14560e4
--- /dev/null
@@ -0,0 +1,147 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2014-2014 - Scilab Enterprises - Clement DAVID
+ *
+ *  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 <string>
+
+#include "gw_scicos.hxx"
+
+#include "types.hxx"
+#include "string.hxx"
+#include "mlist.hxx"
+#include "list.hxx"
+#include "function.hxx"
+
+#include "Controller.hxx"
+#include "LoggerView.hxx"
+#include "utilities.hxx"
+
+extern "C"
+{
+#include "Scierror.h"
+#include "localization.h"
+}
+
+using namespace org_scilab_modules_scicos;
+
+static const std::string funame = "scicos_log";
+
+LoggerView* get_or_allocate_logger()
+{
+    static const std::string loggerViewName = "logger";
+
+    View* registeredView = Controller::look_for_view(loggerViewName);
+    if (registeredView == nullptr)
+    {
+        registeredView = Controller::register_view(loggerViewName, new LoggerView());
+    }
+    LoggerView* logger = static_cast<LoggerView*>(registeredView);
+    return logger;
+}
+
+types::Function::ReturnValue sci_scicos_log(types::typed_list &in, int _iRetCount, types::typed_list &out)
+{
+    if (!(0 <= in.size() && in.size() <= 2))
+    {
+        Scierror(999, _("%s: Wrong number of input arguments: %d to %d expected.\n"), funame.data(), 0, 2);
+        return types::Function::Error;
+    }
+    if (!(0 <= _iRetCount && _iRetCount <= 1))
+    {
+        Scierror(999, _("%s: Wrong number of output arguments: %d to %d expected.\n"), funame.data(), 0, 1);
+        return types::Function::Error;
+    }
+
+    if (in.size() == 0)
+    {
+        LoggerView* logger = get_or_allocate_logger();
+        enum LogLevel previous = logger->getLevel();
+
+        if (_iRetCount == 1)
+        {
+            out.push_back(new types::String(LoggerView::toString(previous)));
+        }
+
+        return types::Function::OK;
+    }
+
+    types::InternalType* internLevel = in[0];
+    if (internLevel->getType() != types::InternalType::ScilabString)
+    {
+        Scierror(999, _("%s: Wrong type for input argument #%d: String expected.\n"), funame.data(), 1);
+        return types::Function::Error;
+    }
+    types::String* strLevel = internLevel->getAs<types::String>();
+    if (strLevel->getSize() != 1)
+    {
+        Scierror(999, _("%s: Wrong size for input argument #%d: String expected.\n"), funame.data(), 1);
+        return types::Function::Error;
+    }
+
+    enum LogLevel logLevel = LoggerView::indexOf(strLevel->get(0));
+    if (logLevel < 0)
+    {
+        std::wstringstream buffer;
+        for (int i = 0; i <= TRACE; i++)
+        {
+            buffer << LoggerView::toString(static_cast<enum LogLevel>(i));
+            if (i != TRACE)
+            {
+                buffer << L", ";
+            }
+        }
+        Scierror(999, _("%s: Wrong value for input argument #%d: Must be in the set  {%ls}.\n"), funame.data(), 1, buffer.str().data());
+        return types::Function::Error;
+    }
+
+    if (in.size() == 1)
+    {
+        /*
+         * Configure the logger value mode and return the previous log level
+         */
+        LoggerView* logger = get_or_allocate_logger();
+        enum LogLevel previous = logger->getLevel();
+        logger->setLevel(logLevel);
+
+        if (_iRetCount == 1)
+        {
+            out.push_back(new types::String(LoggerView::toString(previous)));
+        }
+    }
+    else
+    {
+        /*
+         * Log a message for a specific level and return the log level
+         */
+        types::InternalType* internMsg = in[1];
+        if (internMsg->getType() != types::InternalType::ScilabString)
+        {
+            Scierror(999, _("%s: Wrong type for input argument #%d: String expected.\n"), funame.data(), 2);
+            return types::Function::Error;
+        }
+        types::String* strMsg = internMsg->getAs<types::String>();
+        if (strMsg->getSize() != 1)
+        {
+            Scierror(999, _("%s: Wrong size for input argument #%d: String expected.\n"), funame.data(), 2);
+            return types::Function::Error;
+        }
+
+        LoggerView* logger = get_or_allocate_logger();
+        logger->log(logLevel, strMsg->get(0));
+
+        if (_iRetCount == 1)
+        {
+            out.push_back(new types::String(LoggerView::toString(logLevel)));
+        }
+    }
+
+    return types::Function::OK;
+}
index 99ee539..56cc70b 100644 (file)
@@ -52,6 +52,7 @@
     <gateway type="0" name="sci_callblk" function="callblk"/>
     <gateway type="0" name="sci_loadScicos" function="loadScicos"/>
     <!-- C++ Gateways -->
+    <gateway type="1" name="sci_scicos_log" function="scicos_log"/>
     <gateway type="1" name="sci_scicos_new" function="scicos_new"/>
     <gateway type="1" name="sci_scicos_setfield" function="scicos_setfield"/>
 </module>
index 22cad30..7e2dfb9 100644 (file)
@@ -250,6 +250,7 @@ lib /DEF:"$(ProjectDir)differential_equations_f_Import.def" /SUBSYSTEM:WINDOWS /
     </PostBuildEvent>
   </ItemDefinitionGroup>
   <ItemGroup>
+    <ClCompile Include="..\..\sci_gateway\cpp\sci_scicos_log.cpp" />
     <ClCompile Include="..\..\sci_gateway\cpp\sci_scicos_new.cpp" />
     <ClCompile Include="..\..\sci_gateway\cpp\sci_scicos_setfield.cpp" />
     <ClCompile Include="..\cpp\Controller.cpp" />
@@ -434,4 +435,4 @@ lib /DEF:"$(ProjectDir)differential_equations_f_Import.def" /SUBSYSTEM:WINDOWS /
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
\ No newline at end of file
+</Project>
index b38fa14..822724f 100644 (file)
     <ClCompile Include="..\cpp\view_scilab\BlockAdapter.cpp">
       <Filter>Source Files\MVC\view_scilab</Filter>
     </ClCompile>
+    <ClCompile Include="..\..\sci_gateway\cpp\sci_scicos_log.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
     <ClCompile Include="..\..\sci_gateway\cpp\sci_scicos_new.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
       <Filter>Resource Files</Filter>
     </ResourceCompile>
   </ItemGroup>
-</Project>
\ No newline at end of file
+</Project>
index 100fc19..2cfa63a 100644 (file)
@@ -28,10 +28,8 @@ namespace org_scilab_modules_scicos
  * Implement SharedData methods
  */
 Controller::SharedData::SharedData() :
-    model(), allViews()
+    model(), allNamedViews(), allViews()
 {
-    LoggerView* v = new LoggerView();
-    allViews.push_back(v);
 }
 
 Controller::SharedData::~SharedData()
@@ -44,9 +42,11 @@ Controller::SharedData::~SharedData()
 
 Controller::SharedData Controller::m_instance;
 
-void Controller::register_view(View* v)
+View* Controller::register_view(const std::string& name, View* v)
 {
+    m_instance.allNamedViews.push_back(name);
     m_instance.allViews.push_back(v);
+    return v;
 }
 
 void Controller::unregister_view(View* v)
@@ -54,10 +54,45 @@ void Controller::unregister_view(View* v)
     view_set_t::iterator it = std::find(m_instance.allViews.begin(), m_instance.allViews.end(), v);
     if (it != m_instance.allViews.end())
     {
-        m_instance.allViews.erase(it);
+        int d = std::distance(m_instance.allViews.begin(), it);
+
+        m_instance.allNamedViews.erase(m_instance.allNamedViews.begin() + d);
+        m_instance.allViews.erase(m_instance.allViews.begin() + d);
     }
 }
 
+View* Controller::unregister_view(const std::string& name)
+{
+    View* view = nullptr;
+
+    view_name_set_t::iterator it = std::find(m_instance.allNamedViews.begin(), m_instance.allNamedViews.end(), name);
+    if (it != m_instance.allNamedViews.end())
+    {
+        int d = std::distance(m_instance.allNamedViews.begin(), it);
+
+        view = *(m_instance.allViews.begin() + d);
+        m_instance.allNamedViews.erase(m_instance.allNamedViews.begin() + d);
+        m_instance.allViews.erase(m_instance.allViews.begin() + d);
+    }
+
+    return view;
+}
+
+View* Controller::look_for_view(const std::string& name)
+{
+    View* view = nullptr;
+
+    view_name_set_t::iterator it = std::find(m_instance.allNamedViews.begin(), m_instance.allNamedViews.end(), name);
+    if (it != m_instance.allNamedViews.end())
+    {
+        int d = std::distance(m_instance.allNamedViews.begin(), it);
+
+        view = *(m_instance.allViews.begin() + d);
+    }
+
+    return view;
+}
+
 Controller::Controller()
 {
 }
index 1bd3e58..cffe964 100644 (file)
@@ -12,6 +12,8 @@
 
 #include <iostream>
 #include <sstream>
+#include <cwchar>
+
 #include "scilabWrite.hxx"
 
 #include "LoggerView.hxx"
 namespace org_scilab_modules_scicos
 {
 
-LoggerView::LoggerView()
+static const bool USE_SCILAB_WRITE = true;
+
+LoggerView::LoggerView() :
+    View(), level (WARNING)
 {
 }
 
@@ -28,6 +33,83 @@ LoggerView::~LoggerView()
 {
 }
 
+static std::wstring levelTable[] =
+{
+    L"TRACE",
+    L"DEBUG",
+    L"INFO",
+    L"WARNING",
+    L"ERROR",
+    L"FATAL",
+};
+
+enum LogLevel LoggerView::indexOf(const wchar_t* name)
+{
+    for (int i = TRACE ; i <= FATAL; i++)
+    {
+        if (!wcscmp(name, levelTable[i].data()))
+        {
+            return static_cast<enum LogLevel>(i);
+        }
+    }
+    return UNDEF;
+}
+
+const wchar_t* LoggerView::toString(enum LogLevel level)
+{
+    if (TRACE <= level && level <= FATAL)
+    {
+        return levelTable[level].data();
+    }
+    return L"";
+}
+
+void LoggerView::log(enum LogLevel level, const std::stringstream& msg)
+{
+    if (level >= this->level)
+    {
+        std::string str = msg.str();
+        if (USE_SCILAB_WRITE)
+        {
+            scilabForcedWrite(str.data());
+        }
+        else
+        {
+            std::cerr << str;
+        }
+    }
+}
+
+void LoggerView::log(enum LogLevel level, const char* msg)
+{
+    if (level >= this->level)
+    {
+        if (USE_SCILAB_WRITE)
+        {
+            scilabForcedWrite(msg);
+        }
+        else
+        {
+            std::wcerr << msg;
+        }
+    }
+}
+
+void LoggerView::log(enum LogLevel level, const wchar_t* msg)
+{
+    if (level >= this->level)
+    {
+        if (USE_SCILAB_WRITE)
+        {
+            scilabForcedWriteW(msg);
+        }
+        else
+        {
+            std::wcerr << msg;
+        }
+    }
+}
+
 // generated with :
 // awk ' $2 == "//!<" {sub(",","", $1); print "case " $1 ":\n    os << \"" $1 "\";\n    break;" }' ~/work/branches/YaSp/scilab/modules/scicos/includes/utilities.hxx
 
@@ -250,54 +332,25 @@ std::ostream& operator<<(std::ostream& os, object_properties_t p)
     return os;
 }
 
-static const bool USE_SCILAB_WRITE = true;
-
 void LoggerView::objectCreated(const ScicosID& uid, kind_t k)
 {
     std::stringstream ss;
-
     ss << __FUNCTION__ << "( " << uid << " , " << k << " )" << std::endl;
-
-    if (USE_SCILAB_WRITE)
-    {
-        scilabForcedWrite(ss.str().data());
-    }
-    else
-    {
-        std::cerr << ss.str();
-    }
+    log(DEBUG, ss);
 }
 
 void LoggerView::objectDeleted(const ScicosID& uid, kind_t k)
 {
     std::stringstream ss;
-
     ss << __FUNCTION__ << "( " << uid << " , " << k << " )" << std::endl;
-
-    if (USE_SCILAB_WRITE)
-    {
-        scilabForcedWrite(ss.str().data());
-    }
-    else
-    {
-        std::cerr << ss.str();
-    }
+    log(DEBUG, ss);
 }
 
 void LoggerView::objectUpdated(const ScicosID& uid, kind_t k)
 {
     std::stringstream ss;
-
     ss << __FUNCTION__ << "( " << uid << " , " << k << " )" << std::endl;
-
-    if (USE_SCILAB_WRITE)
-    {
-        scilabForcedWrite(ss.str().data());
-    }
-    else
-    {
-        std::cerr << ss.str();
-    }
+    log(DEBUG, ss);
 }
 
 void LoggerView::propertyUpdated(const ScicosID& /*uid*/, kind_t /*k*/, object_properties_t /*p*/)
@@ -309,17 +362,8 @@ void LoggerView::propertyUpdated(const ScicosID& uid, kind_t k, object_propertie
                                  update_status_t u)
 {
     std::stringstream ss;
-
     ss << __FUNCTION__ << "( " << uid << " , " << k << " , " << p << " ) : " << u << std::endl;
-
-    if (USE_SCILAB_WRITE)
-    {
-        scilabForcedWrite(ss.str().data());
-    }
-    else
-    {
-        std::cerr << ss.str();
-    }
+    log(TRACE, ss);
 }
 
 } /* namespace org_scilab_modules_scicos */
index a9f9686..7b2a77b 100644 (file)
 #ifndef LOGGERVIEW_HXX_
 #define LOGGERVIEW_HXX_
 
+#include <sstream>
 #include "View.hxx"
 
 namespace org_scilab_modules_scicos
 {
 
+enum LogLevel
+{
+    UNDEF   = -1,   //!< Undefined value
+    TRACE   = 0,    //!< more detailed information. Expect these to be written to logs only.
+    DEBUG   = 1,    //!< detailed information on the flow through the system. Expect these to be written to logs only.
+    INFO    = 2,    //!< Interesting runtime events (startup/shutdown). Expect these to be immediately visible on a console, so be conservative and keep to a minimum.
+    WARNING = 3,    //!<
+    ERROR   = 4,    //!< Other runtime errors or unexpected conditions. Expect these to be immediately visible on a status console.
+    FATAL   = 5,    //!< Severe errors that cause premature termination. Expect these to be immediately visible on a status console.
+};
+
 class LoggerView: public View
 {
 public:
     LoggerView();
     ~LoggerView();
 
+    /*
+     * Implement a classical Logger interface
+     */
+
+    static enum LogLevel indexOf(const wchar_t* name);
+    static const wchar_t* toString(enum LogLevel level);
+
+    enum LogLevel getLevel() const
+    {
+        return level;
+    }
+    void setLevel(enum LogLevel level)
+    {
+        this->level = level;
+    }
+
+    void log(enum LogLevel level, const std::stringstream& msg);
+    void log(enum LogLevel level, const char* msg);
+    void log(enum LogLevel level, const wchar_t* msg);
+
+    /*
+     * Implement the Logger as a View
+     */
+
     void objectCreated(const ScicosID& uid, kind_t k);
     void objectDeleted(const ScicosID& uid, kind_t k);
     void objectUpdated(const ScicosID& uid, kind_t k);
     void propertyUpdated(const ScicosID& uid, kind_t k, object_properties_t p);
     void propertyUpdated(const ScicosID& uid, kind_t k, object_properties_t p, update_status_t u);
+
+private:
+    enum LogLevel level;
 };
 
 } /* namespace org_scilab_modules_scicos */
index 6412d4d..ee383ba 100644 (file)
@@ -785,45 +785,122 @@ nzcross = 0
 nmode = 0
 equations = list()
 uid = ""
-// Try with another block containing event inputs
-o = CSCOPE("define")
+// Now set the parameters to the defaults values (eg. removing ports)
+p = funcprot();
+funcprot(0);
+function [ok,sgn,exprs] = scicos_getvalue(title, field, Type, exprs)
+    ok = %t;
+    sgn = [1; 1];
+    exprs = sci2exp(sgn);
+endfunction
+funcprot(p);
+o = BIGSOM_f("set", o)
 objectCreated( 18 , BLOCK )
-propertyUpdated( 18 , BLOCK , GEOMETRY ) : NO_CHANGES
+propertyUpdated( 18 , BLOCK , SIM_FUNCTION_API ) : SUCCESS
+propertyUpdated( 18 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 18 , BLOCK , NMODE ) : NO_CHANGES
+propertyUpdated( 18 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
+propertyUpdated( 18 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
+propertyUpdated( 18 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
+propertyUpdated( 18 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 18 , BLOCK , STYLE ) : NO_CHANGES
+propertyUpdated( 18 , BLOCK , LABEL ) : NO_CHANGES
 propertyUpdated( 18 , BLOCK , GEOMETRY ) : SUCCESS
 propertyUpdated( 18 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 18 , BLOCK , ANGLE ) : NO_CHANGES
+propertyUpdated( 18 , BLOCK , STATE ) : NO_CHANGES
+propertyUpdated( 18 , BLOCK , DSTATE ) : NO_CHANGES
+propertyUpdated( 18 , BLOCK , RPAR ) : SUCCESS
+propertyUpdated( 18 , BLOCK , SIM_DEP_UT ) : SUCCESS
+propertyUpdated( 18 , BLOCK , ODSTATE ) : NO_CHANGES
+propertyUpdated( 18 , BLOCK , IPAR ) : NO_CHANGES
+propertyUpdated( 18 , BLOCK , OPAR ) : NO_CHANGES
 propertyUpdated( 18 , BLOCK , EXPRS ) : SUCCESS
+propertyUpdated( 18 , BLOCK , EQUATIONS ) : NO_CHANGES
+propertyUpdated( 18 , BLOCK , PARENT_DIAGRAM ) : NO_CHANGES
 objectCreated( 19 , PORT )
-propertyUpdated( 19 , PORT , SOURCE_BLOCK ) : SUCCESS
+propertyUpdated( 19 , PORT , FIRING ) : NO_CHANGES
 propertyUpdated( 19 , PORT , PORT_KIND ) : SUCCESS
-propertyUpdated( 18 , BLOCK , INPUTS ) : SUCCESS
-objectCreated( 20 , PORT )
-propertyUpdated( 20 , PORT , SOURCE_BLOCK ) : SUCCESS
-propertyUpdated( 20 , PORT , PORT_KIND ) : SUCCESS
-propertyUpdated( 18 , BLOCK , EVENT_INPUTS ) : SUCCESS
-propertyUpdated( 18 , BLOCK , LABEL ) : NO_CHANGES
 propertyUpdated( 19 , PORT , IMPLICIT ) : NO_CHANGES
 propertyUpdated( 19 , PORT , STYLE ) : NO_CHANGES
 propertyUpdated( 19 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 18 , BLOCK , STYLE ) : NO_CHANGES
-propertyUpdated( 18 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
-propertyUpdated( 18 , BLOCK , SIM_FUNCTION_API ) : SUCCESS
 propertyUpdated( 19 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 19 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 19 , PORT , SOURCE_BLOCK ) : SUCCESS
+propertyUpdated( 19 , PORT , CONNECTED_SIGNALS ) : NO_CHANGES
+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
+propertyUpdated( 20 , PORT , CONNECTED_SIGNALS ) : NO_CHANGES
+objectCreated( 21 , PORT )
+propertyUpdated( 21 , PORT , FIRING ) : NO_CHANGES
+propertyUpdated( 21 , PORT , PORT_KIND ) : SUCCESS
+propertyUpdated( 21 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 21 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 21 , PORT , LABEL ) : NO_CHANGES
+propertyUpdated( 21 , PORT , DATATYPE ) : SUCCESS
+propertyUpdated( 21 , PORT , SOURCE_BLOCK ) : SUCCESS
+propertyUpdated( 21 , PORT , CONNECTED_SIGNALS ) : NO_CHANGES
+propertyUpdated( 18 , BLOCK , INPUTS ) : 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 ) : NO_CHANGES
+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 , OUTPUTS ) : NO_CHANGES
+propertyUpdated( 18 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
+propertyUpdated( 18 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+objectDeleted( 19 , PORT )
+propertyUpdated( 18 , BLOCK , LABEL ) : NO_CHANGES
+propertyUpdated( 22 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 22 , PORT , STYLE ) : 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( 22 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 22 , PORT , DATATYPE ) : NO_CHANGES
+propertyUpdated( 22 , PORT , DATATYPE ) : NO_CHANGES
 propertyUpdated( 18 , BLOCK , STATE ) : NO_CHANGES
 propertyUpdated( 18 , BLOCK , DSTATE ) : NO_CHANGES
 propertyUpdated( 18 , BLOCK , ODSTATE ) : NO_CHANGES
 propertyUpdated( 18 , BLOCK , RPAR ) : SUCCESS
-propertyUpdated( 18 , BLOCK , IPAR ) : SUCCESS
+propertyUpdated( 18 , BLOCK , IPAR ) : NO_CHANGES
 propertyUpdated( 18 , BLOCK , OPAR ) : NO_CHANGES
 propertyUpdated( 18 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 18 , BLOCK , SIM_DEP_UT ) : SUCCESS
+propertyUpdated( 18 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
 propertyUpdated( 18 , BLOCK , LABEL ) : NO_CHANGES
 propertyUpdated( 18 , BLOCK , NZCROSS ) : NO_CHANGES
 propertyUpdated( 18 , BLOCK , NMODE ) : NO_CHANGES
 propertyUpdated( 18 , BLOCK , UID ) : NO_CHANGES
-propertyUpdated( 18 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
 propertyUpdated( 13 , BLOCK , INPUTS ) : SUCCESS
 propertyUpdated( 13 , BLOCK , OUTPUTS ) : NO_CHANGES
 propertyUpdated( 13 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
@@ -846,6 +923,151 @@ propertyUpdated( 13 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
 objectDeleted( 16 , PORT )
 objectDeleted( 13 , BLOCK )
 o  = 
+GUI     : BIGSOM_f
+Graphics: 
+          orig = [0,0]
+          sz = [2,3]
+          flip = %t
+          theta = 0
+          exprs = "[1;1]"
+          pin = [0;0]
+          pout = 0
+          pein = []
+          peout = []
+          gr_i = []
+          id = ""
+          in_implicit = ["E";"E"]
+          out_implicit = "E"
+          in_style = ["";""]
+          out_style = ""
+          in_label = ["";""]
+          out_label = ""
+          style = ""
+Model   : 
+          sum type: 2
+          in = [-1;-1]
+          in2 = [1;1]
+          intyp = [1;1]
+          out = -1
+          out2 = 1
+          outtyp = 1
+          evtin = []
+          evtout = []
+          state = []
+          dstate = []
+          odstate = list()
+          rpar = [1;1]
+          ipar = []
+          opar = list()
+          blocktype = "c"
+          firing = []
+          dep_ut = [%t,%f]
+          label = ""
+          nzcross = 0
+          nmode = 0
+          equations = list()
+          uid = ""
+o.graphics
+ ans  =
+orig = [0,0]
+sz = [2,3]
+flip = %t
+theta = 0
+exprs = "[1;1]"
+pin = [0;0]
+pout = 0
+pein = []
+peout = []
+gr_i = []
+id = ""
+in_implicit = ["E";"E"]
+out_implicit = "E"
+in_style = ["";""]
+out_style = ""
+in_label = ["";""]
+out_label = ""
+style = ""
+o.model
+ ans  =
+sum type: 2
+in = [-1;-1]
+in2 = [1;1]
+intyp = [1;1]
+out = -1
+out2 = 1
+outtyp = 1
+evtin = []
+evtout = []
+state = []
+dstate = []
+odstate = list()
+rpar = [1;1]
+ipar = []
+opar = list()
+blocktype = "c"
+firing = []
+dep_ut = [%t,%f]
+label = ""
+nzcross = 0
+nmode = 0
+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
+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 )
+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 )
+propertyUpdated( 18 , BLOCK , INPUTS ) : NO_CHANGES
+propertyUpdated( 18 , BLOCK , OUTPUTS ) : SUCCESS
+propertyUpdated( 18 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
+propertyUpdated( 18 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
+objectDeleted( 22 , PORT )
+objectDeleted( 18 , BLOCK )
+o  = 
 GUI     : CSCOPE
 Graphics: 
           orig = [0,0]
@@ -961,91 +1183,91 @@ function [ok,clrs,win,wpos,wdim,ymin,ymax,per,N,heritance,nom,exprs] = scicos_ge
 endfunction
 funcprot(p);
 o = CSCOPE("set", o)
-objectCreated( 21 , BLOCK )
-propertyUpdated( 21 , BLOCK , SIM_FUNCTION_API ) : SUCCESS
-propertyUpdated( 21 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 21 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 21 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
-propertyUpdated( 21 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
-propertyUpdated( 21 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 21 , BLOCK , UID ) : NO_CHANGES
-propertyUpdated( 21 , BLOCK , STYLE ) : NO_CHANGES
-propertyUpdated( 21 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 21 , BLOCK , GEOMETRY ) : SUCCESS
-propertyUpdated( 21 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 21 , BLOCK , STATE ) : NO_CHANGES
-propertyUpdated( 21 , BLOCK , DSTATE ) : NO_CHANGES
-propertyUpdated( 21 , BLOCK , RPAR ) : SUCCESS
-propertyUpdated( 21 , BLOCK , SIM_DEP_UT ) : SUCCESS
-propertyUpdated( 21 , BLOCK , ODSTATE ) : NO_CHANGES
-propertyUpdated( 21 , BLOCK , IPAR ) : SUCCESS
-propertyUpdated( 21 , BLOCK , OPAR ) : NO_CHANGES
-propertyUpdated( 21 , BLOCK , EXPRS ) : SUCCESS
-propertyUpdated( 21 , BLOCK , EQUATIONS ) : NO_CHANGES
-propertyUpdated( 21 , BLOCK , PARENT_DIAGRAM ) : NO_CHANGES
-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 ) : NO_CHANGES
-propertyUpdated( 21 , BLOCK , INPUTS ) : SUCCESS
-propertyUpdated( 21 , BLOCK , OUTPUTS ) : NO_CHANGES
-objectCreated( 23 , PORT )
-propertyUpdated( 23 , PORT , FIRING ) : NO_CHANGES
-propertyUpdated( 23 , PORT , PORT_KIND ) : SUCCESS
-propertyUpdated( 23 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 23 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 23 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 23 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 23 , PORT , SOURCE_BLOCK ) : SUCCESS
-propertyUpdated( 23 , PORT , CONNECTED_SIGNALS ) : NO_CHANGES
-propertyUpdated( 21 , BLOCK , EVENT_INPUTS ) : SUCCESS
-propertyUpdated( 21 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
-propertyUpdated( 21 , BLOCK , PARENT_BLOCK ) : NO_CHANGES
-propertyUpdated( 21 , BLOCK , CHILDREN ) : NO_CHANGES
-propertyUpdated( 21 , BLOCK , GEOMETRY ) : NO_CHANGES
-propertyUpdated( 21 , BLOCK , GEOMETRY ) : NO_CHANGES
-propertyUpdated( 21 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 21 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 21 , BLOCK , EXPRS ) : NO_CHANGES
-propertyUpdated( 21 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 22 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 22 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 22 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 21 , BLOCK , STYLE ) : NO_CHANGES
-propertyUpdated( 21 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
-propertyUpdated( 21 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
-propertyUpdated( 22 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 22 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 22 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 23 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 21 , BLOCK , STATE ) : NO_CHANGES
-propertyUpdated( 21 , BLOCK , DSTATE ) : NO_CHANGES
-propertyUpdated( 21 , BLOCK , ODSTATE ) : NO_CHANGES
-propertyUpdated( 21 , BLOCK , RPAR ) : NO_CHANGES
-propertyUpdated( 21 , BLOCK , IPAR ) : NO_CHANGES
-propertyUpdated( 21 , BLOCK , OPAR ) : NO_CHANGES
-propertyUpdated( 21 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 21 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
-propertyUpdated( 21 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 21 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 21 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 21 , BLOCK , UID ) : NO_CHANGES
-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( 19 , PORT )
-propertyUpdated( 18 , BLOCK , INPUTS ) : NO_CHANGES
-propertyUpdated( 18 , BLOCK , OUTPUTS ) : NO_CHANGES
-propertyUpdated( 18 , BLOCK , EVENT_INPUTS ) : SUCCESS
-propertyUpdated( 18 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
-objectDeleted( 20 , PORT )
-objectDeleted( 18 , BLOCK )
+objectCreated( 28 , BLOCK )
+propertyUpdated( 28 , BLOCK , SIM_FUNCTION_API ) : SUCCESS
+propertyUpdated( 28 , BLOCK , NZCROSS ) : NO_CHANGES
+propertyUpdated( 28 , BLOCK , NMODE ) : NO_CHANGES
+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 , RPAR ) : SUCCESS
+propertyUpdated( 28 , BLOCK , SIM_DEP_UT ) : SUCCESS
+propertyUpdated( 28 , BLOCK , ODSTATE ) : NO_CHANGES
+propertyUpdated( 28 , BLOCK , IPAR ) : SUCCESS
+propertyUpdated( 28 , BLOCK , OPAR ) : NO_CHANGES
+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 )
 o  = 
 GUI     : CSCOPE
 Graphics: 
@@ -1093,74 +1315,74 @@ Model   :
           uid = ""
 // Test 'opar' and 'odstate'
 o = LOGIC("define")
-objectCreated( 24 , BLOCK )
-propertyUpdated( 24 , BLOCK , GEOMETRY ) : NO_CHANGES
-propertyUpdated( 24 , BLOCK , GEOMETRY ) : SUCCESS
-propertyUpdated( 24 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 24 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 24 , BLOCK , EXPRS ) : SUCCESS
-objectCreated( 25 , PORT )
-propertyUpdated( 25 , PORT , SOURCE_BLOCK ) : SUCCESS
-propertyUpdated( 25 , PORT , PORT_KIND ) : SUCCESS
-objectCreated( 26 , PORT )
-propertyUpdated( 26 , PORT , SOURCE_BLOCK ) : SUCCESS
-propertyUpdated( 26 , PORT , PORT_KIND ) : SUCCESS
-propertyUpdated( 24 , BLOCK , INPUTS ) : SUCCESS
-objectCreated( 27 , PORT )
-propertyUpdated( 27 , PORT , SOURCE_BLOCK ) : SUCCESS
-propertyUpdated( 27 , PORT , PORT_KIND ) : SUCCESS
-propertyUpdated( 24 , BLOCK , OUTPUTS ) : SUCCESS
-objectCreated( 28 , PORT )
-propertyUpdated( 28 , PORT , SOURCE_BLOCK ) : SUCCESS
-propertyUpdated( 28 , PORT , PORT_KIND ) : SUCCESS
-propertyUpdated( 24 , BLOCK , EVENT_INPUTS ) : SUCCESS
-propertyUpdated( 24 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 25 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 26 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 27 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 25 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 26 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 27 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 25 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 26 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 27 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 24 , BLOCK , STYLE ) : NO_CHANGES
-propertyUpdated( 24 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
-propertyUpdated( 24 , BLOCK , SIM_FUNCTION_API ) : SUCCESS
-propertyUpdated( 26 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 25 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 25 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 26 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 25 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 26 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 27 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 27 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 27 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 28 , PORT , DATATYPE ) : SUCCESS
-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 , IPAR ) : NO_CHANGES
-propertyUpdated( 24 , BLOCK , OPAR ) : SUCCESS
-propertyUpdated( 24 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 24 , BLOCK , SIM_DEP_UT ) : SUCCESS
-propertyUpdated( 24 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 24 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 24 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 24 , BLOCK , UID ) : NO_CHANGES
-propertyUpdated( 24 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
-propertyUpdated( 21 , BLOCK , INPUTS ) : SUCCESS
-propertyUpdated( 21 , BLOCK , OUTPUTS ) : NO_CHANGES
-propertyUpdated( 21 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
-propertyUpdated( 21 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
-objectDeleted( 22 , PORT )
-propertyUpdated( 21 , BLOCK , INPUTS ) : NO_CHANGES
-propertyUpdated( 21 , BLOCK , OUTPUTS ) : NO_CHANGES
-propertyUpdated( 21 , BLOCK , EVENT_INPUTS ) : SUCCESS
-propertyUpdated( 21 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
-objectDeleted( 23 , PORT )
-objectDeleted( 21 , BLOCK )
+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( 32 , PORT )
+propertyUpdated( 32 , PORT , SOURCE_BLOCK ) : SUCCESS
+propertyUpdated( 32 , PORT , PORT_KIND ) : 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( 32 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 33 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 34 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 32 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 33 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 34 , PORT , STYLE ) : 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( 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 )
 o  = 
 GUI     : LOGIC
 Graphics: 
@@ -1216,146 +1438,146 @@ 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( 24 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
-propertyUpdated( 24 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
-propertyUpdated( 26 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 25 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 25 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 26 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 25 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 26 , PORT , DATATYPE ) : 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( 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 , IPAR ) : NO_CHANGES
-propertyUpdated( 24 , BLOCK , OPAR ) : SUCCESS
-propertyUpdated( 24 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 24 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
-propertyUpdated( 24 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 24 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 24 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 24 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 31 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
+propertyUpdated( 31 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
+propertyUpdated( 33 , 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
 assert_checkequal(o.model.opar, listRef);
 o.model.odstate = listRef;
-propertyUpdated( 24 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
-propertyUpdated( 24 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
-propertyUpdated( 26 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 25 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 25 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 26 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 25 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 26 , PORT , DATATYPE ) : 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( 24 , BLOCK , STATE ) : NO_CHANGES
-propertyUpdated( 24 , BLOCK , DSTATE ) : NO_CHANGES
-propertyUpdated( 24 , BLOCK , ODSTATE ) : SUCCESS
-propertyUpdated( 24 , BLOCK , RPAR ) : NO_CHANGES
-propertyUpdated( 24 , BLOCK , IPAR ) : NO_CHANGES
-propertyUpdated( 24 , BLOCK , OPAR ) : NO_CHANGES
-propertyUpdated( 24 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 24 , BLOCK , SIM_DEP_UT ) : NO_CHANGES
-propertyUpdated( 24 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 24 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 24 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 24 , BLOCK , UID ) : NO_CHANGES
+propertyUpdated( 31 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
+propertyUpdated( 31 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
+propertyUpdated( 33 , 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 ) : NO_CHANGES
+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
 assert_checkequal(o.model.odstate, listRef);
 // Test 'equations'
 o = VsourceAC("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
-propertyUpdated( 29 , BLOCK , INPUTS ) : SUCCESS
-objectCreated( 31 , PORT )
-propertyUpdated( 31 , PORT , SOURCE_BLOCK ) : SUCCESS
-propertyUpdated( 31 , PORT , PORT_KIND ) : SUCCESS
-propertyUpdated( 29 , BLOCK , OUTPUTS ) : SUCCESS
-propertyUpdated( 29 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 30 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 31 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 30 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 31 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 30 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 31 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 29 , BLOCK , STYLE ) : NO_CHANGES
-propertyUpdated( 29 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
-propertyUpdated( 29 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
-propertyUpdated( 30 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 31 , 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 , EQUATIONS ) : SUCCESS
-propertyUpdated( 29 , BLOCK , UID ) : NO_CHANGES
-propertyUpdated( 29 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
-propertyUpdated( 29 , BLOCK , GEOMETRY ) : NO_CHANGES
-propertyUpdated( 29 , BLOCK , GEOMETRY ) : NO_CHANGES
-propertyUpdated( 29 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 29 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 29 , BLOCK , EXPRS ) : NO_CHANGES
-propertyUpdated( 29 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 30 , PORT , IMPLICIT ) : SUCCESS
-propertyUpdated( 31 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 30 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 31 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 30 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 31 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 29 , BLOCK , STYLE ) : NO_CHANGES
-propertyUpdated( 29 , BLOCK , GEOMETRY ) : NO_CHANGES
-propertyUpdated( 29 , BLOCK , GEOMETRY ) : NO_CHANGES
-propertyUpdated( 29 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 29 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 29 , BLOCK , EXPRS ) : NO_CHANGES
-propertyUpdated( 29 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 30 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 31 , PORT , IMPLICIT ) : SUCCESS
-propertyUpdated( 30 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 31 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 30 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 31 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 29 , BLOCK , STYLE ) : NO_CHANGES
-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
-objectDeleted( 25 , PORT )
-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
-objectDeleted( 26 , 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
-objectDeleted( 27 , PORT )
-propertyUpdated( 24 , BLOCK , INPUTS ) : NO_CHANGES
-propertyUpdated( 24 , BLOCK , OUTPUTS ) : NO_CHANGES
-propertyUpdated( 24 , BLOCK , EVENT_INPUTS ) : SUCCESS
-propertyUpdated( 24 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
-objectDeleted( 28 , PORT )
-objectDeleted( 24 , BLOCK )
+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
+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
+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 )
 o  = 
 GUI     : VsourceAC
 Graphics: 
@@ -1423,120 +1645,120 @@ o.model.equations
     50.
 listRef = modelica();
 o.model.equations = listRef;
-propertyUpdated( 29 , BLOCK , SIM_FUNCTION_NAME ) : NO_CHANGES
-propertyUpdated( 29 , BLOCK , SIM_FUNCTION_API ) : NO_CHANGES
-propertyUpdated( 30 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 30 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 30 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 31 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 31 , PORT , DATATYPE ) : NO_CHANGES
-propertyUpdated( 31 , PORT , DATATYPE ) : 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 ) : 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 , EQUATIONS ) : SUCCESS
-propertyUpdated( 29 , BLOCK , UID ) : NO_CHANGES
+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
 assert_checkequal(o.model.equations, listRef);
 // Test 'exprs' with Modelica Block
 o = MBLOCK("define")
-objectCreated( 32 , BLOCK )
-propertyUpdated( 32 , BLOCK , GEOMETRY ) : NO_CHANGES
-propertyUpdated( 32 , BLOCK , GEOMETRY ) : SUCCESS
-propertyUpdated( 32 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 32 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 32 , BLOCK , EXPRS ) : SUCCESS
-objectCreated( 33 , PORT )
-propertyUpdated( 33 , PORT , SOURCE_BLOCK ) : SUCCESS
-propertyUpdated( 33 , PORT , PORT_KIND ) : SUCCESS
-propertyUpdated( 32 , BLOCK , INPUTS ) : SUCCESS
-objectCreated( 34 , PORT )
-propertyUpdated( 34 , PORT , SOURCE_BLOCK ) : SUCCESS
-propertyUpdated( 34 , PORT , PORT_KIND ) : SUCCESS
-objectCreated( 35 , PORT )
-propertyUpdated( 35 , PORT , SOURCE_BLOCK ) : SUCCESS
-propertyUpdated( 35 , PORT , PORT_KIND ) : SUCCESS
-propertyUpdated( 32 , BLOCK , OUTPUTS ) : SUCCESS
-propertyUpdated( 32 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 33 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 34 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 35 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 33 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 34 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 35 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 33 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 34 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 35 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 32 , BLOCK , STYLE ) : NO_CHANGES
-propertyUpdated( 32 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
-propertyUpdated( 32 , BLOCK , SIM_FUNCTION_API ) : SUCCESS
-propertyUpdated( 33 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 35 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 34 , PORT , DATATYPE ) : SUCCESS
-propertyUpdated( 32 , BLOCK , STATE ) : NO_CHANGES
-propertyUpdated( 32 , BLOCK , DSTATE ) : NO_CHANGES
-propertyUpdated( 32 , BLOCK , ODSTATE ) : NO_CHANGES
-propertyUpdated( 32 , BLOCK , RPAR ) : SUCCESS
-propertyUpdated( 32 , BLOCK , IPAR ) : NO_CHANGES
-propertyUpdated( 32 , BLOCK , OPAR ) : NO_CHANGES
-propertyUpdated( 32 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
-propertyUpdated( 32 , BLOCK , SIM_DEP_UT ) : SUCCESS
-propertyUpdated( 32 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 32 , BLOCK , NZCROSS ) : NO_CHANGES
-propertyUpdated( 32 , BLOCK , NMODE ) : NO_CHANGES
-propertyUpdated( 32 , BLOCK , EQUATIONS ) : SUCCESS
-propertyUpdated( 32 , BLOCK , UID ) : NO_CHANGES
-propertyUpdated( 32 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
-propertyUpdated( 32 , BLOCK , GEOMETRY ) : NO_CHANGES
-propertyUpdated( 32 , BLOCK , GEOMETRY ) : NO_CHANGES
-propertyUpdated( 32 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 32 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 32 , BLOCK , EXPRS ) : NO_CHANGES
-propertyUpdated( 32 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 33 , PORT , IMPLICIT ) : SUCCESS
-propertyUpdated( 34 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 35 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 33 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 34 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 35 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 33 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 34 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 35 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 32 , BLOCK , STYLE ) : NO_CHANGES
-propertyUpdated( 32 , BLOCK , GEOMETRY ) : NO_CHANGES
-propertyUpdated( 32 , BLOCK , GEOMETRY ) : NO_CHANGES
-propertyUpdated( 32 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 32 , BLOCK , ANGLE ) : NO_CHANGES
-propertyUpdated( 32 , BLOCK , EXPRS ) : NO_CHANGES
-propertyUpdated( 32 , BLOCK , LABEL ) : NO_CHANGES
-propertyUpdated( 33 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 34 , PORT , IMPLICIT ) : SUCCESS
-propertyUpdated( 35 , PORT , IMPLICIT ) : NO_CHANGES
-propertyUpdated( 33 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 34 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 35 , PORT , STYLE ) : NO_CHANGES
-propertyUpdated( 33 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 34 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 35 , PORT , LABEL ) : NO_CHANGES
-propertyUpdated( 32 , 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 ) : NO_CHANGES
-propertyUpdated( 29 , BLOCK , OUTPUTS ) : SUCCESS
-propertyUpdated( 29 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
-propertyUpdated( 29 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
-objectDeleted( 31 , PORT )
-objectDeleted( 29 , BLOCK )
+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( 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( 40 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 41 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 42 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 40 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 41 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 42 , PORT , STYLE ) : 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( 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( 40 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 41 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 42 , PORT , STYLE ) : 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( 40 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 41 , PORT , IMPLICIT ) : SUCCESS
+propertyUpdated( 42 , PORT , IMPLICIT ) : NO_CHANGES
+propertyUpdated( 40 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 41 , PORT , STYLE ) : NO_CHANGES
+propertyUpdated( 42 , PORT , STYLE ) : 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 )
 o  = 
 GUI     : MBLOCK
 Graphics: 
@@ -1651,19 +1873,19 @@ o.model.equations
     0.0001
 // Check that all the model items are freed
 clear
-propertyUpdated( 32 , BLOCK , INPUTS ) : SUCCESS
-propertyUpdated( 32 , BLOCK , OUTPUTS ) : NO_CHANGES
-propertyUpdated( 32 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
-propertyUpdated( 32 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
-objectDeleted( 33 , PORT )
-propertyUpdated( 32 , BLOCK , INPUTS ) : NO_CHANGES
-propertyUpdated( 32 , BLOCK , OUTPUTS ) : SUCCESS
-propertyUpdated( 32 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
-propertyUpdated( 32 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
-objectDeleted( 34 , PORT )
-propertyUpdated( 32 , BLOCK , INPUTS ) : NO_CHANGES
-propertyUpdated( 32 , BLOCK , OUTPUTS ) : SUCCESS
-propertyUpdated( 32 , BLOCK , EVENT_INPUTS ) : NO_CHANGES
-propertyUpdated( 32 , BLOCK , EVENT_OUTPUTS ) : NO_CHANGES
-objectDeleted( 35 , PORT )
-objectDeleted( 32 , BLOCK )
+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 )
index 85af3b3..650f685 100644 (file)
@@ -59,6 +59,20 @@ o = BIGSOM_f("set", o)
 o.graphics
 o.model
 
+// Now set the parameters to the defaults values (eg. removing ports)
+p = funcprot();
+funcprot(0);
+function [ok,sgn,exprs] = scicos_getvalue(title, field, Type, exprs)
+    ok = %t;
+    sgn = [1; 1];
+    exprs = sci2exp(sgn);
+endfunction
+funcprot(p);
+
+o = BIGSOM_f("set", o)
+o.graphics
+o.model
+
 // Try with another block containing event inputs
 o = CSCOPE("define")
 o.graphics
diff --git a/scilab/modules/xcos/help/en_US/scilab_utilities_functions/scicos_log.xml b/scilab/modules/xcos/help/en_US/scilab_utilities_functions/scicos_log.xml
new file mode 100644 (file)
index 0000000..6f4df2c
--- /dev/null
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="scicos_log">
+    <refnamediv>
+        <refname>scicos_log</refname>
+        <refpurpose>Logger utility for scicos</refpurpose>
+    </refnamediv>
+    <refsynopsisdiv>
+        <title>Calling Sequence</title>
+        <synopsis>
+            log=scicos_log(log);
+            log=scicos_log(log, msg);
+        </synopsis>
+    </refsynopsisdiv>
+    <refsection>
+        <title>Arguments</title>
+        <variablelist>
+            <varlistentry>
+                <term>log</term>
+                <listitem>
+                    <para>String, logger value. The supported values are : "FATAL", "ERROR", "WARNING", "INFO", "DEBUG", "TRACE"</para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term>msg</term>
+                <listitem>
+                    <para>
+                        String, the message to log.
+                    </para>
+                </listitem>
+            </varlistentry>
+        </variablelist>
+    </refsection>
+    <refsection>
+        <title>Description</title>
+        <para>
+            This function implements a logger for <literal>scicos</literal> operation. This function lets the user choose the right level of information to print while loading a model, compiling and simulating it.
+        </para>
+    </refsection>
+    <refsection>
+        <title>Examples</title>
+        <programlisting role="example"><![CDATA[
+scicos_log("TRACE"),
+scicos_log("TRACE", "this is a trace message");
+ ]]></programlisting>
+    </refsection>
+    <refsection role="see also">
+        <title>See Also</title>
+        <simplelist type="inline">
+            <member>
+                <link linkend="scicos_debug">scicos_debug</link>
+            </member>
+        </simplelist>
+    </refsection>
+</refentry>
+
index 1dc501d..4eb8eec 100644 (file)
@@ -20,8 +20,8 @@ public class JavaController extends Controller {
         return View.getCPtr(v);
     }
 
-    public static void register_view(View view) {
-        JavaControllerJNI.register_view(add_reference(view), view);
+    public static void register_view(String name, View view) {
+        JavaControllerJNI.register_view(name, add_reference(view), view);
     }
 
 }
index efd3dfb..764b84d 100644 (file)
@@ -94,7 +94,7 @@ public class JavaControllerJNI {
     public final static native long VectorOfScicosID_get(long jarg1, VectorOfScicosID jarg1_, int jarg2);
     public final static native void VectorOfScicosID_set(long jarg1, VectorOfScicosID jarg1_, int jarg2, long jarg3);
     public final static native void delete_VectorOfScicosID(long jarg1);
-    public final static native void register_view(long jarg1, View jarg1_);
+    public final static native void register_view(String jarg1, long jarg2, View jarg2_);
 
     static {
         try {
index 6ca8574..10b2225 100644 (file)
 %ignore org_scilab_modules_scicos::Controller::getObject;
 %ignore org_scilab_modules_scicos::Controller::unregister_view;
 %ignore org_scilab_modules_scicos::Controller::register_view;
+%ignore org_scilab_modules_scicos::Controller::look_for_view;
 %ignore org_scilab_modules_scicos::Controller::delete_all_instances;
 %include "../scicos/includes/Controller.hxx";
 
  * Fill the main module by needed methods
  */
 %{
-static void register_view(org_scilab_modules_scicos::View* view) {
-       org_scilab_modules_scicos::Controller::register_view(view);
+static void register_view(const std::string& name, org_scilab_modules_scicos::View* view) {
+       org_scilab_modules_scicos::Controller::register_view(name, view);
 };
 %}
 
@@ -163,7 +164,7 @@ import java.util.ArrayList;
 
 %typemap(javain) org_scilab_modules_scicos::View* "add_reference($javainput)"
 
-void register_view(org_scilab_modules_scicos::View* view);
+void register_view(const std::string& name, org_scilab_modules_scicos::View* view);
 
 /*
  * Static load of library
index 521001b..8908de2 100644 (file)
@@ -690,8 +690,8 @@ SWIGINTERN void std_vector_Sl_ScicosID_Sg__set(std::vector< ScicosID > *self,int
                     throw std::out_of_range("vector index out of range");
             }
 
-static void register_view(org_scilab_modules_scicos::View* view) {
-       org_scilab_modules_scicos::Controller::register_view(view);
+static void register_view(const std::string& name, org_scilab_modules_scicos::View* view) {
+       org_scilab_modules_scicos::Controller::register_view(name, view);
 };
 
 
@@ -2416,14 +2416,24 @@ SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_delete_1V
 }
 
 
-SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_register_1view(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
-  org_scilab_modules_scicos::View *arg1 = (org_scilab_modules_scicos::View *) 0 ;
+SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_register_1view(JNIEnv *jenv, jclass jcls, jstring jarg1, jlong jarg2, jobject jarg2_) {
+  std::string *arg1 = 0 ;
+  org_scilab_modules_scicos::View *arg2 = (org_scilab_modules_scicos::View *) 0 ;
   
   (void)jenv;
   (void)jcls;
-  (void)jarg1_;
-  arg1 = *(org_scilab_modules_scicos::View **)&jarg1; 
-  register_view(arg1);
+  (void)jarg2_;
+  if(!jarg1) {
+    SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string");
+    return ;
+  }
+  const char *arg1_pstr = (const char *)jenv->GetStringUTFChars(jarg1, 0); 
+  if (!arg1_pstr) return ;
+  std::string arg1_str(arg1_pstr);
+  arg1 = &arg1_str;
+  jenv->ReleaseStringUTFChars(jarg1, arg1_pstr); 
+  arg2 = *(org_scilab_modules_scicos::View **)&jarg2; 
+  register_view((std::string const &)*arg1,arg2);
 }