16#ifndef YASMIN_PYBIND11_UTILS_HPP
17#define YASMIN_PYBIND11_UTILS_HPP
20#include <pybind11/pybind11.h>
25namespace py = pybind11;
42inline std::shared_ptr<yasmin::blackboard::Blackboard>
44 std::shared_ptr<yasmin::blackboard::Blackboard>
blackboard;
47 if (blackboard_obj.is_none()) {
48 blackboard = std::make_shared<yasmin::blackboard::Blackboard>();
51 else if (py::isinstance<yasmin::blackboard::BlackboardPyWrapper>(
59 else if (py::isinstance<yasmin::blackboard::Blackboard>(blackboard_obj)) {
61 blackboard_obj.cast<std::shared_ptr<yasmin::blackboard::Blackboard>>();
65 blackboard = std::make_shared<yasmin::blackboard::Blackboard>();
84 return [cb](std::shared_ptr<yasmin::blackboard::Blackboard>
blackboard,
86 py::gil_scoped_acquire acquire;
104template <
typename ReturnType>
106 return [cb](std::shared_ptr<yasmin::blackboard::Blackboard>
blackboard)
108 py::gil_scoped_acquire acquire;
110 return cb(wrapper).cast<ReturnType>();
128template <
typename ClassType,
typename StateType>
132 [](StateType &self, py::object blackboard_obj = py::none()) {
135 py::gil_scoped_release release;
138 "Execute the state and return the outcome",
139 py::arg(
"blackboard") = py::none());
A wrapper around the C++ Blackboard that stores Python objects and native types.
Definition blackboard_pywrapper.hpp:50
Definition blackboard.hpp:30
Definition pybind11_utils.hpp:28
void add_call_operator(ClassType &cls)
Helper to define the standard call method for State classes.
Definition pybind11_utils.hpp:129
std::shared_ptr< yasmin::blackboard::Blackboard > convert_blackboard_from_python(py::object blackboard_obj)
Convert a Python blackboard object to a C++ Blackboard shared pointer.
Definition pybind11_utils.hpp:43
auto wrap_blackboard_callback_with_return(py::function cb)
Wrap a C++ callback to handle BlackboardPyWrapper conversion with return value.
Definition pybind11_utils.hpp:105
auto wrap_blackboard_callback(py::function cb)
Wrap a C++ callback to handle BlackboardPyWrapper conversion (void return).
Definition pybind11_utils.hpp:83
Definition blackboard.hpp:29