Python flow_graph vs. C++ gr_flowgraph etc

Hi,

I’m trying to understand the separation between C++ code and Python
code in gnuradio-core.

Applications like the BBN 802.11 examples use the python flow_graph
class, which seems very similar to the C++ gr_flat_flowgraph. The same
seems to hold for their base classes, basic_flow_graph and
gr_flowgraph.

Are the C++ graph classes used at all, and if so, what for (I can
imagine that they might be used are used for Python-free applications,
but I don’t think I’ve seen any)?

Thanks, Sivan T.

Sivan T. wrote:

Applications like the BBN 802.11 examples use the python flow_graph
class, which seems very similar to the C++ gr_flat_flowgraph. The same
seems to hold for their base classes, basic_flow_graph and
gr_flowgraph.

Are the C++ graph classes used at all, and if so, what for (I can
imagine that they might be used are used for Python-free applications,
but I don’t think I’ve seen any)?

The “old style” flow graph class is gr.flow_graph, which is implemented
in Python and is supported through the 3.1 release series. Most code
you see outside of our tree will use this as people haven’t had much
time to switch over to the new code.

The “new style” flow graph code is implemented in C++, and not directly
exported to Python. Instead, one creates a gr.top_block object, and
populates it with connect(). Flow graphs can now be hierarchical, using
gr.hier_block2.

(Almost) all the example code in the GNU Radio now uses the gr.top_block
and gr.hier_block2 code. The old style gr.flow_graph will be getting
ripped out of the development trunk over the next few weeks.

Since the new style code is written in C++, it allows creating “pure
C++” GNU Radio applications, with no Python needed. There are a few
other things that still need porting to C++ (USRP daughterboard handling
code primarily), and this will happen for release 3.2.


Johnathan C.
Corgan Enterprises LLC
http://corganenterprises.com