#include #include #ifdef __GNUC__ # pragma GCC diagnostic push # pragma GCC diagnostic ignored "-Wpedantic" #endif #include #ifdef __GNUC__ # pragma GCC diagnostic pop #endif #include "broker/data.hh" #include "broker/store.hh" namespace py = pybind11; using namespace pybind11::literals; void init_store(py::module& m) { py::class_>(m, "OptionalTimespan") .def(py::init<>()) .def(py::init()); py::class_>(m, "ExpectedStore") .def("is_valid", [](broker::expected& e) -> bool { return static_cast(e); }) .def("get", [](broker::expected& e) -> broker::store& { return *e; }); py::class_>(m, "ExpectedData") .def("is_valid", [](broker::expected& e) -> bool { return static_cast(e); }) .def("get", [](broker::expected& e) -> broker::data& { return *e; }); py::class_ store(m, "Store"); store.def("name", &broker::store::name) .def("exists", (broker::expected (broker::store::*)( broker::data d) const) & broker::store::exists) .def("get", (broker::expected (broker::store::*)( broker::data d) const) & broker::store::get) .def("get_index_from_value", (broker::expected ( broker::store::*)(broker::data d, broker::data index) const) & broker::store::get_index_from_value) .def("keys", &broker::store::keys) .def("put", &broker::store::put) .def("put_unique", &broker::store::put_unique) .def("erase", &broker::store::erase) .def("clear", &broker::store::clear) .def("increment", &broker::store::increment) .def("decrement", &broker::store::decrement) .def("append", &broker::store::append) .def("insert_into", (void (broker::store::*)( broker::data, broker::data, std::optional)) &broker::store::insert_into) .def("insert_into", (void (broker::store::*)( broker::data, broker::data, broker::data, std::optional)) &broker::store::insert_into) .def("remove_from", &broker::store::remove_from) .def("push", &broker::store::push) .def("pop", &broker::store::pop) .def("await_idle", [](broker::store& st) { return st.await_idle(); }) .def("await_idle", [](broker::store& st, broker::timespan timeout) { return st.await_idle(timeout); }) .def("reset", &broker::store::reset); // Don't need. // py::class_(store, "Response") // .def_readwrite("answer", &broker::store::response::answer) // .def_readwrite("id", &broker::store::response::id); }