diff --git a/userland/libs/pybind11/class.cpp b/userland/libs/pybind11/class.cpp new file mode 100644 index 0000000..e45677a --- /dev/null +++ b/userland/libs/pybind11/class.cpp @@ -0,0 +1,24 @@ +#include + +#include + +struct Pet { + Pet(const std::string &name) : name(name) { } + void setName(const std::string &name_) { name = name_; } + const std::string &getName() const { return name; } + + std::string name; +}; + +namespace py = pybind11; + +PYBIND11_PLUGIN(example) { + py::module m("example", "pybind11 example plugin"); + + py::class_(m, "Pet") + .def(py::init()) + .def("setName", &Pet::setName) + .def("getName", &Pet::getName); + + return m.ptr(); +} diff --git a/userland/libs/pybind11/class_test_main.py b/userland/libs/pybind11/class_test_main.py new file mode 100755 index 0000000..742ec10 --- /dev/null +++ b/userland/libs/pybind11/class_test_main.py @@ -0,0 +1,8 @@ +#!/usr/bin/env python3 + +import class_test + +my_class_test = class_test.ClassTest("abc"); +print(my_class_test.getName()) +my_class_test.setName("012") +print(my_class_test.getName()) diff --git a/userland/libs/pybind11/test.sh b/userland/libs/pybind11/test.sh new file mode 100755 index 0000000..fc37915 --- /dev/null +++ b/userland/libs/pybind11/test.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +set -eu +g++ -O3 -Wall -shared -std=c++11 -fPIC class_test.cpp -o class_test`python3-config --extension-suffix` -I /usr/include/python3.6m +./class_test_main.py