The module management system is the vehicle for the generic programming level of the CRL. In generic programming, the user is able to associate a process with an EarObject data structure, and use a simple interface to access the process' functions. Because there are major routines, such as ReadPars and PrintPars which are common to all of the process modules, it is possible to write simulation programs in which the modules used are completely interchangeable. Using variable names read from parameter files, it is possible to change the modules used in a simulation program, or even remove them entirely, without re-compilation of the source code.
Most of the functionality of the module management system is invisible to the user, the interface is via the Do...(...) commands described in the generic programming example in previous sections (see "Main Simulation Process", "Initialising the EarObject Data Structures" and "Setting the Process Modules"). The module management system uses function overloading, so there are no excessive overheads for calling function routines in this way.
A list of the modules available is given in the reference chapter of the manual.