35#ifndef modulemanager_h
36#define modulemanager_h
48#define _IFT_ModuleManager_nmodules "nmodules"
102 for (
auto& mir: modRecs){
104 mir.giveRecordKeywordField(modName);
107 std :: unique_ptr< M > module = this->
CreateModule(modName.c_str(), modIndex0,
emodel);
109 OOFEM_ERROR(
"unknown module (%s)", modName.c_str());
112 module->initializeFrom(mir);
143 if ( num >= 1 && num <= (
int)
moduleList.size() ) {
Internal range-like class, return type for giveGroupRecords methods.
InputRecordType
Determines the type of input record.
GroupRecords giveGroupRecords(const std::shared_ptr< InputRecord > &ir, InputFieldType ift, const std::string &name, InputRecordType irType, bool optional)
ModuleManager(EngngModel *emodel)
virtual std::unique_ptr< M > CreateModule(const char *name, int n, EngngModel *emodel)=0
virtual void registerModule(std::unique_ptr< M > &module)
int giveNumberOfModules() const
ModuleManager & operator=(const ModuleManager &)=delete
EngngModel * emodel
Associated Engineering model.
int numberOfModules
Number of modules.
virtual int instanciateYourself(DataReader &dr, const std::shared_ptr< InputRecord > &irPtr, InputFieldType ift, const std::string &name, DataReader::InputRecordType irType)
virtual const char * giveClassName() const =0
Returns class name of the receiver.
ModuleManager(const ModuleManager &)=delete
std::vector< std::unique_ptr< M > > moduleList
Module list.
const char * InputFieldType
Identifier of fields in input records.
#define VERBOSE_PRINT0(str, number)