summaryrefslogtreecommitdiff
path: root/gr-fft/python/fft/bindings/fft_python.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gr-fft/python/fft/bindings/fft_python.cc')
-rw-r--r--gr-fft/python/fft/bindings/fft_python.cc163
1 files changed, 163 insertions, 0 deletions
diff --git a/gr-fft/python/fft/bindings/fft_python.cc b/gr-fft/python/fft/bindings/fft_python.cc
new file mode 100644
index 0000000000..9e8a4e889a
--- /dev/null
+++ b/gr-fft/python/fft/bindings/fft_python.cc
@@ -0,0 +1,163 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+/***********************************************************************************/
+/* This file is automatically generated using bindtool and can be manually edited */
+/* The following lines can be configured to regenerate this file during cmake */
+/* If manual edits are made, the following tags should be modified accordingly. */
+/* BINDTOOL_GEN_AUTOMATIC(0) */
+/* BINDTOOL_USE_PYGCCXML(0) */
+/* BINDTOOL_HEADER_FILE(fft.h) */
+/* BINDTOOL_HEADER_FILE_HASH(4402b26d42b6210cd744a09ce7f6ffd6) */
+/***********************************************************************************/
+
+#include <pybind11/complex.h>
+#include <pybind11/pybind11.h>
+#include <pybind11/stl.h>
+
+namespace py = pybind11;
+
+#include <gnuradio/fft/fft.h>
+// pydoc.h is automatically generated in the build directory
+#include <fft_pydoc.h>
+
+void bind_fft(py::module& m)
+{
+
+ using planner = ::gr::fft::planner;
+ using fft_complex = ::gr::fft::fft_complex;
+ using fft_real_fwd = ::gr::fft::fft_real_fwd;
+ using fft_real_rev = ::gr::fft::fft_real_rev;
+
+
+ py::class_<planner, std::shared_ptr<planner>>(m, "planner", D(planner))
+
+ .def(py::init<>(), D(planner, planner, 0))
+ .def(py::init<gr::fft::planner const&>(), py::arg("arg0"), D(planner, planner, 1))
+
+
+ .def_static("mutex", &planner::mutex, D(planner, mutex))
+
+ ;
+
+
+ py::class_<fft_complex, std::shared_ptr<fft_complex>>(
+ m, "fft_complex", D(fft_complex))
+
+ .def(py::init<int, bool, int>(),
+ py::arg("fft_size"),
+ py::arg("forward") = true,
+ py::arg("nthreads") = 1,
+ D(fft_complex, fft_complex))
+
+
+ .def("get_inbuf", &fft_complex::get_inbuf, D(fft_complex, get_inbuf))
+
+
+ .def("get_outbuf", &fft_complex::get_outbuf, D(fft_complex, get_outbuf))
+
+
+ .def("inbuf_length", &fft_complex::inbuf_length, D(fft_complex, inbuf_length))
+
+
+ .def("outbuf_length", &fft_complex::outbuf_length, D(fft_complex, outbuf_length))
+
+
+ .def("set_nthreads",
+ &fft_complex::set_nthreads,
+ py::arg("n"),
+ D(fft_complex, set_nthreads))
+
+
+ .def("nthreads", &fft_complex::nthreads, D(fft_complex, nthreads))
+
+
+ .def("execute", &fft_complex::execute, D(fft_complex, execute))
+
+ ;
+
+
+ py::class_<fft_real_fwd, std::shared_ptr<fft_real_fwd>>(
+ m, "fft_real_fwd", D(fft_real_fwd))
+
+ .def(py::init<int, int>(),
+ py::arg("fft_size"),
+ py::arg("nthreads") = 1,
+ D(fft_real_fwd, fft_real_fwd))
+
+
+ .def("get_inbuf", &fft_real_fwd::get_inbuf, D(fft_real_fwd, get_inbuf))
+
+
+ .def("get_outbuf", &fft_real_fwd::get_outbuf, D(fft_real_fwd, get_outbuf))
+
+
+ .def("inbuf_length", &fft_real_fwd::inbuf_length, D(fft_real_fwd, inbuf_length))
+
+
+ .def(
+ "outbuf_length", &fft_real_fwd::outbuf_length, D(fft_real_fwd, outbuf_length))
+
+
+ .def("set_nthreads",
+ &fft_real_fwd::set_nthreads,
+ py::arg("n"),
+ D(fft_real_fwd, set_nthreads))
+
+
+ .def("nthreads", &fft_real_fwd::nthreads, D(fft_real_fwd, nthreads))
+
+
+ .def("execute", &fft_real_fwd::execute, D(fft_real_fwd, execute))
+
+ ;
+
+
+ py::class_<fft_real_rev, std::shared_ptr<fft_real_rev>>(
+ m, "fft_real_rev", D(fft_real_rev))
+
+ .def(py::init<int, int>(),
+ py::arg("fft_size"),
+ py::arg("nthreads") = 1,
+ D(fft_real_rev, fft_real_rev))
+
+
+ .def("get_inbuf", &fft_real_rev::get_inbuf, D(fft_real_rev, get_inbuf))
+
+
+ .def("get_outbuf", &fft_real_rev::get_outbuf, D(fft_real_rev, get_outbuf))
+
+
+ .def("inbuf_length", &fft_real_rev::inbuf_length, D(fft_real_rev, inbuf_length))
+
+
+ .def(
+ "outbuf_length", &fft_real_rev::outbuf_length, D(fft_real_rev, outbuf_length))
+
+
+ .def("set_nthreads",
+ &fft_real_rev::set_nthreads,
+ py::arg("n"),
+ D(fft_real_rev, set_nthreads))
+
+
+ .def("nthreads", &fft_real_rev::nthreads, D(fft_real_rev, nthreads))
+
+
+ .def("execute", &fft_real_rev::execute, D(fft_real_rev, execute))
+
+ ;
+
+
+ m.def(
+ "malloc_complex", &::gr::fft::malloc_complex, py::arg("size"), D(malloc_complex));
+
+
+ m.def("free", &::gr::fft::free, py::arg("b"), D(free));
+}