eVaf
eVaf Documentation

eVaf is a C++ cross-platform modular application development framework using Qt.The eVaf main executable is an empty container that needs to be filled with external modules to provide the required functionality. The eVaf main GUI executable, if run without external modules, shows just an empty window that can be closed to terminate the application. The eVaf main CLI executable runs until terminated with CTRL+C.

eVaf modules are loadable libraries (.so or .dll files) that implement the features and functions of the application. By combining together different modules, an unique application can be made in very little time. Every module implements a specific function or feature and only when put together, the actual application is created.

eVaf interfaces are the way how the functionality of eVaf modules is used. Every feature implemented by a module has an interface used to feed the module with data or request information from the module.

eVaf events are used by modules to send out information that they have collected or processed. While interfaces are the way how to feed modules with data or requests, then events are mostly for spontaneous data.

Events broadcast by modules can have data objects attached to them. To avoid unnecessary copying of data, these data objects are shared and reference-counted. When the data object is attached to the event, its internal reference counter is increased by one. When the eVaf event queue has delivered the event to all the subscribers, it destroys the event and decreases the reference-counter of the data object by one. If no other module kept the data object, then the data object's reference counter becomes zero and it is destroyed too.