commit-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commit-gnuradio] r4947 - gnuradio/branches/developers/jcorgan/hier2/gnu


From: jcorgan
Subject: [Commit-gnuradio] r4947 - gnuradio/branches/developers/jcorgan/hier2/gnuradio-core/src/lib/runtime
Date: Wed, 11 Apr 2007 11:45:49 -0600 (MDT)

Author: jcorgan
Date: 2007-04-11 11:45:48 -0600 (Wed, 11 Apr 2007)
New Revision: 4947

Modified:
   
gnuradio/branches/developers/jcorgan/hier2/gnuradio-core/src/lib/runtime/gr_simple_flowgraph.cc
   
gnuradio/branches/developers/jcorgan/hier2/gnuradio-core/src/lib/runtime/gr_simple_flowgraph.h
   
gnuradio/branches/developers/jcorgan/hier2/gnuradio-core/src/lib/runtime/gr_simple_flowgraph_detail.cc
   
gnuradio/branches/developers/jcorgan/hier2/gnuradio-core/src/lib/runtime/gr_simple_flowgraph_detail.h
Log:
Converted gr_simple_flowgraph to use gr_basic_blocks instead of gr_blocks, in 
order to be able to reuse this in gr_hier_block2.

Modified: 
gnuradio/branches/developers/jcorgan/hier2/gnuradio-core/src/lib/runtime/gr_simple_flowgraph.cc
===================================================================
--- 
gnuradio/branches/developers/jcorgan/hier2/gnuradio-core/src/lib/runtime/gr_simple_flowgraph.cc
     2007-04-11 07:29:05 UTC (rev 4946)
+++ 
gnuradio/branches/developers/jcorgan/hier2/gnuradio-core/src/lib/runtime/gr_simple_flowgraph.cc
     2007-04-11 17:45:48 UTC (rev 4947)
@@ -46,8 +46,8 @@
 }
 
 void
-gr_simple_flowgraph::connect(gr_block_sptr src_block, int src_port,
-                            gr_block_sptr dst_block, int dst_port)
+gr_simple_flowgraph::connect(gr_basic_block_sptr src_block, int src_port,
+                            gr_basic_block_sptr dst_block, int dst_port)
 {
   d_detail->connect(gr_endpoint(src_block, src_port), gr_endpoint(dst_block, 
dst_port));
 }

Modified: 
gnuradio/branches/developers/jcorgan/hier2/gnuradio-core/src/lib/runtime/gr_simple_flowgraph.h
===================================================================
--- 
gnuradio/branches/developers/jcorgan/hier2/gnuradio-core/src/lib/runtime/gr_simple_flowgraph.h
      2007-04-11 07:29:05 UTC (rev 4946)
+++ 
gnuradio/branches/developers/jcorgan/hier2/gnuradio-core/src/lib/runtime/gr_simple_flowgraph.h
      2007-04-11 17:45:48 UTC (rev 4947)
@@ -34,12 +34,12 @@
 class gr_endpoint
 {
 private:
-  gr_block_sptr d_block;
+  gr_basic_block_sptr d_block;
   int d_port;
 
 public:
-  gr_endpoint(gr_block_sptr block, int port) { d_block = block; d_port = port; 
}
-  gr_block_sptr block() const { return d_block; }
+  gr_endpoint(gr_basic_block_sptr block, int port) { d_block = block; d_port = 
port; }
+  gr_basic_block_sptr block() const { return d_block; }
   int port() const { return d_port; }
 };    
 
@@ -66,8 +66,8 @@
 public:
   ~gr_simple_flowgraph();
 
-  void connect(gr_block_sptr src_block, int src_port,
-              gr_block_sptr dst_block, int dst_port);
+  void connect(gr_basic_block_sptr src_block, int src_port,
+              gr_basic_block_sptr dst_block, int dst_port);
   void validate();
 };
 

