Code Monkey home page Code Monkey logo

blockfactory's People

Contributors

codacy-badger avatar diegoferigo avatar traversaro avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

blockfactory's Issues

I encountered the same problem as #70

          I encountered the same problem and followed the instructions on the webpage export BLOCKFACTORY_PLUGIN_PATH=/home/han/blockfactory/example/build. “SUCCESS: Block ‘SignalMath’ found and loaded from plugin ‘ExampleToolbox’” appeared, but I still received an error in Simulink: Error reported by S-function ‘BlockFactory’ in ‘Model/w// mask’: Failed to create factory. Factory error (2): ExampleToolbox: cannot open shared object file: No such file or directory. Failed to get factory object (className=SignalMath, libName=ExampleToolbox). Failed to get the factory.

Originally posted by @rcone11 in #70 (comment)

Simplify getInputPortSignal and getOutputPortSignal regarding dynamic memory allocations?

For several reasons, typically involving performance (due to use of system calls and violation of cache locality) but also determinism on some hard real-time OS, a good practice is to avoid, sometimes it is considered good practice to avoid any kind of dynamic memory allocation in code that will be called in "tight loop", for example the code that is called at every step of a control, simulation or optimization algorithm.

Related to that, I notice that the current BlockFactory API induces the users to perform two dynamic memory allocations whenever, from an output method, and input or output signal is accessed. The situation could get worse if eventually tackle #8, as some of the same signal would need to be accessed also from the updateDiscreteState and the BlockFactory equivalent of mdlDerivatives. Note that this two memory allocation are avoided in the "CoderBlockInformation" implementation only because in that case the IO signals are stored internally already as std::shared_ptr<Signal>, but for example are necessary in the SimulinkBlockInformation implementation (and similarly they will probably be present in <something>BlockInformation implementations for which the addresses of IO signals could change at each simulation step).

These two dynamic memory allocations are caused by:

  1. Use of pimpl pattern in blockfactory::core::Signal (added in diegoferigo/WB-Toolbox@75c1d36#diff-e32b9f2c904cb22f7a9187e2a76861a3). I guess this change can be relatively safely reverted, if we think it is the case.
  2. Use of std::shared_ptr<Signal> to return a signal in getInputPortSignal and getOutputPortSignal , in place of standard copy on the stack, that in most cases will be optimized away due to Return Value Optimization (RVO). This it is a more complicated change, as it was explicitly introduced in robotology/wb-toolbox#126 to ensure that input data is only read and not wrote without introducing a new type ConstSignal or Signal<isConst>.

The change 2) is definitely more complicated (if we want to continue to enfore the const correctnes of input signals), while 1) should be straightforward.

Compilation failure with gcc 7.3.0 and Matlab 2018b in Debug mode

[ 95%] Building CXX object sources/Mex/CMakeFiles/Mex.dir/src/BlockFactory.cpp.o
/home/straversaro/src/blockfactory/sources/Mex/src/BlockFactory.cpp: In function ‘const std::pair<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > parameterTypeToString(const blockfactory::core::ParameterType&)’:
/home/straversaro/src/blockfactory/sources/Mex/src/BlockFactory.cpp:594:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
In file included from /home/straversaro/src/blockfactory/sources/Mex/src/BlockFactory.cpp:852:0:
/usr/local/MATLAB/R2018b/simulink/include/simulink.c: In function ‘int_T ssWriteRTWWorkVect(SimStruct*, const char_T*, int_T, ...)’:
/usr/local/MATLAB/R2018b/simulink/include/simulink.c:1847:7: warning: ‘</arg></arguments></diag></diag_root>’ directive writing 37 bytes into a region of size 14 [-Wformat-overflow=]
 int_T ssWriteRTWWorkVect(SimStruct    *S,
       ^~~~~~~~~~~~~~~~~~
In file included from /usr/include/stdio.h:862:0,
                 from /usr/include/c++/7/cstdio:42,
                 from /usr/include/c++/7/ext/string_conversions.h:43,
                 from /usr/include/c++/7/bits/basic_string.h:6352,
                 from /usr/include/c++/7/string:52,
                 from /usr/include/c++/7/stdexcept:39,
                 from /usr/include/c++/7/array:39,
                 from /usr/include/c++/7/tuple:39,
                 from /usr/include/c++/7/bits/unique_ptr.h:37,
                 from /usr/include/c++/7/memory:80,
                 from /home/straversaro/src/blockfactory/sources/Core/include/BlockFactory/Core/Parameters.h:12,
                 from /home/straversaro/src/blockfactory/sources/Core/include/BlockFactory/Core/Block.h:12,
                 from /home/straversaro/src/blockfactory/sources/Mex/src/BlockFactory.cpp:12:
/usr/include/x86_64-linux-gnu/bits/stdio2.h:34:43: note: ‘__builtin___sprintf_chk’ output 224 or more bytes into a destination of size 200
       __bos (__s), __fmt, __va_arg_pack ());
                                           ^

Compilation Failed in Ubuntu with MATLAB2023b

The compilation of robotology-superbuild failed with this error:

In file included from /home/Ehsan/robotology-superbuild/src/BlockFactory/deps/sharedlibpp/src/SharedLibraryFactory.cpp:9:
/home/Ehsan/robotology-superbuild/src/BlockFactory/deps/sharedlibpp/src/shlibpp/SharedLibraryFactory.h:37:10: warning: elaborated-type-specifier for a scoped enum must not use the ‘class’ keyword
   37 |     enum class Status : std::uint32_t
      |     ~~~~ ^~~~~
      |          -----
/home/Ehsan/robotology-superbuild/src/BlockFactory/deps/sharedlibpp/src/shlibpp/SharedLibraryFactory.h:37:16: error: use of enum ‘Status’ without previous declaration
   37 |     enum class Status : std::uint32_t
      |                ^~~~~~
/home/Ehsan/robotology-superbuild/src/BlockFactory/deps/sharedlibpp/src/shlibpp/SharedLibraryFactory.h:37:30: error: ‘uint32_t’ is not a member of ‘std’; did you mean ‘wint_t’?
   37 |     enum class Status : std::uint32_t
      |                              ^~~~~~~~
      |                              wint_t
