aboutsummaryrefslogtreecommitdiff
path: root/src/openvic-simulation/interface/LoadBase.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/openvic-simulation/interface/LoadBase.hpp')
-rw-r--r--src/openvic-simulation/interface/LoadBase.hpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/openvic-simulation/interface/LoadBase.hpp b/src/openvic-simulation/interface/LoadBase.hpp
index 10b0169..29de165 100644
--- a/src/openvic-simulation/interface/LoadBase.hpp
+++ b/src/openvic-simulation/interface/LoadBase.hpp
@@ -23,6 +23,18 @@ namespace OpenVic {
return ret;
}
+ template<std::derived_from<LoadBase<Context...>> T>
+ static NodeTools::node_callback_t _expect_value(
+ NodeTools::callback_t<T&&> callback, Context... context
+ ) {
+ return [callback, &context...](ast::NodeCPtr node) -> bool {
+ T value {};
+ bool ret = value.load(node, context...);
+ ret &= callback(std::move(value));
+ return ret;
+ };
+ }
+
template<std::derived_from<LoadBase<Context...>> T, std::derived_from<T> U>
static NodeTools::node_callback_t _expect_instance(
NodeTools::callback_t<std::unique_ptr<T>&&> callback, Context... context