From f19c9fbbb8983371ebf79affadfcc45c44a28a43 Mon Sep 17 00:00:00 2001 From: Hop311 Date: Tue, 26 Sep 2023 15:19:27 +0100 Subject: Expect modifier value + keys function --- src/openvic-simulation/Modifier.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'src/openvic-simulation/Modifier.cpp') diff --git a/src/openvic-simulation/Modifier.cpp b/src/openvic-simulation/Modifier.cpp index 9fa0691..3ec5474 100644 --- a/src/openvic-simulation/Modifier.cpp +++ b/src/openvic-simulation/Modifier.cpp @@ -131,8 +131,8 @@ bool ModifierManager::setup_modifier_effects() { return ret; } -node_callback_t ModifierManager::expect_modifier_value(callback_t callback, key_value_callback_t default_callback) const { - return [this, callback, default_callback](ast::NodeCPtr root) -> bool { +node_callback_t ModifierManager::expect_modifier_value(callback_t modifier_callback, key_value_callback_t default_callback) const { + return [this, modifier_callback, default_callback](ast::NodeCPtr root) -> bool { ModifierValue modifier; bool ret = expect_dictionary( [this, &modifier, default_callback](std::string_view key, ast::NodeCPtr value) -> bool { @@ -149,7 +149,17 @@ node_callback_t ModifierManager::expect_modifier_value(callback_t modifier_callback, key_map_t&& key_map) const { + return [this, modifier_callback, key_map = std::move(key_map)](ast::NodeCPtr node) mutable -> bool { + bool ret = expect_modifier_value( + modifier_callback, dictionary_keys_callback(key_map, false) + )(node); + ret &= check_key_map_counts(key_map); return ret; }; } -- cgit v1.2.3-56-ga3b1