commit-gnuradio
[Top][All Lists]
Advanced

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

[Commit-gnuradio] r9387 - gnuradio/branches/releases/3.1/gnuradio-core/s


From: jcorgan
Subject: [Commit-gnuradio] r9387 - gnuradio/branches/releases/3.1/gnuradio-core/src/lib/runtime
Date: Sat, 23 Aug 2008 17:06:27 -0600 (MDT)

Author: jcorgan
Date: 2008-08-23 17:06:27 -0600 (Sat, 23 Aug 2008)
New Revision: 9387

Modified:
   gnuradio/branches/releases/3.1/gnuradio-core/src/lib/runtime/gr_flowgraph.cc
Log:
Applied changeset r9253 on trunk to release branch

Modified: 
gnuradio/branches/releases/3.1/gnuradio-core/src/lib/runtime/gr_flowgraph.cc
===================================================================
--- 
gnuradio/branches/releases/3.1/gnuradio-core/src/lib/runtime/gr_flowgraph.cc    
    2008-08-23 23:04:35 UTC (rev 9386)
+++ 
gnuradio/branches/releases/3.1/gnuradio-core/src/lib/runtime/gr_flowgraph.cc    
    2008-08-23 23:06:27 UTC (rev 9387)
@@ -48,6 +48,20 @@
 {
 }
 
+// FIXME: move to libgruel as a utility function
+template<class T>
+static
+std::vector<T>
+unique_vector(std::vector<T> v)
+{
+  std::vector<T> result;
+  std::insert_iterator<std::vector<T> > inserter(result, result.begin());
+  
+  sort(v.begin(), v.end());
+  unique_copy(v.begin(), v.end(), inserter);
+  return result;
+}
+
 void
 gr_flowgraph::connect(const gr_endpoint &src, const gr_endpoint &dst)
 {
@@ -163,8 +177,7 @@
 gr_basic_block_vector_t
 gr_flowgraph::calc_used_blocks()
 {
-  gr_basic_block_vector_t tmp, result;
-  std::insert_iterator<gr_basic_block_vector_t> inserter(result, 
result.begin());
+  gr_basic_block_vector_t tmp;
 
   // Collect all blocks in the edge list
   for (gr_edge_viter_t p = d_edges.begin(); p != d_edges.end(); p++) {
@@ -172,17 +185,13 @@
     tmp.push_back(p->dst().block());
   }
 
-  // Return vector of unique blocks
-  sort(tmp.begin(), tmp.end());
-  unique_copy(tmp.begin(), tmp.end(), inserter);
-  return result;
+  return unique_vector<gr_basic_block_sptr>(tmp);
 }
 
 std::vector<int>
 gr_flowgraph::calc_used_ports(gr_basic_block_sptr block, bool check_inputs)
 {
-  std::vector<int> tmp, result;
-  std::insert_iterator<std::vector<int> > inserter(result, result.begin());
+  std::vector<int> tmp;
 
   // Collect all seen ports 
   gr_edge_vector_t edges = calc_connections(block, check_inputs);
@@ -193,10 +202,7 @@
       tmp.push_back(p->src().port());
   }
 
-  // Return vector of unique values
-  std::sort(tmp.begin(), tmp.end());
-  std::unique_copy(tmp.begin(), tmp.end(), inserter);
-  return result;
+  return unique_vector<int>(tmp);
 }
 
 gr_edge_vector_t
@@ -264,33 +270,25 @@
 gr_basic_block_vector_t
 gr_flowgraph::calc_downstream_blocks(gr_basic_block_sptr block, int port)
 {
-  gr_basic_block_vector_t tmp, result;
-  std::insert_iterator<gr_basic_block_vector_t> inserter(result, 
result.begin());
+  gr_basic_block_vector_t tmp;
 
   for (gr_edge_viter_t p = d_edges.begin(); p != d_edges.end(); p++)
     if (p->src() == gr_endpoint(block, port))
       tmp.push_back(p->dst().block());
 
-  // Remove duplicates
-  sort(tmp.begin(), tmp.end());
-  unique_copy(tmp.begin(), tmp.end(), inserter);
-  return result;
+  return unique_vector<gr_basic_block_sptr>(tmp);
 }
 
 gr_basic_block_vector_t
 gr_flowgraph::calc_downstream_blocks(gr_basic_block_sptr block)
 {
-  gr_basic_block_vector_t tmp, result;
-  std::insert_iterator<gr_basic_block_vector_t> inserter(result, 
result.begin());
+  gr_basic_block_vector_t tmp;
 
   for (gr_edge_viter_t p = d_edges.begin(); p != d_edges.end(); p++)
     if (p->src().block() == block)
       tmp.push_back(p->dst().block());
 
-  // Remove duplicates
-  sort(tmp.begin(), tmp.end());
-  unique_copy(tmp.begin(), tmp.end(), inserter);
-  return result;
+  return unique_vector<gr_basic_block_sptr>(tmp);
 }
 
 gr_edge_vector_t
@@ -386,22 +384,17 @@
 gr_basic_block_vector_t 
 gr_flowgraph::calc_adjacent_blocks(gr_basic_block_sptr block, 
gr_basic_block_vector_t &blocks)
 {
-  gr_basic_block_vector_t tmp, result;
-  std::insert_iterator<gr_basic_block_vector_t> inserter(result, 
result.begin());
+  gr_basic_block_vector_t tmp;
     
   // Find any blocks that are inputs or outputs
   for (gr_edge_viter_t p = d_edges.begin(); p != d_edges.end(); p++) {
-
     if (p->src().block() == block)
       tmp.push_back(p->dst().block());
     if (p->dst().block() == block)
       tmp.push_back(p->src().block());
   }    
 
-  // Remove duplicates
-  sort(tmp.begin(), tmp.end());
-  unique_copy(tmp.begin(), tmp.end(), inserter);
-  return result;
+  return unique_vector<gr_basic_block_sptr>(tmp);
 }
 
 gr_basic_block_vector_t





reply via email to

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