| 18 | namespace py = pybind11; |
| 19 | |
| 20 | void BindTrack(py::module& m) { |
| 21 | py::classh<TrackElement> PyTrackElement(m, "TrackElement"); |
| 22 | PyTrackElement.def(py::init<>()) |
| 23 | .def(py::init<image_t, point2D_t>(), "image_id"_a, "point2D_idx"_a) |
| 24 | .def_readwrite("image_id", &TrackElement::image_id) |
| 25 | .def_readwrite("point2D_idx", &TrackElement::point2D_idx); |
| 26 | MakeDataclass(PyTrackElement); |
| 27 | |
| 28 | py::classh<Track> PyTrack(m, "Track"); |
| 29 | PyTrack.def(py::init<>()) |
| 30 | .def(py::init([](const std::vector<TrackElement>& elements) { |
| 31 | auto track = std::make_shared<Track>(); |
| 32 | track->AddElements(elements); |
| 33 | return track; |
| 34 | }), |
| 35 | "elements"_a) |
| 36 | .def_property("elements", |
| 37 | py::overload_cast<>(&Track::Elements), |
| 38 | &Track::SetElements) |
| 39 | .def("length", &Track::Length, "Track Length.") |
| 40 | .def("add_element", |
| 41 | py::overload_cast<image_t, point2D_t>(&Track::AddElement), |
| 42 | "image_id"_a, |
| 43 | "point2D_idx"_a, |
| 44 | "Add an observation to the track.") |
| 45 | .def("add_element", |
| 46 | py::overload_cast<const TrackElement&>(&Track::AddElement), |
| 47 | "element"_a) |
| 48 | .def("add_elements", |
| 49 | &Track::AddElements, |
| 50 | "elements"_a, |
| 51 | "Add multiple elements.") |
| 52 | .def("delete_element", |
| 53 | py::overload_cast<image_t, point2D_t>(&Track::DeleteElement), |
| 54 | "image_id"_a, |
| 55 | "point2D_idx"_a, |
| 56 | "Delete observation from track.") |
| 57 | .def("delete_element", |
| 58 | py::overload_cast<size_t>(&Track::DeleteElement), |
| 59 | "index"_a, |
| 60 | "Remove TrackElement at index.") |
| 61 | .def("element", |
| 62 | py::overload_cast<size_t>(&Track::Element), |
| 63 | "index"_a, |
| 64 | "Access specific element by index.", |
| 65 | py::return_value_policy::reference_internal) |
| 66 | .def("set_element", |
| 67 | &Track::SetElement, |
| 68 | "index"_a, |
| 69 | "element"_a, |
| 70 | "Set element at specific index.") |
| 71 | .def("reserve", |
| 72 | &Track::Reserve, |
| 73 | "num_elements"_a, |
| 74 | "Reserve capacity for elements.") |
| 75 | .def("compress", &Track::Compress, "Shrink capacity to fit size."); |
| 76 | MakeDataclass(PyTrack); |
| 77 | } |
no test coverage detected