To insure extendability and maintainability, SG++ is divided into a number of modules that implement different functionality.
Different modules can be compiled independently from each other.
The modules can depend on each other. Especially all depend on the base module. Libraries are generated for all modules. The following modules are available:
The modules correspond to the C++ namespaces. Roughly speaking, all files from one namespace belong to the respective module. But a module can contain files belonging to some another namespace, i.e. static factory methods in the namespace sgpp::op_factory.
Please note that the modularization results in a somewhat unconventional folder structure. Keeping
as "modular" as possible requires to have everything belonging to a module below that directory. This especially applies to the src folder. Its subdirectories reflect the namespaces. Therefore, the module name reappears once again: