The single-execution mode and the fact that the set of utilized simulation modules used in an active ViennaMOS simulation is significantly smaller than the usual scenarios of large-scale component execution frameworks simplifies the data communication requirements considerably. Therefore, to keep the implementation simple - yet effective - and also highly maintainable due to a simplified code base, a straightforward centralized database is utilized by ViennaMOS. Each module stores and accesses data in this database, which is in turn governed by the framework. This storage is solely used to exchange data between the individual modules and is not related to the visualization backend.
To ensure flexibility with respect to the supported storage types, a storage setup based on an associative container mapping a string-based key with a generic object pointer is utilized. The generic object pointer is implemented via a void smart pointer, provided by the Boost Smart Pointers library [51]. The use of smart pointers ensures that upon destruction the destructor of the stored, type-erased object is called appropriately, thus eliminating memory leaks.