diff options
Diffstat (limited to 'src/openvic-simulation/interface/LoadBase.hpp')
-rw-r--r-- | src/openvic-simulation/interface/LoadBase.hpp | 12 |
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 |