// Copyright (c) Microsoft Corporation. // Licensed under the MIT license. #include #include namespace nb = nanobind; using namespace mscclpp; void register_fifo(nb::module_& m) { nb::class_(m, "ProxyTrigger").def_rw("fst", &ProxyTrigger::fst).def_rw("snd", &ProxyTrigger::snd); nb::class_(m, "FifoDeviceHandle") .def_rw("triggers", &FifoDeviceHandle::triggers) .def_rw("tail_replica", &FifoDeviceHandle::tailReplica) .def_rw("head", &FifoDeviceHandle::head) .def_rw("size", &FifoDeviceHandle::size) .def_prop_ro("raw", [](const FifoDeviceHandle& self) -> nb::bytes { return nb::bytes(reinterpret_cast(&self), sizeof(self)); }); nb::class_(m, "Fifo") .def(nb::init(), nb::arg("size") = 128) .def("poll", &Fifo::poll) .def("pop", &Fifo::pop) .def("flush_tail", &Fifo::flushTail, nb::arg("sync") = false) .def("size", &Fifo::size) .def("device_handle", &Fifo::deviceHandle); }