12#include <pybind11/pybind11.h>
13#include <pybind11/stl.h>
17namespace py = pybind11;
18using namespace pybind11::literals;
26 py::class_<Fragment> py_fragment(m,
"Fragment", py::buffer_protocol());
28 py_fragment.def(
"get_header", &
Fragment::get_header, py::return_value_policy::reference_internal)
47 return static_cast<void*
>(
static_cast<char*
>(self.
get_data()) +
offset);
50 py::return_value_policy::reference_internal)
55 throw std::runtime_error(
"Fragment.get_data_bytes: offset exceeds fragment size.");
58 return py::bytes(
reinterpret_cast<char*
>(self->
get_data()) +
offset, bytes_size);
61 py::return_value_policy::reference_internal);
63 py::enum_<Fragment::BufferAdoptionMode>(py_fragment,
"BufferAdoptionMode")
68 py::class_<FragmentHeader>(m,
"FragmentHeader")
70 .def_property_readonly_static(
71 "s_fragment_header_marker",
73 .def_property_readonly_static(
74 "s_fragment_header_version",
76 .def_property_readonly_static(
77 "s_default_status_bits",
79 .def_property_readonly(
80 "fragment_header_marker",
81 [](
const FragmentHeader& self) -> uint32_t {
return self.fragment_header_marker; })
82 .def_property_readonly(
83 "version", [](
const FragmentHeader& self) -> uint32_t {
return self.version; })
85 .def_property_readonly(
"trigger_number",
87 .def_property_readonly(
"trigger_timestamp",
92 .def_property_readonly(
93 "status_bits", [](
const FragmentHeader& self) -> uint32_t {
return self.status_bits; })
94 .def_property_readonly(
"fragment_type",
96 .def_property_readonly(
"sequence_number",
98 .def_property_readonly(
99 "detector_id", [](
const FragmentHeader& self) -> uint16_t {
return self.detector_id; })
100 .def_property_readonly(
"element_id", [](
const FragmentHeader& self) ->
SourceID {
return self.element_id; })
105 std::ostringstream oss;
110 std::ostringstream oss;
111 oss <<
"<daqdataformats::FragmentHeader " << hdr <<
">";
115 py::enum_<FragmentStatusBits>(m,
"FragmentStatusBits")
126 py::enum_<FragmentType>(m,
"FragmentType")