Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions src/python/nucleus/export_nuclei.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -60,17 +60,23 @@ void export_nuclei(python_module_reference m) {
};
//}

pybind11::keep_alive<0, 1> ka;

python_class_type<nuclei_type>(m, "Nuclei")
.def(pybind11::init<>())
.def(pybind11::init(list_ctor))
.def_property("charges", get_charges_fxn, set_charges_fxn)
.def_property(
"charges",
pybind11::cpp_function(
get_charges_fxn, pybind11::return_value_policy::take_ownership, ka),
pybind11::cpp_function(set_charges_fxn))
.def("empty", [](nuclei_reference self) { return self.empty(); })
.def("push_back", push_back)
.def("at", [](nuclei_reference self, size_type i) { return self[i]; })
.def("size", [](nuclei_reference self) { return self.size(); })
.def("__repr__", str_fxn)
.def("__str__", str_fxn)
.def("__iter__", iter_fxn, pybind11::keep_alive<0, 1>())
.def("__iter__", iter_fxn, ka)
.def(pybind11::self == pybind11::self)
.def(pybind11::self != pybind11::self);
}
Expand Down
15 changes: 11 additions & 4 deletions src/python/point_charge/export_charges_view.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,20 +30,27 @@ void export_charges_view_(const char* name, python_module_reference m) {
using size_type = typename view_type::size_type;
using point_set_reference = typename view_type::point_set_reference;

auto get_point_set_fxn = [](reference self) { return self.point_set(); };
auto set_point_set_fxn = [](reference self, point_set_reference points) {
self.point_set() = points;
};

auto str_fxn = [](const view_type& charges) {
std::ostringstream stream;
stream << charges;
return stream.str();
};

pybind11::keep_alive<0, 1> ka;

python_class_type<view_type>(m, name)
.def(pybind11::init<>())
.def(pybind11::init<charges_type&>())
.def_property(
"point_set", [](reference self) { return self.point_set(); },
[](reference self, point_set_reference points) {
self.point_set() = points;
})
"point_set",
pybind11::cpp_function(
get_point_set_fxn, pybind11::return_value_policy::take_ownership, ka),
pybind11::cpp_function(set_point_set_fxn))
.def("empty", [](reference self) { return self.empty(); })
.def("at", [](reference self, size_type i) { return self[i]; })
.def("size", [](reference self) { return self.size(); })
Expand Down