12#include <pybind11/pybind11.h>
13#include <pybind11/stl.h>
15namespace py = pybind11;
16using namespace pybind11::literals;
24 py::class_<Fragment> py_fragment(m,
"Fragment", py::buffer_protocol());
26 py_fragment.def(
"get_header", &
Fragment::get_header, py::return_value_policy::reference_internal)
46 py::return_value_policy::reference_internal)
51 throw std::runtime_error(
"Fragment.get_data_bytes: offset exceeds fragment size.");
54 return py::bytes(
reinterpret_cast<char*
>(self->
get_data()) +
offset, bytes_size);
57 py::return_value_policy::reference_internal);
59 py::enum_<Fragment::BufferAdoptionMode>(py_fragment,
"BufferAdoptionMode")
65 py::class_<FragmentHeader>(m,
"FragmentHeader")
66 .def_property_readonly(
67 "fragment_header_marker",
68 [](
const FragmentHeader& self) -> uint32_t {
return self.fragment_header_marker; })
69 .def_property_readonly(
70 "version", [](
const FragmentHeader& self) -> uint32_t {
return self.version; })
72 .def_property_readonly(
"trigger_number",
74 .def_property_readonly(
"trigger_timestamp",
79 .def_property_readonly(
80 "status_bits", [](
const FragmentHeader& self) -> uint32_t {
return self.status_bits; })
81 .def_property_readonly(
"fragment_type",
83 .def_property_readonly(
"sequence_number",
85 .def_property_readonly(
86 "detector_id", [](
const FragmentHeader& self) -> uint16_t {
return self.detector_id; })
87 .def_property_readonly(
"element_id", [](
const FragmentHeader& self) ->
SourceID {
return self.element_id; })
91 py::enum_<FragmentStatusBits>(m,
"FragmentStatusBits")
102 py::enum_<FragmentType>(m,
"FragmentType")