16 m.doc() =
"pybind11 cross-module test module";
28 m.def(
"raise_runtime_error", []() { PyErr_SetString(PyExc_RuntimeError,
"My runtime error");
throw py::error_already_set(); });
29 m.def(
"raise_value_error", []() { PyErr_SetString(PyExc_ValueError,
"My value error");
throw py::error_already_set(); });
30 m.def(
"throw_pybind_value_error", []() {
throw py::value_error(
"pybind11 value error"); });
31 m.def(
"throw_pybind_type_error", []() {
throw py::type_error(
"pybind11 type error"); });
37 .def(
"get2", [](
LocalType &t) {
return t.
i + 2; })
41 m.def(
"local_value", [](
LocalType &l) {
return l.
i; });
46 m.def(
"register_nonlocal", [m]() {
47 bind_local<NonLocalType, 0>(m,
"NonLocalType");
52 py::bind_vector<LocalVec>(m,
"LocalVec");
53 py::bind_map<LocalMap>(m,
"LocalMap");
58 m.def(
"register_nonlocal_vec", [m]() {
59 py::bind_vector<NonLocalVec>(m,
"NonLocalVec");
61 m.def(
"register_nonlocal_map", [m]() {
62 py::bind_map<NonLocalMap>(m,
"NonLocalMap");
69 m.def(
"register_nonlocal_map2", [m]() {
76 m.def(
"register_mixed_global_local", [m]() {
77 bind_local<MixedGlobalLocal, 200>(m,
"MixedGlobalLocal",
py::module_local());
79 m.def(
"register_mixed_local_global", [m]() {
80 bind_local<MixedLocalGlobal, 2000>(m,
"MixedLocalGlobal",
py::module_local(
false));
89 py::bind_vector<std::vector<int>>(m,
"VectorInt");
91 m.def(
"load_vector_via_binding", [](std::vector<int> &v) {
92 return std::accumulate(v.begin(), v.end(), 0);
96 m.def(
"return_self", [](
LocalVec *v) {
return v; });
104 .def(py::init<std::string>());
108 m.
def(
"get_gl_value", [](
MixGL &o) {
return o.
i + 100; });
116 py::bind_vector<std::vector<bool>>(m,
"VectorBool");
121 m.
def(
"missing_header_arg", [](std::vector<float>) { });
122 m.
def(
"missing_header_return", []() {
return std::vector<float>(); });
std::vector< LocalType > LocalVec
type_map< type_info * > & registered_local_types_cpp()
Works like internals.registered_types_cpp, but for module-local registered types: ...
Dog(const std::string &_name, Kind _kind=Kind::Dog)
const std::string & name()
PYBIND11_MODULE(pybind11_cross_module_tests, m)
LocalBase< 5 > MixedGlobalLocal
Mixed: global first, then local.
LocalBase< 4 > MixedLocalGlobal
Mixed: registered local first, then global.
bool typename Extra class_ & def(const char *name_, Func &&f, const Extra &... extra)
Simple class used to test py::local:
Annotation that marks a class as local to the module: