From 3b545dc181bf5ce0b32287ad47f8bab65c0cca8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Fri, 20 Sep 2024 18:51:51 +0200 Subject: [PATCH] python: adapt to PluginManager changes. --- src/python/corrade/pluginmanager.cpp | 29 ++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/src/python/corrade/pluginmanager.cpp b/src/python/corrade/pluginmanager.cpp index 4c14c03..a069e53 100644 --- a/src/python/corrade/pluginmanager.cpp +++ b/src/python/corrade/pluginmanager.cpp @@ -67,10 +67,31 @@ void pluginmanager(py::module_& m) { corrade::enumOperators(loadState); py::class_{m, "PluginMetadata", "Plugin metadata"} - .def_property_readonly("name", &PluginManager::PluginMetadata::name, "Plugin name") - .def_property_readonly("depends", &PluginManager::PluginMetadata::depends, "Plugins on which this plugin depends") - .def_property_readonly("used_by", &PluginManager::PluginMetadata::usedBy, "Plugins which depend on this plugin") - .def_property_readonly("provides", &PluginManager::PluginMetadata::provides, "Plugins which are provided by this plugin") + .def_property_readonly("name", [](PluginManager::PluginMetadata& self) { + /** @todo drop std::string in favor of our own string caster */ + return std::string{self.name()}; + }, "Plugin name") + .def_property_readonly("depends", [](PluginManager::PluginMetadata& self) { + /** @todo make a generic caster for arbitrary arrays and strings */ + std::vector out; + for(Containers::StringView i: self.depends()) + out.push_back(i); + return out; + }, "Plugins on which this plugin depends") + .def_property_readonly("used_by", [](PluginManager::PluginMetadata& self) { + /** @todo make a generic caster for arbitrary arrays and strings */ + std::vector out; + for(Containers::StringView i: self.usedBy()) + out.push_back(i); + return out; + }, "Plugins which depend on this plugin") + .def_property_readonly("provides", [](PluginManager::PluginMetadata& self) { + /** @todo make a generic caster for arbitrary arrays and strings */ + std::vector out; + for(Containers::StringView i: self.provides()) + out.push_back(i); + return out; + }, "Plugins which are provided by this plugin") /** @todo data? no plugin uses this at the moment */ .def_property_readonly("configuration", static_cast(&PluginManager::PluginMetadata::configuration), "Initial plugin-specific configuration", py::return_value_policy::reference_internal);