aboutsummaryrefslogtreecommitdiff
path: root/src/openvic-simulation/economy/Good.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/openvic-simulation/economy/Good.cpp')
-rw-r--r--src/openvic-simulation/economy/Good.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/openvic-simulation/economy/Good.cpp b/src/openvic-simulation/economy/Good.cpp
index f1da8bd..027fb5f 100644
--- a/src/openvic-simulation/economy/Good.cpp
+++ b/src/openvic-simulation/economy/Good.cpp
@@ -1,6 +1,11 @@
#include "Good.hpp"
#include <cassert>
+#include <map>
+#include <string_view>
+#include "dataloader/NodeTools.hpp"
+#include "openvic-dataloader/v2script/AbstractSyntaxTree.hpp"
+#include "types/fixed_point/FixedPoint.hpp"
using namespace OpenVic;
using namespace OpenVic::NodeTools;
@@ -132,3 +137,17 @@ bool GoodManager::load_goods_file(ast::NodeCPtr root) {
lock_goods();
return ret;
}
+
+node_callback_t GoodManager::expect_goods_map(callback_t<std::map<Good const*, fixed_point_t>> cb) {
+ return [this, cb](ast::NodeCPtr node) -> bool {
+ std::map<Good const*, fixed_point_t> goods_map;
+ bool res = expect_good_dictionary([&goods_map](const Good & key, ast::NodeCPtr value) -> bool {
+ fixed_point_t good_value;
+ bool res = expect_fixed_point((assign_variable_callback(good_value)))(value);
+ goods_map.emplace(&key, good_value);
+ return res;
+ })(node);
+ res &= cb(goods_map);
+ return res;
+ };
+} \ No newline at end of file