aboutsummaryrefslogtreecommitdiff
path: root/src/openvic-simulation/history/CountryHistory.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/openvic-simulation/history/CountryHistory.cpp')
-rw-r--r--src/openvic-simulation/history/CountryHistory.cpp44
1 files changed, 32 insertions, 12 deletions
diff --git a/src/openvic-simulation/history/CountryHistory.cpp b/src/openvic-simulation/history/CountryHistory.cpp
index 48b30e6..681b2b9 100644
--- a/src/openvic-simulation/history/CountryHistory.cpp
+++ b/src/openvic-simulation/history/CountryHistory.cpp
@@ -52,20 +52,40 @@ bool CountryHistoryMap::_load_history_entry(
})(value);
}
- Technology const* technology = technology_manager.get_technology_by_identifier(key);
- if (technology != nullptr) {
- bool flag;
- if (expect_int_bool(assign_variable_callback(flag))(value)) {
- return entry.technologies.emplace(technology, flag).second;
- } else return false;
+ {
+ Technology const* technology = technology_manager.get_technology_by_identifier(key);
+ if (technology != nullptr) {
+ return expect_int_bool(
+ [&entry, technology](bool flag) -> bool {
+ if (!entry.technologies.emplace(technology, flag).second) {
+ Logger::error(
+ "Duplicate entry for technology ", technology->get_identifier(), " in history of ",
+ entry.get_country().get_identifier(), " at date ", entry.get_date()
+ );
+ return false;
+ }
+ return true;
+ }
+ )(value);
+ }
}
- Invention const* invention = invention_manager.get_invention_by_identifier(key);
- if (invention != nullptr) {
- bool flag;
- if (expect_bool(assign_variable_callback(flag))(value)) {
- return entry.inventions.emplace(invention, flag).second;
- } else return false;
+ {
+ Invention const* invention = invention_manager.get_invention_by_identifier(key);
+ if (invention != nullptr) {
+ return expect_bool(
+ [&entry, invention](bool flag) -> bool {
+ if (!entry.inventions.emplace(invention, flag).second) {
+ Logger::error(
+ "Duplicate entry for invention ", invention->get_identifier(), " in history of ",
+ entry.get_country().get_identifier(), " at date ", entry.get_date()
+ );
+ return false;
+ }
+ return true;
+ }
+ )(value);
+ }
}
return _load_history_sub_entry_callback(