4 std::shared_ptr<IMappingDatabasePort> model)
5 : sm_(
std::move(sm)), model_(
std::move(model)) {}
7std::unordered_map<std::string, ResolvedParam>
11 std::unordered_map<std::string, ResolvedParam> out;
12 auto smMap = sm_->getParams();
13 auto modelMap = model_->getParams();
15 for (
const auto& p : params) {
16 const auto& name = p.name;
17 auto it = smMap.find(name);
18 if (it != smMap.end()) {
20 out[name] = { it->second.block, it->second.code, p.complex,
false };
23 it = modelMap.find(name);
24 if (it != modelMap.end()) {
27 "A BSM parameter was requested during an SM calculation. Check the MARTY mapping files.");
29 out[name] = { it->second.block, it->second.code, p.complex,
true };
31 LOG_ERROR(
"Mapping", std::string(
"Parameter not found: ") + name);
38 return std::make_unique<ParameterResolverProxy>(sm_, model_);
#define LOG_ERROR(type,...)
Macro for logging error messages and terminating the application.
Declares a proxy implementation of IParameterResolver.
std::unique_ptr< IParameterResolver > clone() const override
Clones the resolver.
std::unordered_map< std::string, ResolvedParam > resolve(const std::vector< Extractor::Parameter > ¶ms, bool modelIsSM) const override
Resolves a list of extracted parameters.
ParameterResolverProxy(std::shared_ptr< IMappingDatabasePort > sm, std::shared_ptr< IMappingDatabasePort > model)
Constructs a resolver from SM and model databases.
Hash specialization for SymbolId<Tag>.