Modified: 
gnuradio/branches/developers/jcorgan/hier2/gnuradio-core/src/lib/runtime/gr_simple_flowgraph_detail.cc
===================================================================
--- 
gnuradio/branches/developers/jcorgan/hier2/gnuradio-core/src/lib/runtime/gr_simple_flowgraph_detail.cc
      2007-04-11 07:29:05 UTC (rev 4946)
+++ 
gnuradio/branches/developers/jcorgan/hier2/gnuradio-core/src/lib/runtime/gr_simple_flowgraph_detail.cc
      2007-04-11 17:45:48 UTC (rev 4947)
@@ -102,7 +102,7 @@
 {
   d_blocks = calc_used_blocks();
 
-  for (gr_block_viter_t p = d_blocks.begin(); p != d_blocks.end(); p++) {
+  for (gr_basic_block_viter_t p = d_blocks.begin(); p != d_blocks.end(); p++) {
     std::vector<int> used_ports;
     int ninputs, noutputs;
 
@@ -120,7 +120,7 @@
 }
 
 std::vector<int>
-gr_simple_flowgraph_detail::calc_used_ports(gr_block_sptr block, bool 
check_inputs)
+gr_simple_flowgraph_detail::calc_used_ports(gr_basic_block_sptr block, bool 
check_inputs)
 {
   if (GR_SIMPLE_FLOWGRAPH_DETAIL_DEBUG)
     std::cout << "Calculating used " << (check_inputs ? "input " : "output ")
@@ -148,7 +148,7 @@
 }
 
 gr_edge_vector_t
-gr_simple_flowgraph_detail::calc_connections(gr_block_sptr block, bool 
check_inputs)
+gr_simple_flowgraph_detail::calc_connections(gr_basic_block_sptr block, bool 
check_inputs)
 {
   gr_edge_vector_t result;
 
@@ -167,7 +167,7 @@
 }
 
 void
-gr_simple_flowgraph_detail::check_contiguity(gr_block_sptr block,
+gr_simple_flowgraph_detail::check_contiguity(gr_basic_block_sptr block,
                                              const std::vector<int> 
&used_ports,
                                              bool check_inputs)
 {
@@ -214,8 +214,8 @@
 void
 gr_simple_flowgraph_detail::setup_connections()
 {
-  // Assign block details to component blocks
-  for (gr_block_viter_t p = d_blocks.begin(); p != d_blocks.end(); p++) {
+  // Assign block details to blocks
+  for (gr_basic_block_viter_t p = d_blocks.begin(); p != d_blocks.end(); p++) {
     if (GR_SIMPLE_FLOWGRAPH_DETAIL_DEBUG)
       std::cout << "Allocating output buffers for " << (*p)->name() << "..." 
<< std::endl;
 
@@ -224,13 +224,18 @@
     gr_block_detail_sptr detail = gr_make_block_detail(ninputs, noutputs);
     for (int i = 0; i < noutputs; i++)
       detail->set_output(i, allocate_buffer(*p, i));
-    (*p)->set_detail(detail);
+
+    boost::dynamic_pointer_cast<gr_block, 
gr_basic_block>(*p)->set_detail(detail);
   }
 
   // Connect inputs to outputs for each block
-  for(gr_block_viter_t p = d_blocks.begin(); p != d_blocks.end(); p++) {
+  for(gr_basic_block_viter_t p = d_blocks.begin(); p != d_blocks.end(); p++) {
+    gr_block_sptr grblock(boost::dynamic_pointer_cast<gr_block, 
gr_basic_block>(*p));
+    if (!grblock)
+      throw std::runtime_error("setup_connections found non-gr_block");
+
     // Get its detail and edges that feed into it
-    gr_block_detail_sptr detail = (*p)->detail();
+    gr_block_detail_sptr detail = grblock->detail();
     gr_edge_vector_t in_edges = calc_upstream_edges(*p);
 
     if (GR_SIMPLE_FLOWGRAPH_DETAIL_DEBUG)
@@ -243,34 +248,43 @@
       // buffer on the source port
       int dst_port = (*e)->dst().port();
       int src_port = (*e)->src().port();
-      gr_block_sptr src_block = (*e)->src().block();
-      gr_buffer_sptr src_buffer = src_block->detail()->output(src_port);
+      gr_basic_block_sptr src_block = (*e)->src().block();
+      gr_block_sptr src_grblock(boost::dynamic_pointer_cast<gr_block, 
gr_basic_block>(src_block));
+      if (!grblock)
+       throw std::runtime_error("setup_connections found non-gr_block");
+      gr_buffer_sptr src_buffer = src_grblock->detail()->output(src_port);
 
       if (GR_SIMPLE_FLOWGRAPH_DETAIL_DEBUG)
        std::cout << "Setting input on " << (*e)->dst() << std::endl;
 
-      detail->set_input(dst_port, gr_buffer_add_reader(src_buffer, 
(*p)->history()-1));
+      detail->set_input(dst_port, gr_buffer_add_reader(src_buffer, 
grblock->history()-1));
     }
   }
 }
 
 gr_buffer_sptr
-gr_simple_flowgraph_detail::allocate_buffer(gr_block_sptr block, int port)
+gr_simple_flowgraph_detail::allocate_buffer(gr_basic_block_sptr block, int 
port)
 {
+  gr_block_sptr grblock(boost::dynamic_pointer_cast<gr_block, 
gr_basic_block>(block));
+  if (!grblock)
+    throw std::runtime_error("allocate_buffer found non-gr_block");
   int item_size = block->output_signature()->sizeof_stream_item(port);
   int nitems = s_fixed_buffer_size/item_size;
 
   // Make sure there are at least twice the output_multiple no. of items
-  if (nitems < 2*block->output_multiple())     // Note: this means 
output_multiple()
-    nitems = 2*block->output_multiple();       // can't be changed by block 
dynamically
+  if (nitems < 2*grblock->output_multiple())   // Note: this means 
output_multiple()
+    nitems = 2*grblock->output_multiple();     // can't be changed by block 
dynamically
 
   // If any downstream blocks are decimators and/or have a large 
output_multiple,
   // ensure we have a buffer at least twice their decimation 
factor*output_multiple
-  gr_block_vector_t blocks = calc_downstream_blocks(block, port);
-  for (gr_block_viter_t p = blocks.begin(); p != blocks.end(); p++) {
-    int decimation = (int)(1.0/(*p)->relative_rate());
-    int multiple   = (*p)->output_multiple();
-    int history    = (*p)->history();
+  gr_basic_block_vector_t blocks = calc_downstream_blocks(block, port);
+  for (gr_basic_block_viter_t p = blocks.begin(); p != blocks.end(); p++) {
+    gr_block_sptr dgrblock(boost::dynamic_pointer_cast<gr_block, 
gr_basic_block>(*p));
+      if (!dgrblock)
+       throw std::runtime_error("allocate_buffer found non-gr_block");
+    int decimation = (int)(1.0/dgrblock->relative_rate());
+    int multiple   = dgrblock->output_multiple();
+    int history    = dgrblock->history();
     nitems = std::max(nitems, 2*(decimation*multiple+history));
   }
 
@@ -281,11 +295,11 @@
   return gr_make_buffer(nitems, item_size);
 }
 
-gr_block_vector_t
-gr_simple_flowgraph_detail::calc_downstream_blocks(gr_block_sptr block, int 
port)
+gr_basic_block_vector_t
+gr_simple_flowgraph_detail::calc_downstream_blocks(gr_basic_block_sptr block, 
int port)
 {
-  gr_block_vector_t tmp, result;
-  std::insert_iterator<gr_block_vector_t> inserter(result, result.begin());
+  gr_basic_block_vector_t tmp, result;
+  std::insert_iterator<gr_basic_block_vector_t> inserter(result, 
result.begin());
 
   for (gr_edge_viter_t p = d_edges.begin(); p != d_edges.end(); p++)
     if ((*p)->src().block() == block && (*p)->src().port() == port)
@@ -297,11 +311,11 @@
   return result;
 }
 
-gr_block_vector_t
-gr_simple_flowgraph_detail::calc_downstream_blocks(gr_block_sptr block)
+gr_basic_block_vector_t
+gr_simple_flowgraph_detail::calc_downstream_blocks(gr_basic_block_sptr block)
 {
-  gr_block_vector_t tmp, result;
-  std::insert_iterator<gr_block_vector_t> inserter(result, result.begin());
+  gr_basic_block_vector_t tmp, result;
+  std::insert_iterator<gr_basic_block_vector_t> inserter(result, 
result.begin());
 
   for (gr_edge_viter_t p = d_edges.begin(); p != d_edges.end(); p++)
     if ((*p)->src().block() == block)
@@ -314,7 +328,7 @@
 }
 
 gr_edge_vector_t
-gr_simple_flowgraph_detail::calc_upstream_edges(gr_block_sptr block)
+gr_simple_flowgraph_detail::calc_upstream_edges(gr_basic_block_sptr block)
 {
   gr_edge_vector_t result;
 
@@ -325,11 +339,11 @@
   return result; // Assume no duplicates
 }
 
-gr_block_vector_t
+gr_basic_block_vector_t
 gr_simple_flowgraph_detail::calc_used_blocks()
 {
-  gr_block_vector_t tmp, result;
-  std::insert_iterator<gr_block_vector_t> inserter(result, result.begin());
+  gr_basic_block_vector_t tmp, result;
+  std::insert_iterator<gr_basic_block_vector_t> inserter(result, 
result.begin());
 
   for (gr_edge_viter_t p = d_edges.begin(); p != d_edges.end(); p++) {
     tmp.push_back((*p)->src().block());
@@ -350,36 +364,36 @@
 gr_simple_flowgraph_detail::partition()
 {
   std::vector<gr_block_vector_t> result;
-  gr_block_vector_t blocks = calc_used_blocks();
-  gr_block_vector_t graph;
+  gr_basic_block_vector_t blocks = calc_used_blocks();
+  gr_basic_block_vector_t graph;
 
   while (blocks.size() > 0) {
     graph = calc_reachable_blocks(blocks[0], blocks);
     assert(graph.size());
     result.push_back(topological_sort(graph));
 
-    for (gr_block_viter_t p = graph.begin(); p != graph.end(); p++)
+    for (gr_basic_block_viter_t p = graph.begin(); p != graph.end(); p++)
       blocks.erase(find(blocks.begin(), blocks.end(), *p));
   }
 
   return result;
 }
 
-gr_block_vector_t
-gr_simple_flowgraph_detail::calc_reachable_blocks(gr_block_sptr block, 
gr_block_vector_t &blocks)
+gr_basic_block_vector_t
+gr_simple_flowgraph_detail::calc_reachable_blocks(gr_basic_block_sptr block, 
gr_basic_block_vector_t &blocks)
 {
-  gr_block_vector_t result;
+  gr_basic_block_vector_t result;
 
   // Mark all blocks as unvisited
-  for (gr_block_viter_t p = blocks.begin(); p != blocks.end(); p++)
-    (*p)->detail()->set_color(gr_block_detail::WHITE);
+  for (gr_basic_block_viter_t p = blocks.begin(); p != blocks.end(); p++)
+    boost::dynamic_pointer_cast<gr_block, 
gr_basic_block>(*p)->detail()->set_color(gr_block_detail::WHITE);
 
   // Recursively mark all reachable blocks
   reachable_dfs_visit(block, blocks);
 
   // Collect all the blocks that have been visited
-  for (gr_block_viter_t p = blocks.begin(); p != blocks.end(); p++)
-    if ((*p)->detail()->color() == gr_block_detail::BLACK)
+  for (gr_basic_block_viter_t p = blocks.begin(); p != blocks.end(); p++)
+    if ((boost::dynamic_pointer_cast<gr_block, 
gr_basic_block>(*p))->detail()->color() == gr_block_detail::BLACK)
       result.push_back(*p);
 
   return result;
@@ -387,25 +401,25 @@
 
 // Recursively mark all reachable blocks from given block and block list
 void 
-gr_simple_flowgraph_detail::reachable_dfs_visit(gr_block_sptr block, 
gr_block_vector_t &blocks)
+gr_simple_flowgraph_detail::reachable_dfs_visit(gr_basic_block_sptr block, 
gr_basic_block_vector_t &blocks)
 {
   // Mark the current one as visited
-  block->detail()->set_color(gr_block_detail::BLACK);
+  boost::dynamic_pointer_cast<gr_block, 
gr_basic_block>(block)->detail()->set_color(gr_block_detail::BLACK);
 
   // Recurse into adjacent vertices
-  gr_block_vector_t adjacent = calc_adjacent_blocks(block, blocks);
+  gr_basic_block_vector_t adjacent = calc_adjacent_blocks(block, blocks);
 
-  for (gr_block_viter_t p = adjacent.begin(); p != adjacent.end(); p++)
-    if ((*p)->detail()->color() == gr_block_detail::WHITE)
+  for (gr_basic_block_viter_t p = adjacent.begin(); p != adjacent.end(); p++)
+    if (boost::dynamic_pointer_cast<gr_block, 
gr_basic_block>(*p)->detail()->color() == gr_block_detail::WHITE)
       reachable_dfs_visit(*p, blocks);
 }
 
 // Return a list of block adjacent to a given block along any edge
-gr_block_vector_t 
-gr_simple_flowgraph_detail::calc_adjacent_blocks(gr_block_sptr block, 
gr_block_vector_t &blocks)
+gr_basic_block_vector_t 
+gr_simple_flowgraph_detail::calc_adjacent_blocks(gr_basic_block_sptr block, 
gr_basic_block_vector_t &blocks)
 {
-  gr_block_vector_t tmp, result;
-  std::insert_iterator<gr_block_vector_t> inserter(result, result.begin());
+  gr_basic_block_vector_t tmp, result;
+  std::insert_iterator<gr_basic_block_vector_t> inserter(result, 
result.begin());
     
   // Find any blocks that are inputs or outputs
   for (gr_edge_viter_t p = d_edges.begin(); p != d_edges.end(); p++) {
@@ -423,17 +437,18 @@
 }
 
 gr_block_vector_t
-gr_simple_flowgraph_detail::topological_sort(gr_block_vector_t &blocks)
+gr_simple_flowgraph_detail::topological_sort(gr_basic_block_vector_t &blocks)
 {
-  gr_block_vector_t result, tmp;
+  gr_basic_block_vector_t tmp;
+  gr_block_vector_t result;
   tmp = sort_sources_first(blocks);
 
   // Start 'em all white
-  for (gr_block_viter_t p = tmp.begin(); p != tmp.end(); p++)
-    (*p)->detail()->set_color(gr_block_detail::WHITE);
+  for (gr_basic_block_viter_t p = tmp.begin(); p != tmp.end(); p++)
+    boost::dynamic_pointer_cast<gr_block, 
gr_basic_block>(*p)->detail()->set_color(gr_block_detail::WHITE);
 
-  for (gr_block_viter_t p = tmp.begin(); p != tmp.end(); p++) {
-    if ((*p)->detail()->color() == gr_block_detail::WHITE)
+  for (gr_basic_block_viter_t p = tmp.begin(); p != tmp.end(); p++) {
+    if (boost::dynamic_pointer_cast<gr_block, 
gr_basic_block>(*p)->detail()->color() == gr_block_detail::WHITE)
       topological_dfs_visit(*p, result);
   }    
 
@@ -443,41 +458,41 @@
 }
 
 bool
-gr_simple_flowgraph_detail::source_p(gr_block_sptr block)
+gr_simple_flowgraph_detail::source_p(gr_basic_block_sptr block)
 {
   return (calc_upstream_edges(block).size() == 0);
 }
 
-gr_block_vector_t
-gr_simple_flowgraph_detail::sort_sources_first(gr_block_vector_t &blocks)
+gr_basic_block_vector_t
+gr_simple_flowgraph_detail::sort_sources_first(gr_basic_block_vector_t &blocks)
 {
-  gr_block_vector_t sources, nonsources, result;
+  gr_basic_block_vector_t sources, nonsources, result;
 
-  for (gr_block_viter_t p = blocks.begin(); p != blocks.end(); p++) {
+  for (gr_basic_block_viter_t p = blocks.begin(); p != blocks.end(); p++) {
     if (source_p(*p))
       sources.push_back(*p);
     else
       nonsources.push_back(*p);
   }
 
-  for (gr_block_viter_t p = sources.begin(); p != sources.end(); p++)
+  for (gr_basic_block_viter_t p = sources.begin(); p != sources.end(); p++)
     result.push_back(*p);
 
-  for (gr_block_viter_t p = nonsources.begin(); p != nonsources.end(); p++)
+  for (gr_basic_block_viter_t p = nonsources.begin(); p != nonsources.end(); 
p++)
     result.push_back(*p);
 
   return result;
 }
 
 void
-gr_simple_flowgraph_detail::topological_dfs_visit(gr_block_sptr block, 
gr_block_vector_t &output)
+gr_simple_flowgraph_detail::topological_dfs_visit(gr_basic_block_sptr block, 
gr_block_vector_t &output)
 {
-  block->detail()->set_color(gr_block_detail::GREY);
+  boost::dynamic_pointer_cast<gr_block, 
gr_basic_block>(block)->detail()->set_color(gr_block_detail::GREY);
 
-  gr_block_vector_t blocks(calc_downstream_blocks(block));
+  gr_basic_block_vector_t blocks(calc_downstream_blocks(block));
 
-  for (gr_block_viter_t p = blocks.begin(); p != blocks.end(); p++) {
-    switch ((*p)->detail()->color()) {
+  for (gr_basic_block_viter_t p = blocks.begin(); p != blocks.end(); p++) {
+    switch (boost::dynamic_pointer_cast<gr_block, 
gr_basic_block>(*p)->detail()->color()) {
     case gr_block_detail::WHITE:           
       topological_dfs_visit(*p, output);
       break;
@@ -493,8 +508,10 @@
     }
   }
 
-  block->detail()->set_color(gr_block_detail::BLACK);
-  output.push_back(block);
+  gr_block_sptr result_block(boost::dynamic_pointer_cast<gr_block, 
gr_basic_block>(block));
+
+  result_block->detail()->set_color(gr_block_detail::BLACK);
+  output.push_back(result_block);
 }
 
 void

Modified: 
gnuradio/branches/developers/jcorgan/hier2/gnuradio-core/src/lib/runtime/gr_simple_flowgraph_detail.h
===================================================================
--- 
gnuradio/branches/developers/jcorgan/hier2/gnuradio-core/src/lib/runtime/gr_simple_flowgraph_detail.h
       2007-04-11 07:29:05 UTC (rev 4946)
+++ 
gnuradio/branches/developers/jcorgan/hier2/gnuradio-core/src/lib/runtime/gr_simple_flowgraph_detail.h
       2007-04-11 17:45:48 UTC (rev 4947)
@@ -23,7 +23,7 @@
 #ifndef INCLUDED_GR_SIMPLE_FLOWGRAPH_DETAIL_H
 #define INCLUDED_GR_SIMPLE_FLOWGRAPH_DETAIL_H
 
-#include <gr_block.h>
+#include <gr_basic_block.h>
 #include <gr_simple_flowgraph.h>
 #include <iostream>
 
@@ -61,7 +61,7 @@
     
   gr_simple_flowgraph_detail() : d_blocks(), d_edges() { }
 
-  gr_block_vector_t d_blocks;
+  gr_basic_block_vector_t d_blocks;
   gr_edge_vector_t  d_edges;
   static const unsigned int s_fixed_buffer_size = GR_FIXED_BUFFER_SIZE;
     
@@ -71,38 +71,31 @@
   void check_dst_not_used(const gr_endpoint &dst);
   void check_type_match(const gr_endpoint &src, const gr_endpoint &dst);
   void validate();
-  gr_edge_vector_t calc_connections(gr_block_sptr block, bool check_inputs); 
// false=use outputs
-  std::vector<int> calc_used_ports(gr_block_sptr block, bool check_inputs); 
-  void check_contiguity(gr_block_sptr block, const std::vector<int> 
&used_ports, bool check_inputs);
+  gr_edge_vector_t calc_connections(gr_basic_block_sptr block, bool 
check_inputs); // false=use outputs
+  std::vector<int> calc_used_ports(gr_basic_block_sptr block, bool 
check_inputs); 
+  void check_contiguity(gr_basic_block_sptr block, const std::vector<int> 
&used_ports, bool check_inputs);
   void setup_connections();
   void merge_connections(gr_simple_flowgraph_sptr sfg);
 
-  gr_buffer_sptr allocate_buffer(gr_block_sptr block, int port);
-  gr_block_vector_t calc_downstream_blocks(gr_block_sptr block, int port);
-  gr_block_vector_t calc_downstream_blocks(gr_block_sptr block);
-  gr_edge_vector_t calc_upstream_edges(gr_block_sptr block);
-  gr_block_vector_t calc_used_blocks();
+  gr_buffer_sptr allocate_buffer(gr_basic_block_sptr block, int port);
+  gr_basic_block_vector_t calc_downstream_blocks(gr_basic_block_sptr block, 
int port);
+  gr_basic_block_vector_t calc_downstream_blocks(gr_basic_block_sptr block);
+  gr_edge_vector_t calc_upstream_edges(gr_basic_block_sptr block);
+  gr_basic_block_vector_t calc_used_blocks();
   std::vector<gr_block_vector_t> partition();
-  gr_block_vector_t calc_reachable_blocks(gr_block_sptr block, 
gr_block_vector_t &blocks);
-  gr_block_vector_t topological_sort(gr_block_vector_t &blocks);
-  void reachable_dfs_visit(gr_block_sptr block, gr_block_vector_t &blocks);
-  gr_block_vector_t calc_adjacent_blocks(gr_block_sptr block, 
gr_block_vector_t &blocks);
-  bool source_p(gr_block_sptr block);
-  gr_block_vector_t sort_sources_first(gr_block_vector_t &blocks);
-  void topological_dfs_visit(gr_block_sptr block, gr_block_vector_t &output);
+  gr_basic_block_vector_t calc_reachable_blocks(gr_basic_block_sptr block, 
gr_basic_block_vector_t &blocks);
+  gr_block_vector_t topological_sort(gr_basic_block_vector_t &blocks);
+  void reachable_dfs_visit(gr_basic_block_sptr block, gr_basic_block_vector_t 
&blocks);
+  gr_basic_block_vector_t calc_adjacent_blocks(gr_basic_block_sptr block, 
gr_basic_block_vector_t &blocks);
+  bool source_p(gr_basic_block_sptr block);
+  gr_basic_block_vector_t sort_sources_first(gr_basic_block_vector_t &blocks);
+  void topological_dfs_visit(gr_basic_block_sptr block, gr_block_vector_t 
&output);
         
 public:
   ~gr_simple_flowgraph_detail();
 };
 
 inline std::ostream&
-operator <<(std::ostream& os, const gr_block_sptr p)
-{
-  os << "<gr_block " << p->name() << " (" << p->unique_id() << ")>";
-  return os;
-}
-
-inline std::ostream&
 operator <<(std::ostream &os, const gr_endpoint endp)
 {
   os << endp.block()->name() << ":" << endp.port();





reply via email to

[Prev in Thread] Current Thread [Next in Thread]