File: bindings.cpp

package info (click to toggle)
pybind11 3.0.1-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 4,448 kB
  • sloc: cpp: 27,239; python: 13,512; ansic: 4,244; makefile: 204; sh: 36
file content (20 lines) | stat: -rw-r--r-- 622 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <pybind11/pybind11.h>

#include <lib.h>

class BaseTrampoline : public lib::Base, public pybind11::trampoline_self_life_support {
public:
    using lib::Base::Base;
    int get() const override { PYBIND11_OVERLOAD(int, lib::Base, get); }
};

PYBIND11_MODULE(test_cross_module_rtti_bindings, m) {
    pybind11::classh<lib::Base, BaseTrampoline>(m, "Base")
        .def(pybind11::init<int, int>())
        .def_readwrite("a", &lib::Base::a)
        .def_readwrite("b", &lib::Base::b);

    m.def("get_foo", [](int a, int b) -> std::shared_ptr<lib::Base> {
        return std::make_shared<lib::Foo>(a, b);
    });
}