diff options
Diffstat (limited to 'gnuradio-runtime/python/gnuradio/gr/bindings/flowgraph_python.cc')
-rw-r--r-- | gnuradio-runtime/python/gnuradio/gr/bindings/flowgraph_python.cc | 226 |
1 files changed, 226 insertions, 0 deletions
diff --git a/gnuradio-runtime/python/gnuradio/gr/bindings/flowgraph_python.cc b/gnuradio-runtime/python/gnuradio/gr/bindings/flowgraph_python.cc new file mode 100644 index 0000000000..6f1f6694ef --- /dev/null +++ b/gnuradio-runtime/python/gnuradio/gr/bindings/flowgraph_python.cc @@ -0,0 +1,226 @@ +/* + * 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(flowgraph.h) */ +/* BINDTOOL_HEADER_FILE_HASH(a019dfc2f7380e37ef8eaa0ee96c39c0) */ +/***********************************************************************************/ + +#include <pybind11/complex.h> +#include <pybind11/pybind11.h> +#include <pybind11/stl.h> + +namespace py = pybind11; + +#include <gnuradio/flowgraph.h> +// pydoc.h is automatically generated in the build directory +#include <flowgraph_pydoc.h> + +void bind_flowgraph(py::module& m) +{ + + using flowgraph = ::gr::flowgraph; + using endpoint = ::gr::endpoint; + using msg_endpoint = ::gr::msg_endpoint; + using edge = ::gr::edge; + using msg_edge = ::gr::msg_edge; + + + py::class_<flowgraph, std::shared_ptr<flowgraph>>(m, "flowgraph", D(flowgraph)) + + .def(py::init<gr::flowgraph const&>(), py::arg("arg0"), D(flowgraph, flowgraph)) + + + .def("connect", + (void (flowgraph::*)(gr::endpoint const&, gr::endpoint const&)) & + flowgraph::connect, + py::arg("src"), + py::arg("dst"), + D(flowgraph, connect, 0)) + + + .def("disconnect", + (void (flowgraph::*)(gr::endpoint const&, gr::endpoint const&)) & + flowgraph::disconnect, + py::arg("src"), + py::arg("dst"), + D(flowgraph, disconnect, 0)) + + + .def("connect", + (void (flowgraph::*)(gr::basic_block_sptr, int, gr::basic_block_sptr, int)) & + flowgraph::connect, + py::arg("src_block"), + py::arg("src_port"), + py::arg("dst_block"), + py::arg("dst_port"), + D(flowgraph, connect, 1)) + + + .def("disconnect", + (void (flowgraph::*)(gr::basic_block_sptr, int, gr::basic_block_sptr, int)) & + flowgraph::disconnect, + py::arg("src_block"), + py::arg("src_port"), + py::arg("dst_block"), + py::arg("dst_port"), + D(flowgraph, disconnect, 1)) + + + .def("connect", + (void (flowgraph::*)(gr::msg_endpoint const&, gr::msg_endpoint const&)) & + flowgraph::connect, + py::arg("src"), + py::arg("dst"), + D(flowgraph, connect, 2)) + + + .def("disconnect", + (void (flowgraph::*)(gr::msg_endpoint const&, gr::msg_endpoint const&)) & + flowgraph::disconnect, + py::arg("src"), + py::arg("dst"), + D(flowgraph, disconnect, 2)) + + + .def("validate", &flowgraph::validate, D(flowgraph, validate)) + + + .def("clear", &flowgraph::clear, D(flowgraph, clear)) + + + .def("edges", &flowgraph::edges, D(flowgraph, edges)) + + + .def("msg_edges", &flowgraph::msg_edges, D(flowgraph, msg_edges)) + + + .def("calc_used_blocks", + &flowgraph::calc_used_blocks, + D(flowgraph, calc_used_blocks)) + + + .def("topological_sort", + &flowgraph::topological_sort, + py::arg("blocks"), + D(flowgraph, topological_sort)) + + + .def("partition", &flowgraph::partition, D(flowgraph, partition)) + + ; + + + py::class_<endpoint, std::shared_ptr<endpoint>>(m, "endpoint", D(endpoint)) + + .def(py::init<>(), D(endpoint, endpoint, 0)) + .def(py::init<gr::basic_block_sptr, int>(), + py::arg("block"), + py::arg("port"), + D(endpoint, endpoint, 1)) + .def(py::init<gr::endpoint const&>(), py::arg("arg0"), D(endpoint, endpoint, 2)) + + + .def("block", &endpoint::block, D(endpoint, block)) + + + .def("port", &endpoint::port, D(endpoint, port)) + + + .def("identifier", &endpoint::identifier, D(endpoint, identifier)) + + ; + + + py::class_<msg_endpoint, std::shared_ptr<msg_endpoint>>( + m, "msg_endpoint", D(msg_endpoint)) + + .def(py::init<>(), D(msg_endpoint, msg_endpoint, 0)) + .def(py::init<gr::basic_block_sptr, pmt::pmt_t, bool>(), + py::arg("block"), + py::arg("port"), + py::arg("is_hier") = false, + D(msg_endpoint, msg_endpoint, 1)) + .def(py::init<gr::msg_endpoint const&>(), + py::arg("arg0"), + D(msg_endpoint, msg_endpoint, 2)) + + + .def("block", &msg_endpoint::block, D(msg_endpoint, block)) + + + .def("port", &msg_endpoint::port, D(msg_endpoint, port)) + + + .def("is_hier", &msg_endpoint::is_hier, D(msg_endpoint, is_hier)) + + + .def("set_hier", &msg_endpoint::set_hier, py::arg("h"), D(msg_endpoint, set_hier)) + + + .def("identifier", &msg_endpoint::identifier, D(msg_endpoint, identifier)) + + ; + + + py::class_<edge, std::shared_ptr<edge>>(m, "edge", D(edge)) + + .def(py::init<>(), D(edge, edge, 0)) + .def(py::init<gr::endpoint const&, gr::endpoint const&>(), + py::arg("src"), + py::arg("dst"), + D(edge, edge, 1)) + .def(py::init<gr::edge const&>(), py::arg("arg0"), D(edge, edge, 2)) + + + .def("src", &edge::src, D(edge, src)) + + + .def("dst", &edge::dst, D(edge, dst)) + + + .def("identifier", &edge::identifier, D(edge, identifier)) + + ; + + + py::class_<msg_edge, std::shared_ptr<msg_edge>>(m, "msg_edge", D(msg_edge)) + + .def(py::init<>(), D(msg_edge, msg_edge, 0)) + .def(py::init<gr::msg_endpoint const&, gr::msg_endpoint const&>(), + py::arg("src"), + py::arg("dst"), + D(msg_edge, msg_edge, 1)) + .def(py::init<gr::msg_edge const&>(), py::arg("arg0"), D(msg_edge, msg_edge, 2)) + + + .def("src", &msg_edge::src, D(msg_edge, src)) + + + .def("dst", &msg_edge::dst, D(msg_edge, dst)) + + + .def("identifier", &msg_edge::identifier, D(msg_edge, identifier)) + + ; + + + m.def("make_flowgraph", &::gr::make_flowgraph, D(make_flowgraph)); + + + // m.def("dot_graph_fg",&::gr::dot_graph_fg, + // py::arg("fg"), + // D(dot_graph_fg) + // ); +} |