feat(solver): added callback functions to solver in C++ and python
This commit is contained in:
@@ -5,6 +5,9 @@
|
||||
#include <pybind11/functional.h> // Needed for std::function
|
||||
|
||||
#include <vector>
|
||||
#include <tuple>
|
||||
#include <string>
|
||||
#include <any>
|
||||
|
||||
#include "py_solver.h"
|
||||
|
||||
@@ -19,3 +22,21 @@ gridfire::NetOut PyDynamicNetworkSolverStrategy::evaluate(const gridfire::NetIn
|
||||
netIn // Arguments
|
||||
);
|
||||
}
|
||||
|
||||
void PyDynamicNetworkSolverStrategy::set_callback(const std::any &callback) {
|
||||
PYBIND11_OVERRIDE_PURE(
|
||||
void,
|
||||
gridfire::solver::DynamicNetworkSolverStrategy, // Base class
|
||||
set_callback, // Method name
|
||||
callback // Arguments
|
||||
);
|
||||
}
|
||||
|
||||
std::vector<std::tuple<std::string, std::string>> PyDynamicNetworkSolverStrategy::describe_callback_context() const {
|
||||
using DescriptionVector = std::vector<std::tuple<std::string, std::string>>;
|
||||
PYBIND11_OVERRIDE_PURE(
|
||||
DescriptionVector, // Return type
|
||||
gridfire::solver::DynamicNetworkSolverStrategy, // Base class
|
||||
describe_callback_context // Method name
|
||||
);
|
||||
}
|
||||
|
||||
@@ -3,8 +3,13 @@
|
||||
#include "gridfire/solver/solver.h"
|
||||
|
||||
#include <vector>
|
||||
#include <tuple>
|
||||
#include <string>
|
||||
#include <any>
|
||||
|
||||
class PyDynamicNetworkSolverStrategy final : public gridfire::solver::DynamicNetworkSolverStrategy {
|
||||
explicit PyDynamicNetworkSolverStrategy(gridfire::DynamicEngine &engine) : gridfire::solver::DynamicNetworkSolverStrategy(engine) {}
|
||||
gridfire::NetOut evaluate(const gridfire::NetIn &netIn) override;
|
||||
void set_callback(const std::any &callback) override;
|
||||
std::vector<std::tuple<std::string, std::string>> describe_callback_context() const override;
|
||||
};
|
||||
Reference in New Issue
Block a user