/home/Ehsan/robotology-superbuild/src/BlockFactory/deps/sharedlibpp/src/shlibpp/SharedLibraryFactory.h:38:5: error: default member initializer for unnamed bit-field
   38 |     {
      |     ^
/home/Ehsan/robotology-superbuild/src/BlockFactory/deps/sharedlibpp/src/shlibpp/SharedLibraryFactory.h:169:5: error: ‘Status’ does not name a type
  169 |     Status getStatus() const;
      |     ^~~~~~
/home/Ehsan/robotology-superbuild/src/BlockFactory/deps/sharedlibpp/src/SharedLibraryFactory.cpp:52:27: error: ‘Status’ in ‘class shlibpp::SharedLibraryFactory’ does not name a type
   52 |     SharedLibraryFactory::Status status;
      |                           ^~~~~~
/home/Ehsan/robotology-superbuild/src/BlockFactory/deps/sharedlibpp/src/SharedLibraryFactory.cpp: In constructor ‘shlibpp::SharedLibraryFactory::Private::Private(int32_t, int32_t, int32_t, const char*)’:
/home/Ehsan/robotology-superbuild/src/BlockFactory/deps/sharedlibpp/src/SharedLibraryFactory.cpp:76:9: error: class ‘shlibpp::SharedLibraryFactory::Private’ does not have any field named ‘status’
   76 |         status(Status::None),
      |         ^~~~~~
/home/Ehsan/robotology-superbuild/src/BlockFactory/deps/sharedlibpp/src/SharedLibraryFactory.cpp:76:16: error: ‘Status’ has not been declared
   76 |         status(Status::None),
      |                ^~~~~~
/home/Ehsan/robotology-superbuild/src/BlockFactory/deps/sharedlibpp/src/SharedLibraryFactory.cpp: In member function ‘bool shlibpp::SharedLibraryFactory::Private::open(const char*)’:
/home/Ehsan/robotology-superbuild/src/BlockFactory/deps/sharedlibpp/src/SharedLibraryFactory.cpp:131:5: error: ‘status’ was not declared in this scope; did you mean ‘statx’?
  131 |     status = Status::None;
      |     ^~~~~~
      |     statx
/home/Ehsan/robotology-superbuild/src/BlockFactory/deps/sharedlibpp/src/SharedLibraryFactory.cpp:131:14: error: ‘Status’ has not been declared
  131 |     status = Status::None;
      |              ^~~~~~
/home/Ehsan/robotology-superbuild/src/BlockFactory/deps/sharedlibpp/src/SharedLibraryFactory.cpp:145:22: error: ‘Status’ has not been declared
  145 |             status = Status::LibraryNotFound;
      |                      ^~~~~~
/home/Ehsan/robotology-superbuild/src/BlockFactory/deps/sharedlibpp/src/SharedLibraryFactory.cpp:147:22: error: ‘Status’ has not been declared
  147 |             status = Status::LibraryNotLoaded;
      |                      ^~~~~~
/home/Ehsan/robotology-superbuild/src/BlockFactory/deps/sharedlibpp/src/SharedLibraryFactory.cpp:154:18: error: ‘Status’ has not been declared
  154 |         status = Status::FactoryNotFound;
      |                  ^~~~~~
/home/Ehsan/robotology-superbuild/src/BlockFactory/deps/sharedlibpp/src/SharedLibraryFactory.cpp:160:18: error: ‘Status’ has not been declared
  160 |         status = Status::FactoryNotFunctional;
      |                  ^~~~~~
/home/Ehsan/robotology-superbuild/src/BlockFactory/deps/sharedlibpp/src/SharedLibraryFactory.cpp:164:14: error: ‘Status’ has not been declared
  164 |     status = Status::OK;
      |              ^~~~~~
/home/Ehsan/robotology-superbuild/src/BlockFactory/deps/sharedlibpp/src/SharedLibraryFactory.cpp: At global scope:
/home/Ehsan/robotology-superbuild/src/BlockFactory/deps/sharedlibpp/src/SharedLibraryFactory.cpp:316:32: error: ‘Status’ in ‘class shlibpp::SharedLibraryFactory’ does not name a type
  316 | shlibpp::SharedLibraryFactory::Status shlibpp::SharedLibraryFactory::getStatus() const
      |                                ^~~~~~
make[2]: *** [deps/sharedlibpp/src/CMakeFiles/shlibpp.dir/build.make:104: deps/sharedlibpp/src/CMakeFiles/shlibpp.dir/SharedLibraryFactory.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:224: deps/sharedlibpp/src/CMakeFiles/shlibpp.dir/all] Error 2
make: *** [Makefile:136: all] Error 2

Notes about FMI support

These are some random notes related to get blockfactory to generate FMUs according to the FMI standard ( https://fmi-standard.org/downloads/ ). It is meant to be more a place where to store relevant information, rather than an issue that should be closed in the short term.
@diegoferigo let me know if you are ok with this, or if you prefer that I move this notes/brainstorming somewhere else.

  • FMI version:

  • FMI direct feed-through:

    • Most existing blockfactory-blocks (i.e. the one from the https://github.com/robotology/wb-toolbox library) are either systems in which the output is a function of an exogenous state (such as the YARPRead block), or in which the output y is a algebraic function of the input u y = f(u), i.e."instantaneous" systems with just a direct feed-through. There are a few issues in the FMI issue tracker related to systems with direct feed-through, that we should checkout: modelica/fmi-standard#117, modelica/fmi-standard#126
    • TL;DR: Checkout direct feed-through (instantaneous) system FMI's issues
  • FMI for Model Exchange

    • Even if at the moment the blockfactory block interface is targeting mostly instantaneous systems, it has stub support (even if not complete) for the updating the state derivative and discrete state, so it is clear that the closes match between Model Exchange and Co-simulation is Model Exchange, so we should aim to expose blockfactory-blocks as FMUs for Model Exchange. Eventually, we can look into automatically transforming those in FMUs for Co-simulation, for example using FMI4cpp support for wrapping Model Exchange FMUs as Co-simulation FMUs : https://github.com/SFI-Mechatronics/FMI4cpp/issues/5 .
    • TL;DR: Wrap blockfactory's blocks as FMI-ME

Extension to newer versions of Matlab - 2020b:

I was able to successfully compile the code in Windows 10. I need the toolbox to generate Simulink block for Real-time SpeedGoat machine which only runs on Matlab 2020b. However the example problem in Model.mdl will not work when I try it on this version of Matlab. Weird (unreadable) error messages were thrown. Then I installed Matlab 2018b and the example problem (Model.mdl) worked perfectly! Is there any strategy that I can use to make the code to work in Matlab 2020b? I will greatly appreciate any advise from experienced users.
Thanks.

Errors running the Model.mdl of the example folder

my BlockFactory.mexa64 file address is /home/han/miniforge3/mex/BlockFactory.mexa64.But my model.mdl file address is /home/han/blockfactory/example/matlab/model.mdl.To ensure that these two files are in the same folder,I copied the BlockFactory.mexa64 file to the /home/han/blockfactory/example/matlab/BlockFactory.mexa64.Then I run the model.mdl here is the error displayed.
Error while obtaining sizes from MEX S-function 'BlockFactory in "odel/w// mask'Caused by:
MEX file "/home/hanblockfactory/example/matlab/BlockFactory.mexa64' invalid:libBleckFactoryCore.s9.0.8.5: cannot open shared object file : No such file or directoryComponent:Simwink Category:Model errorError while obtaining sizes from MEX S-function 'BlockFacto!y in 'Model/w//o mask'.Caused by:MEX file '/home/hablockfactory/example/matlab/BlockFactory.mexa64' invalid:libBleckFactoryCore.s9.0.8.5: cannot open shared object file : No such file or directory.

Malformed autogenerated code if the scoped name of the block contains newline character

Related to #16, on complex model with many subsystem, the scoped name of the block can be very long. During the autogeneration process, Simulink Coder tries to break lines properly, but it seems failing in this case. The obtained code is something similar:

// Store the block name
        blockInfo->setUniqueBlockName("torqueBalancingYoga/Dynamics and Kinematics/Kinemati
cs/DotJ Nu l_sole/S-Function");

In C++ is legit breaking a line, but only if a "" pair is added in between. The outcome of Simulink Coder is a source file that does not compile.

I already tried to apply a style with clang-format, but the malformed code does not get fixed anyway.

CMake Error related to MatLab Libraries with MATLAB 2021a/2022a on Windows 10 Version 21H2 with CMake 3.22.3

So, I have been trying to compile BlockFactory with Matlab R2021a and keep getting the following error.

PS F:\simconnect-monitor\blockfactory> cmake -S . -B build
-- Selecting Windows SDK version 10.0.17763.0 to target Windows 10.0.19044.
-- Could NOT find Matlab (missing: Matlab_MEX_LIBRARY Matlab_MX_LIBRARY ENG_LIBRARY) (found version "9.10")
CMake Error at C:/Program Files/CMake/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
  Could NOT find Matlab (missing: Matlab_MEX_LIBRARY Matlab_MX_LIBRARY
  MX_LIBRARY) (found version "9.10")
Call Stack (most recent call first):
  C:/Program Files/CMake/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE)
  cmake/FindMatlab.cmake:1872 (find_package_handle_standard_args)
  deps/mxpp/CMakeLists.txt:45 (find_package)


-- Configuring incomplete, errors occurred!
See also "F:/simconnect-monitor/blockfactory/build/CMakeFiles/CMakeOutput.log".

I have already tried also with Matlab R2022a (which I notice is not listed by FindMatlab.cmake so I installed R2021a. Still haven't uninstalled R2022a). I am on Windows 10 and have tried to add matlabr2021a_root\extern\lib\win64\microsoft to the PATH environment variable.

Sorry if the question seems trivial but I don't know what to do.

s-function

I am trying to install block factory for the first time. I want to run the example in the blockfactory folder first. When I tried to run it in Simulink, I got an error saying it couldn’t find blockfactory. I also tried to mex blockfactory.cpp, but I couldn’t compile it successfully. I want to know if I missed any steps. What should I do to make Simulink find blockfactory?

Compilation failure on Windows without Matlab installed

While setting up the Windows CI of the robotology-superbuild, I am experiencing this error:

2019-11-13T15:10:26.6676384Z   Checking Build System
2019-11-13T15:10:26.8114995Z   Creating directories for 'BlockFactory'
2019-11-13T15:10:26.9428104Z   Building Custom Rule D:/a/robotology-superbuild/robotology-superbuild/CMakeLists.txt
2019-11-13T15:10:26.9669757Z   Performing download step (git clone) for 'BlockFactory'
2019-11-13T15:10:27.0045007Z   Cloning into 'BlockFactory'...
2019-11-13T15:10:27.5160371Z   Already on 'master'
2019-11-13T15:10:27.5161191Z   Your branch is up to date with 'origin/master'.
2019-11-13T15:10:28.1069260Z   Performing update step for 'BlockFactory'
2019-11-13T15:10:28.3803191Z   Current branch master is up to date.
2019-11-13T15:10:28.9344208Z   No patch step for 'BlockFactory'
2019-11-13T15:10:28.9712795Z   Performing configure step for 'BlockFactory'
2019-11-13T15:10:28.9872562Z   Not searching for unused variables given on the command line.
2019-11-13T15:10:28.9902568Z   loading initial cache file D:/a/robotology-superbuild/robotology-superbuild/build/robotology/BlockFactory/CMakeFiles/YCMTmp/BlockFactory-cache-Debug.cmake
2019-11-13T15:10:30.1316248Z   -- The CXX compiler identification is MSVC 19.23.28106.4
2019-11-13T15:10:30.3629641Z   -- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.23.28105/bin/Hostx64/x64/cl.exe
2019-11-13T15:10:31.6319293Z   -- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.23.28105/bin/Hostx64/x64/cl.exe -- works
2019-11-13T15:10:31.6344818Z   -- Detecting CXX compiler ABI info
2019-11-13T15:10:32.8949280Z   -- Detecting CXX compiler ABI info - done
2019-11-13T15:10:32.8983496Z   -- Detecting CXX compile features
2019-11-13T15:10:32.8995940Z   -- Detecting CXX compile features - done
2019-11-13T15:10:33.1586860Z   -- Could NOT find Matlab (missing: Matlab_INCLUDE_DIRS Matlab_MEX_LIBRARY Matlab_MEX_EXTENSION Matlab_ROOT_DIR Matlab_MX_LIBRARY MX_LIBRARY ENG_LIBRARY MAIN_PROGRAM SIMULINK) (found version "NOTFOUND")
2019-11-13T15:10:33.2308553Z   -- Configuring done
2019-11-13T15:10:33.3369794Z   -- Generating done
2019-11-13T15:10:33.3398619Z   -- Build files have been written to: D:/a/robotology-superbuild/robotology-superbuild/build/robotology/BlockFactory
2019-11-13T15:10:33.3675435Z   Performing build step for 'BlockFactory'
2019-11-13T15:10:33.4514732Z   Microsoft (R) Build Engine version 16.3.2+e481bbf88 for .NET Framework
2019-11-13T15:10:33.4515253Z   Copyright (C) Microsoft Corporation. All rights reserved.
2019-11-13T15:10:33.4515586Z   
2019-11-13T15:10:33.8272750Z     Checking Build System
2019-11-13T15:10:33.9919084Z     Building Custom Rule D:/a/robotology-superbuild/robotology-superbuild/robotology/BlockFactory/deps/sharedlibpp/src/CMakeLists.txt
2019-11-13T15:10:34.1265901Z     version.cpp
2019-11-13T15:10:34.3974557Z     SharedLibrary.cpp
2019-11-13T15:10:35.7431655Z     SharedLibraryFactory.cpp
2019-11-13T15:10:36.1144519Z D:\a\robotology-superbuild\robotology-superbuild\robotology\BlockFactory\deps\sharedlibpp\src\SharedLibraryFactory.cpp(227,1): warning C4996: 'getenv': This function or variable may be unsafe. Consider using _dupenv_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\deps\sharedlibpp\src\shlibpp.vcxproj] [D:\a\robotology-superbuild\robotology-superbuild\build\BlockFactory.vcxproj]
2019-11-13T15:10:36.2704871Z     Generating Code...
2019-11-13T15:10:36.4058779Z   C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\ucrt\stdlib.h(1191): message : see declaration of 'getenv' [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\deps\sharedlibpp\src\shlibpp.vcxproj]
2019-11-13T15:10:36.4391075Z     Auto build dll exports
2019-11-13T15:10:36.6175692Z        Creating library D:/a/robotology-superbuild/robotology-superbuild/build/robotology/BlockFactory/lib/Debug/shlibppd.lib and object D:/a/robotology-superbuild/robotology-superbuild/build/robotology/BlockFactory/lib/Debug/shlibppd.exp
2019-11-13T15:10:36.7528705Z     shlibpp.vcxproj -> D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\bin\Debug\shlibppd.dll
2019-11-13T15:10:37.3485863Z     Building Custom Rule D:/a/robotology-superbuild/robotology-superbuild/robotology/BlockFactory/sources/Core/CMakeLists.txt
2019-11-13T15:10:37.4524846Z     Block.cpp
2019-11-13T15:10:37.9820992Z     BlockInformation.cpp
2019-11-13T15:10:38.2825423Z     Log.cpp
2019-11-13T15:10:38.8226196Z     Parameter.cpp
2019-11-13T15:10:39.0936118Z     Parameters.cpp
2019-11-13T15:10:40.2583101Z     ConvertStdVector.cpp
2019-11-13T15:10:40.6957546Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(758,82): error C2220: the following warning is treated as an error [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj] [D:\a\robotology-superbuild\robotology-superbuild\build\BlockFactory.vcxproj]
2019-11-13T15:10:40.7016614Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1581): message : see reference to function template instantiation 'void std::_Default_allocator_traits<_Alloc>::construct<_Ty,const double&>(_Alloc &,_Objty *const ,const double &)' being compiled [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7051818Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1581): message :         with [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7064525Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1581): message :         [ [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7071003Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1581): message :             _Alloc=std::allocator<int>, [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7077241Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1581): message :             _Ty=int, [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7083605Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1581): message :             _Objty=int [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7089752Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1581): message :         ] [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7096281Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1581): message : see reference to function template instantiation 'void std::_Default_allocator_traits<_Alloc>::construct<_Ty,const double&>(_Alloc &,_Objty *const ,const double &)' being compiled [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7111039Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1581): message :         with [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7117078Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1581): message :         [ [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7121720Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1581): message :             _Alloc=std::allocator<int>, [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7122305Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1581): message :             _Ty=int, [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7123067Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1581): message :             _Objty=int [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7123667Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1581): message :         ] [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7124238Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1616): message : see reference to function template instantiation 'void std::_Uninitialized_backout_al<_Alloc>::_Emplace_back<_Ty&>(_Ty &)' being compiled [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7124702Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1616): message :         with [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7162626Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1616): message :         [ [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7163336Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1616): message :             _Alloc=std::allocator<int>, [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7244930Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1616): message :             _Ty=const double [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7248448Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1616): message :         ] [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7251782Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1616): message : see reference to function template instantiation 'void std::_Uninitialized_backout_al<_Alloc>::_Emplace_back<_Ty&>(_Ty &)' being compiled [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7256463Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1616): message :         with [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7260324Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1616): message :         [ [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7263556Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1616): message :             _Alloc=std::allocator<int>, [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7266944Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1616): message :             _Ty=const double [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7270491Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1616): message :         ] [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7271180Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(1544): message : see reference to function template instantiation 'int *std::_Uninitialized_copy<_Iter,std::allocator<_Ty>>(const _InIt,const _InIt,int *,_Alloc &)' being compiled [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7274786Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(1544): message :         with [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7275649Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(1544): message :         [ [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7276172Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(1544): message :             _Iter=const double *, [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7276606Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(1544): message :             _Ty=int, [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7280506Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(1544): message :             _InIt=const double *, [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7281208Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(1544): message :             _Alloc=std::allocator<int> [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7281678Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(1544): message :         ] [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7282388Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(442): message : see reference to function template instantiation 'int *std::vector<int,std::allocator<_Ty>>::_Ucopy<_Iter>(_Iter,_Iter,int *)' being compiled [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7282907Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(442): message :         with [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7283326Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(442): message :         [ [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7283876Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(442): message :             _Ty=int, [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7284308Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(442): message :             _Iter=const double * [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7284723Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(442): message :         ] [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7285174Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(442): message : see reference to function template instantiation 'int *std::vector<int,std::allocator<_Ty>>::_Ucopy<_Iter>(_Iter,_Iter,int *)' being compiled [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7288009Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(442): message :         with [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7300785Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(442): message :         [ [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7301716Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(442): message :             _Ty=int, [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7302277Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(442): message :             _Iter=const double * [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7302705Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(442): message :         ] [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7306548Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(454): message : see reference to function template instantiation 'void std::vector<int,std::allocator<_Ty>>::_Range_construct_or_tidy<const double*>(_Iter,_Iter,std::forward_iterator_tag)' being compiled [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7307116Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(454): message :         with [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7308707Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(454): message :         [ [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7309260Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(454): message :             _Ty=int, [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7309688Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(454): message :             _Iter=const double * [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7310777Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(454): message :         ] [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7311379Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(454): message : see reference to function template instantiation 'void std::vector<int,std::allocator<_Ty>>::_Range_construct_or_tidy<const double*>(_Iter,_Iter,std::forward_iterator_tag)' being compiled [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7311817Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(454): message :         with [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7312219Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(454): message :         [ [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7312773Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(454): message :             _Ty=int, [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7313163Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(454): message :             _Iter=const double * [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7313546Z   C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(454): message :         ] [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7314139Z   D:\a\robotology-superbuild\robotology-superbuild\robotology\BlockFactory\sources\Core\src\ConvertStdVector.cpp(18): message : see reference to function template instantiation 'std::vector<int,std::allocator<_Ty>>::vector<std::_Vector_const_iterator<std::_Vector_val<std::_Simple_types<double>>>,void>(_Iter,_Iter,const _Alloc &)' being compiled [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7315737Z   D:\a\robotology-superbuild\robotology-superbuild\robotology\BlockFactory\sources\Core\src\ConvertStdVector.cpp(18): message :         with [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7316222Z   D:\a\robotology-superbuild\robotology-superbuild\robotology\BlockFactory\sources\Core\src\ConvertStdVector.cpp(18): message :         [ [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7324092Z   D:\a\robotology-superbuild\robotology-superbuild\robotology\BlockFactory\sources\Core\src\ConvertStdVector.cpp(18): message :             _Ty=int, [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7324707Z   D:\a\robotology-superbuild\robotology-superbuild\robotology\BlockFactory\sources\Core\src\ConvertStdVector.cpp(18): message :             _Iter=std::_Vector_const_iterator<std::_Vector_val<std::_Simple_types<double>>>, [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7325187Z   D:\a\robotology-superbuild\robotology-superbuild\robotology\BlockFactory\sources\Core\src\ConvertStdVector.cpp(18): message :             _Alloc=std::allocator<int> [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7325760Z   D:\a\robotology-superbuild\robotology-superbuild\robotology\BlockFactory\sources\Core\src\ConvertStdVector.cpp(18): message :         ] [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7326342Z   D:\a\robotology-superbuild\robotology-superbuild\robotology\BlockFactory\sources\Core\src\ConvertStdVector.cpp(18): message : see reference to function template instantiation 'std::vector<int,std::allocator<_Ty>>::vector<std::_Vector_const_iterator<std::_Vector_val<std::_Simple_types<double>>>,void>(_Iter,_Iter,const _Alloc &)' being compiled [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7326934Z   D:\a\robotology-superbuild\robotology-superbuild\robotology\BlockFactory\sources\Core\src\ConvertStdVector.cpp(18): message :         with [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7359258Z   D:\a\robotology-superbuild\robotology-superbuild\robotology\BlockFactory\sources\Core\src\ConvertStdVector.cpp(18): message :         [ [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7359786Z   D:\a\robotology-superbuild\robotology-superbuild\robotology\BlockFactory\sources\Core\src\ConvertStdVector.cpp(18): message :             _Ty=int, [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7360268Z   D:\a\robotology-superbuild\robotology-superbuild\robotology\BlockFactory\sources\Core\src\ConvertStdVector.cpp(18): message :             _Iter=std::_Vector_const_iterator<std::_Vector_val<std::_Simple_types<double>>>, [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7360731Z   D:\a\robotology-superbuild\robotology-superbuild\robotology\BlockFactory\sources\Core\src\ConvertStdVector.cpp(18): message :             _Alloc=std::allocator<int> [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7361162Z   D:\a\robotology-superbuild\robotology-superbuild\robotology\BlockFactory\sources\Core\src\ConvertStdVector.cpp(18): message :         ] [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7361765Z   D:\a\robotology-superbuild\robotology-superbuild\robotology\BlockFactory\sources\Core\src\ConvertStdVector.cpp(41): message : see reference to function template instantiation 'void blockfactory::core::convertStdVector<double,int>(const std::vector<double,std::allocator<_Ty>> &,std::vector<int,std::allocator<int>> &)' being compiled [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7362320Z   D:\a\robotology-superbuild\robotology-superbuild\robotology\BlockFactory\sources\Core\src\ConvertStdVector.cpp(41): message :         with [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7363094Z   D:\a\robotology-superbuild\robotology-superbuild\robotology\BlockFactory\sources\Core\src\ConvertStdVector.cpp(41): message :         [ [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7363646Z   D:\a\robotology-superbuild\robotology-superbuild\robotology\BlockFactory\sources\Core\src\ConvertStdVector.cpp(41): message :             _Ty=double [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7364053Z   D:\a\robotology-superbuild\robotology-superbuild\robotology\BlockFactory\sources\Core\src\ConvertStdVector.cpp(41): message :         ] [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7364547Z     Signal.cpp
2019-11-13T15:10:41.2808407Z     FactorySingleton.cpp
2019-11-13T15:10:41.6567432Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(758,82): warning C4244: 'initializing': conversion from '_Ty' to '_Objty', possible loss of data [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj] [D:\a\robotology-superbuild\robotology-superbuild\build\BlockFactory.vcxproj]
2019-11-13T15:10:41.6568254Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(758,82): warning C4244: with [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj] [D:\a\robotology-superbuild\robotology-superbuild\build\BlockFactory.vcxproj]
2019-11-13T15:10:41.6568763Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(758,82): warning C4244: [ [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj] [D:\a\robotology-superbuild\robotology-superbuild\build\BlockFactory.vcxproj]
2019-11-13T15:10:41.6569206Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(758,82): warning C4244: _Ty=const double [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj] [D:\a\robotology-superbuild\robotology-superbuild\build\BlockFactory.vcxproj]
2019-11-13T15:10:41.6569600Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(758,82): warning C4244: ] [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj] [D:\a\robotology-superbuild\robotology-superbuild\build\BlockFactory.vcxproj]
2019-11-13T15:10:41.6570017Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(758,82): warning C4244: and [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj] [D:\a\robotology-superbuild\robotology-superbuild\build\BlockFactory.vcxproj]
2019-11-13T15:10:41.6570396Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(758,82): warning C4244: [ [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj] [D:\a\robotology-superbuild\robotology-superbuild\build\BlockFactory.vcxproj]
2019-11-13T15:10:41.6571020Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(758,82): warning C4244: _Objty=int [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj] [D:\a\robotology-superbuild\robotology-superbuild\build\BlockFactory.vcxproj]
2019-11-13T15:10:41.6571398Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(758,82): warning C4244: ] [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj] [D:\a\robotology-superbuild\robotology-superbuild\build\BlockFactory.vcxproj]
2019-11-13T15:10:41.6571926Z D:\a\robotology-superbuild\robotology-superbuild\robotology\BlockFactory\sources\Core\src\FactorySingleton.cpp(29,1): error C2220: the following warning is treated as an error [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj] [D:\a\robotology-superbuild\robotology-superbuild\build\BlockFactory.vcxproj]
2019-11-13T15:10:41.6572444Z D:\a\robotology-superbuild\robotology-superbuild\robotology\BlockFactory\sources\Core\src\FactorySingleton.cpp(29,1): warning C4996: 'getenv': This function or variable may be unsafe. Consider using _dupenv_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj] [D:\a\robotology-superbuild\robotology-superbuild\build\BlockFactory.vcxproj]

The S-function does not compile with Matlab R2018b

When compiling the Mex target, the compilation fails with the following error:

Invalid MEX-file '/.../BlockFactory.mexa64': Gateway function is missing.

This happens only on Matlab R2018b. The same commit builds fine on (at least) R2018a.

Notes about Modelica support

This are some random notes related to get blockfactory to generate Modelica blocks. It is meant to be more a place where to store relevant information, rather than an issue that should be closed in the short term.

External C code can be called from Modelica blocks using "External Functions', see http://book.xogeny.com/behavior/functions/external/ for more info.

An example of a simple Modelica MIMO block implemented using C external code (in that case to enable ROS integration) can be found in https://github.com/ModROS/ROS_Bridge/blob/d9a011da3f079b12ac93b106811f3bf585add7ec/Blocks/ROS_Sampler.mo . See https://github.com/ModROS/ROS_Bridge#usage-summary for a more detailed description of the block.

Remove Block::checkParameters ?

The Block::checkParameters seems to be unused and never implemented in any derived class. I guess it can be safely removed, unless there is anything that I am missing?

Suggestion for configuring Size And Ports into Initialize phase

Hi all,

My colleagues (@liesrock @alaurenzi) and I are working with the blockfactory to use our framework in Matlab/Simulink.

Is there a possibility to declare a size port during the initialize phase?

Since I use the configureSizeAndPorts method to declare my inputs and outputs with a dynamic size port and I know the size after the initialize phase, I was wondering if there is a chance to do it in this phase.

Davide.

Improve Blockfactory interface with wrapped C++ code making it more generic

This epic will track the steps that aim at improving the Blockfactory interface with the wrapped C++ code. This goal was motivated by the drawbacks of using the Blockfactory for generating blocks that can be called from other imperative languages, among which we find the following:

  • You need to write for each block some simulink related code (XML files). These files could eventually be generated automatically (#10).
  • This interface with the wrapped C++ code is currently very Simulink centric, inheriting from its constraints. For instance, setting the inputs is done through an opaque BlockInformation, instead of a setInputs function. You need to define the specific BlockInformation for each block.

A new improved interface could be defined for future block implementations, while a glue code could be created for migrating the existing blocks from the new interface to the new one. Simulnik has its own interface for blocks, implemented through the S-function block. The abstraction to a more generic C++ interface is then made at the Blockfactory framework level. A possible evolution of the Blockfactory interface could result in the creation of a new S-fucntion implementing that new C++ API.

This work has to account for the Simulink requirements, among which we have:

  • There are specific initialization phases of the S-function block, defined through callback functions called in specific sequence.
  • Some of these specific phases are dedicated to the definition of parameters to be passed to the wrapped C++ function, number and size of input/output ports.
  • Signal sizes can be defined as dynamic (variable) or fixed if they are known a priori.
  • The callback mdlOutputs calls the wrapped C++ code and maps its output to the block output. When the block processing sequence reaches that callback, Simulink already knows the signal dimensions according to the flow and allocates the required buffers.

In order to reach the goal of improving the Blockfactory interface with the wrapped C++ code, we should define an MVP (Minimum Viable Product) and iterate on it, for the sake of having a more trackable and incremental task.

The task breakown would be as follows:

  • Go through the Blockfactory tutorial in order to get acquainted with its workflow, including the steps to create a new library, and eventually the how the Blockfactory API is mapped to the S-Function interface in Simulink.
  • Start with an existing block as a first application example (for instance example/include/SignalMath.h).
  • Identify possible improvements to the Blockfactory API.

One of the points to be addressed in this last step would be the choice between having an interface that takes multiple parameters and different inputs, or instead, an interface that uses a single input argument and a single output argument with all the buffers, as it is currently implemented.

Compilation failed with MATLAB 2018a on Windows 10 Version 1803 with CMake 3.12.0

Compiling BlockFactory with MATLAB 2018a on Windows 10 Version 1803 with CMake 3.12.0 we got the following error:

  C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.14.26428\bin\HostX86\x64\link.exe /ERRORREPORT:QUEUE /OUT:"C:\dev\git\robotology-superbuild\build\robotology\BlockFactory\bin\Release\BlockFactorySimulinkCoder.dll" /INCREMENTAL:NO /NOLOGO /LIBPATH:"C:\dev\vcpkg\installed\x64-windows\lib" /LIBPATH:"C:\dev\vcpkg\installed\x64-windows\lib\manual-link" ..\..\lib\Release\BlockFactoryCore.lib ..\..\lib\Release\shlibpp.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib "C:\dev\vcpkg\installed\x64-windows\lib\*.lib" /DEF:"C:/dev/git/robotology-superbuild/build/robotology/BlockFactory/sources/SimulinkCoder/SimulinkCoder.dir/Release/exports.def" /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /manifest:embed /PDB:"C:/dev/git/robotology-superbuild/build/robotology/BlockFactory/bin/Release/BlockFactorySimulinkCoder.pdb" /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:"C:/dev/git/robotology-superbuild/build/robotology/BlockFactory/lib/Release/BlockFactorySimulinkCoder.lib" /MACHINE:X64  /machine:x64 /DLL SimulinkCoder.dir\Release\CoderBlockInformation.obj
     Creating library C:/dev/git/robotology-superbuild/build/robotology/BlockFactory/lib/Release/BlockFactorySimulinkCoder.lib and object C:/dev/git/robotology-superbuild/build/robotology/BlockFactory/lib/Release/BlockFactorySimulinkCoder.exp
  SimulinkCoder.vcxproj -> C:\dev\git\robotology-superbuild\build\robotology\BlockFactory\bin\Release\BlockFactorySimulinkCoder.dll
AppLocalFromInstalled:
  C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -noprofile -File "C:\dev\vcpkg\scripts\buildsystems\msbuild\applocal.ps1" "C:\dev\git\robotology-superbuild\build\robotology\BlockFactory\bin\Release\BlockFactorySimulinkCoder.dll" "C:\dev\vcpkg\installed\x64-windows\bin" "SimulinkCoder.dir\Release\SimulinkCoder.tlog\SimulinkCoder.write.1u.tlog" "SimulinkCoder.dir\Release\vcpkg.applocal.log"
FinalizeBuildStatus:
  Deleting file "SimulinkCoder.dir\Release\SimulinkCoder.tlog\unsuccessfulbuild".
  Touching "SimulinkCoder.dir\Release\SimulinkCoder.tlog\SimulinkCoder.lastbuildstate".
Done Building Project "C:\dev\git\robotology-superbuild\build\robotology\BlockFactory\sources\SimulinkCoder\SimulinkCoder.vcxproj" (default targets).
Done Building Project "C:\dev\git\robotology-superbuild\build\robotology\BlockFactory\ALL_BUILD.vcxproj" (default targets) -- FAILED.

Build FAILED.

"C:\dev\git\robotology-superbuild\build\robotology\BlockFactory\ALL_BUILD.vcxproj" (default target) (1) ->
"C:\dev\git\robotology-superbuild\build\robotology\BlockFactory\sources\Simulink\Simulink.vcxproj" (default target) (5) ->
(Link target) ->
  LINK : error LNK2001: unresolved external symbol mexCreateMexFunction [C:\dev\git\robotology-superbuild\build\robotology\BlockFactory\sources\Simulink\Simulink.vcxproj]
  LINK : error LNK2001: unresolved external symbol mexDestroyMexFunction [C:\dev\git\robotology-superbuild\build\robotology\BlockFactory\sources\Simulink\Simulink.vcxproj]
  LINK : error LNK2001: unresolved external symbol mexFunctionAdapter [C:\dev\git\robotology-superbuild\build\robotology\BlockFactory\sources\Simulink\Simulink.vcxproj]
  LINK : error LNK2001: unresolved external symbol mexfilerequiredapiversion [C:\dev\git\robotology-superbuild\build\robotology\BlockFactory\sources\Simulink\Simulink.vcxproj]
  C:/dev/git/robotology-superbuild/build/robotology/BlockFactory/lib/Release/BlockFactory.lib : fatal error LNK1120: 4 unresolved externals [C:\dev\git\robotology-superbuild\build\robotology\BlockFactory\sources\Simulink\Simulink.vcxproj]

    0 Warning(s)
    5 Error(s)

Time Elapsed 00:00:08.46

Implement support for stateful systems

This is probably a long term goal, but for now let's collect some possible basic steps:

  • Add support for reading continuous state in BlockInformation
  • Add support for reading and writing discrete state in BlockInformation
  • Implement support for reading continuous state in SimulinkBlockInformation (probably using ssGetContStates)
  • Implement support for reading discrete state in SimulinkBlockInformation (probably using ssGetDiscStates)
  • Implement support for reading continuous state in CoderBlockInformation
  • Implement support for reading and writing discrete state in CoderBlockInformation
  • Correctly implement mdlDerivatives in the BlockFactory S-Function:
    static void mdlDerivatives(SimStruct* /*S*/)
  • Permit to specify that a (input) port of the block is not direct feed-through (see ssSetInputPortDirectFeedThrough and https://drake.mit.edu/doxygen_cxx/classdrake_1_1systems_1_1_system.html the drake::systems::System<T>::xxxDirectFeedthrough methods for an inspiration related to the corresponding Drake API . At the moment this is hardcoded at Simulink level in
    ssSetInputPortDirectFeedThrough(simstruct, idx, 1);
    .

Compilations fail with Matlab2019b on Macos

Compilation is failing with the following error message:

$ make
[  9%] Built target mxpp
[ 28%] Built target shlibpp
[ 71%] Built target Core
[ 80%] Built target SimulinkCoder
[ 85%] Linking CXX shared library ../../lib/BlockFactory.mexmaci64
Undefined symbols for architecture x86_64:
  "_mexfilerequiredapiversion", referenced from:
     -exported_symbol[s_list] command line option
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [lib/BlockFactory.mexmaci64] Error 1
make[1]: *** [sources/Simulink/CMakeFiles/Simulink.dir/all] Error 2
make: *** [all] Error 2

When installing the blockfactory and any blockfactory-based plugin in the `/usr` prefix ideally no enviromental variable would need to be set to find the plugins

@traversaro wrote:

Additionally, w.r.t. to debian packaging, it would be good if the default installation prefix was in the search path even without the need to define BLOCKFACTORY_PLUGIN_PATH, so that if in the future we have deb package of BlockFactory + WB-Toolbox, they will just work out of the box without the need to define any env variable.

@diegoferigo replied:

This is more complicated. If we install plugins in one of the default linker folder, we get the same problems due to LD_LIBRARY_PATH we recently discussed in robotology/ycm-cmake-modules#199 and robotology/robotology-superbuild#97.

Errors running the Model.mdl of the example folder

I was trying to run the Model.mdl file of the example folder but I got the following errors in Simulink:

Error:Error reported by S-function 'BlockFactory' in 'Model/w// mask': Failed to create factory Factory error (2): ExampleToolbox: cannot open shared object file: No such file or directory Failed to get factory object (className=SignalMath,libName=ExampleToolbox) Failed to get the factory

Error:Error reported by S-function 'BlockFactory' in 'Model/w//o mask': Failed to create factory Factory error (2): ExampleToolbox: cannot open shared object file: No such file or directory Failed to get factory object (className=SignalMath,libName=ExampleToolbox) Failed to get the factory

I am using the Matlab version R2023a on Ubuntu 22.04; can this problem be related to my version of Matlab or Ubuntu or is it related to something else?

Current status of tunable parameters

Despite the code generated with Simulink Coder supports tunable parameters, the ones coming from the block masks are not accessible. Refer to the Operation selected from the drop-down menu of the SignalMath block of the example:

params.storeParameter<std::string>(
"Addition",
blockfactory::core::ParameterMetadata(
blockfactory::core::ParameterType::STRING, 2.0, 1.0, 1.0, "Operation"));

In line 105 it is hardcoded, and cannot be changed.

Instead, for what concern parameters that come from the workspace (and constants present in the Simulink Model are analogous), they are stored in a static struct:

struct P_AutogenerationExample_T_
{
real_T Constant_Value[5]; /* Expression: [1 2 3 4 5]
* Referenced by: '<Root>/Constant'
*/
};

AutogenerationExampleModelClass::AutogenerationExampleModelClass()
{
static const P_AutogenerationExample_T AutogenerationExample_P_temp = {
/* Expression: [1 2 3 4 5]
* Referenced by: '<Root>/Constant'
*/
{1.0, 2.0, 3.0, 4.0, 5.0}}; /* Modifiable parameters */
/* Initialize tunable parameters */
AutogenerationExample_P = AutogenerationExample_P_temp;
}

Despite they can be changed during runtime (the symbol is static), it's basically impossible to know what is the index of the parameter you want to access. In this case there's only one, but if there were more, the cpp will contain a curly braces initialization for all of them. It would be great having a way to access these parameters e.g. by name (and I mean string, not name of the variable like P_AutogenerationExample_T_.Constant_Value in this case), but the approach used by the coder does not allow it.

cc @traversaro

Load the plugin library also from the automatically generated code

Before separating this repository, the class autogenerated by Simulink Coder was linked together with the library that contains the blocks. This allowed to instantiate the blocks directly, including their headers to the header of the autogenerated class (using the TLC functionalities).

This inclusion would be possible also now, after the split, if the class of the block would expose a parameter with the full header name instead of only the block class name. To do so, however, the block developer should remember to add this new parameter since it would be difficult to do it automatically.

Since we already have the factory working for loading the block library from the Simulink S-Function, I would rather use this approach also from the autogenerated class. In this way there isn't anymore the need to specify the block header since only its interface would suffice.

In Simulink allow to export S-Function Blocks that support to run as Co-Simulation on Multiple Cores

As documented in https://it.mathworks.com/help/simulink/ug/run-co-simulation-components-on-multiple-cores.html, in Simulink it is possible to run the update of different blocks in different threads, if the block respect some conditions for which they can be consider Co-Simulation slaves, the requirements, listed in https://it.mathworks.com/help/simulink/ug/run-co-simulation-components-on-multiple-cores.html under "S-Function Block Limitations", are:

  • Must have a single rate — ssSetSampleTime(SimStruct *S, int_T st_index, time_T period) must be called to register only one discrete rate.
  • Must have a fixed sample time — In time_T ssSetSampleTime(SimStruct *S, int_T st_index, time_T period), period cannot be VARIABLE_SAMPLE_TIME.
  • Cannot have continuous states — In ssSetNumContStates(SimStruct *S, int_T n), n must be 0
  • Must have no direct feedthrough ports — In ssSetInputPortDirectFeedThrough(SimStruct *S, int_T port, int_T dirFeed), dirFeed must be 0 for each input port.
  • Must be thread safe — In ssSetRuntimeThreadSafetyCompliance(SimStruct *S, int_T val), val must be RUNTIME_THREAD_SAFETY_COMPLIANCE_TRUE.
  • Must be exception-free — In ssSetOptions(SimStruct *S, uint_T options), options must include SS_OPTION_EXCEPTION_FREE_CODE.

Some of them are not dictated by BlockFactory itself, so we should find a way to be configurable from the developer develoing BlockFactory blocks. Furthermore, this mode seems to support natively FMI, so an alternative way to achieve this could be to work on #5 .

Blockfactory does not re-load config file

If in the C++ library loaded by blockfactory a configuration file loaded from ResourceFinder is used, in order to see any edit to the configuration taking place it is necessary to restart MATLAB

Clarify status of support of stateful systems

The blockfactory::core::Block interface of blockfactory support the following methods that seem to indicate that it supports discrete and continuous stateful systems:

  • blockfactory::core::Block::numberOfDiscreteStates()
  • blockfactory::core::Block::numberOfContinuousStates()
  • blockfactory::core::Block::updateDiscreteState(const BlockInformation* blockInfo)
  • blockfactory::core::Block::stateDerivative(const BlockInformation* blockInfo)

however in practice it is not clear if these functions are used at all and how they are supposed to be used, as BlockInformation contain no state information at all. It may be worth to document that this methods are not used at all, and eventually remove that notice when will support stateful systems.

Migration TODO

The code hosted in this repository is the former core of robotology/wb-toolbox. Most of the code was migrated with the first commits.

Here follows a list of remaining tasks to align this repository with the features of its parent:

  • Update the tlc file with the new headers folders and namespaces
  • Add Travis CI and Appveyor tests
  • Enable Codacy
  • Migrate the documentation
  • Update the doxygen documentation
  • Create a new ghpages-based website

Add a unique identifier to Block objects

Probably coming from the Simulink inheritage and its Simstruct, we never had the need to assign to a block a unique id or name. However, especially with the new plugin architecture, it might be worth adding the following to blockfactory::core::Block

protected:
    std::string name;
public:
    Block(const std::string& name);
    std::string getName() const;
    void setName() const;

Since these are not virtual methods, the downstream classes that implement the interface would not need to be modified.

For what concern the S-Function, we should store it as additional RTW parameter and modify the TLC file to get this information. If we ever want in the future to create a system to override mask parameters, being able to access the block object with a unique id will be fundamental.

It is not clear to me if we should also add a getName method in the BlockInformation interface.

Automatically generate required Simulink library files

Original comment by @traversaro in #5 (comment) :

Generate the XML files after the build by running a program that invokes the configureSizeAndPorts method of the block to wrap as FMU

Interestingly, part of this solution could be eventually re-used to automatize the existing manual process of writing the .slx file of the block library (i.e. the one described in https://robotology.github.io/blockfactory/mkdocs/create_new_library/#create-an-new-simulink-library).

As you can check by manually inspecting an .slx file, and by reading in https://stackoverflow.com/questions/23408186/information-about-simulink-mdl-and-slx-formats, the .slx is just a .zip file that contains a bunch of .xml (and some other format) files. A complete parser for reading/writing .slx does not seem to be available or feasible, but perhaps it could make sense to have a "template" .slx that can be be configured based on the library blocks' and ports.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.