diff options
author | zaaarf <zaaarf@proton.me> | 2023-09-20 22:06:29 +0200 |
---|---|---|
committer | zaaarf <zaaarf@proton.me> | 2023-09-20 22:06:29 +0200 |
commit | 8a4e3e02f23fa1cf3e61f39fbdc8d3fc946a0473 (patch) | |
tree | 1f7abd648cd6819124fb28c309d3f973aff8ae23 /src/openvic-simulation/economy/Good.cpp | |
parent | 4550acf29bd3ce4ff9b9d14788de21d96a5ef90a (diff) |
feat: added expect_goods_map function to GoodsManager
Diffstat (limited to 'src/openvic-simulation/economy/Good.cpp')
-rw-r--r-- | src/openvic-simulation/economy/Good.cpp | 19 |
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 |