Calculator object
Calculator |
The calculator object executes C++ code. The code is compiled into a shared object
file which is loaded when execution is switched on. An arbitrary number of input and
output variables can be created from communication with other vimms objects.
The calculator object provides direct access
to input and output variables from within the code. Variable definitions
are automatically generated and allow writing simple functions within seconds.
For basic documentation read on, otherwise more advanced documents exist:
Basic functionality
Input and output variables are defined using the two list boxes at the top of
the property dialog. The C++ code for accessing input and output variables
is automatically created and can be viewed by pressing the "Show all code"
button. Those variables are derived from classes VflVar and VflVarArray,
which are documented here. These classes provide
operators so that the I/O variables behave similar to the corresponding
basic data type variables. A "Float" output variable can for example be treated
like a normal C-style "double" variable.
A single function extern "C" bool run() must be defined
which is called when the object is executed. The return value
determines whether execution should continue after the object
has been evaluated. If the user defined code writes to the standard output,
the text is displayed in the message window during run-time if vfl is started
with the GUI. Optionally two other functions can be defined:
extern "C" bool init() and extern "C" void stop(). The function init
is called when the calculator object is initialized and can be used for initializing
the user program. When the initialization was successful the function should return true,
otherwise the object is disabled. The stop function is called when execution is switched
of and all execution threads have terminated.
For creating larger pieces of code an external editor can be specified
in the Settings-Dialog which is available via the "Options" menu. This
editor is started when pressing the button "Edit externally...". The
code is compiled when pressing the "Compile"-button, when
the external editor quits, or when the property
dialog is close and the code has been changed. Compiler error or warning
messages are displayed in the "Compile output" window. The compiler g++ is called
with the following command line:
g++ -fpic -shared -O2 -Ivimmspath additional parameters...
vimmspath is replaced with the directory containing the vfl binary.
Additional compiler
parameters like for example include directories can be specified in
the settings dialog. If compilation succeeds the resulting shared object
binary is stored within the vimms project file. If transporting a vimms project
file to another computer it may sometimes be necessary to recompile all code pieces
contained in object. This is done using the "Recompile all" function in the "File" menu.
Debugging calculator objects
If debug is enabled in the settings menu, the compiler is called with the following
command line:
g++ -fpic -shared -g -fno-inline -Ivimmspath additional parameters...
The compiler source is written to a file /tmp/calctest.cpp and not
deleted after compilation. So it can be used for setting breakpoints using a source
code debugger. When debugging if vfl has been started with the GUI, it should be done
in the following way: Enable debugging and then load the file containing objects to
be debugged. Recompile the object to be debugged.
Now start execution.
Start a debugger loading the vfl binary and attach it to the running execution process (vfl is called with
the parameter --link). Then set the breakpoint in the source file.
After debugging delete all /tmp/calctest*.cpp files.
The Vimms User Manual