Program Listing for File ConfiguredModule.cpp¶
↰ Return to documentation for file (core/src/ConfiguredModule.cpp)
#include "include/ConfiguredModule.hpp"
#include "include/Configurator.hpp"
#include "include/NextsimModule.hpp"
#include <boost/program_options.hpp>
#include <stdexcept>
namespace Nextsim {
const std::string ConfiguredModule::MODULE_PREFIX = "Modules";
std::string ConfiguredModule::addPrefix(const std::string& moduleName)
{
return MODULE_PREFIX + "." + moduleName;
}
std::string ConfiguredModule::getImpl(const std::string& module)
{
boost::program_options::options_description opt;
opt.add_options()(addPrefix(module).c_str(),
boost::program_options::value<std::string>()->default_value(""),
("Load an implementation of " + module).c_str());
std::string implString = Configurator::parse(opt)[addPrefix(module)].as<std::string>();
// Only do anything if the retrieved option is not the default value
return implString;
}
ConfigMap ConfiguredModule::getAllModuleConfigurations()
{
ConfigMap iiMap;
for (const auto& moduleImpl : Module::ImplementationNames::getAll()) {
iiMap[moduleImpl.first] = moduleImpl.second;
}
return iiMap;
}
} /* namespace Nextsim */