16#ifndef YASMIN_PYBIND11_UTILS_HPP_
17#define YASMIN_PYBIND11_UTILS_HPP_
19#include <pybind11/pybind11.h>
27namespace py = pybind11;
49 if (blackboard_obj.is_none()) {
53 else if (py::isinstance<yasmin::BlackboardPyWrapper>(blackboard_obj)) {
56 blackboard = wrapper.get_cpp_blackboard();
59 else if (py::isinstance<yasmin::Blackboard>(blackboard_obj)) {
84 py::gil_scoped_acquire acquire;
102template <
typename ReturnType>
105 py::gil_scoped_acquire acquire;
107 return cb(wrapper).cast<ReturnType>();
125template <
typename ClassType,
typename StateType>
129 [](StateType &self, py::object blackboard_obj = py::none()) {
132 py::gil_scoped_release release;
133 return self(blackboard);
135 "Execute the state and return the outcome",
136 py::arg(
"blackboard") = py::none());
Python-facing wrapper around the native Blackboard.
Definition blackboard_pywrapper.hpp:67
std::shared_ptr< Blackboard > SharedPtr
Shared pointer type for Blackboard.
Definition blackboard.hpp:100
static std::shared_ptr< Blackboard > make_shared(Args &&...args)
Definition blackboard.hpp:100
Definition pybind11_utils.hpp:30
Blackboard::SharedPtr convert_blackboard_from_python(py::object blackboard_obj)
Convert a Python blackboard object to a C++ Blackboard shared pointer.
Definition pybind11_utils.hpp:45
void add_call_operator(ClassType &cls)
Helper to define the standard call method for State classes.
Definition pybind11_utils.hpp:126
auto wrap_blackboard_callback_with_return(py::function cb)
Wrap a C++ callback to handle BlackboardPyWrapper conversion with return value.
Definition pybind11_utils.hpp:103
auto wrap_blackboard_callback(py::function cb)
Wrap a C++ callback to handle BlackboardPyWrapper conversion (void return).
Definition pybind11_utils.hpp:82
Definition blackboard.hpp:34