[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r6165 - gnuradio/branches/developers/jcorgan/fg/gnurad
From: |
jcorgan |
Subject: |
[Commit-gnuradio] r6165 - gnuradio/branches/developers/jcorgan/fg/gnuradio-core/src/lib/runtime |
Date: |
Wed, 22 Aug 2007 11:58:07 -0600 (MDT) |
Author: jcorgan
Date: 2007-08-22 11:58:06 -0600 (Wed, 22 Aug 2007)
New Revision: 6165
Modified:
gnuradio/branches/developers/jcorgan/fg/gnuradio-core/src/lib/runtime/gr_basic_block.cc
gnuradio/branches/developers/jcorgan/fg/gnuradio-core/src/lib/runtime/gr_basic_block.h
gnuradio/branches/developers/jcorgan/fg/gnuradio-core/src/lib/runtime/gr_block_detail.cc
gnuradio/branches/developers/jcorgan/fg/gnuradio-core/src/lib/runtime/gr_block_detail.h
gnuradio/branches/developers/jcorgan/fg/gnuradio-core/src/lib/runtime/gr_flat_flowgraph.cc
Log:
Move topological sort 'color' variable out of gr_block_detail and
put in gr_basic_block where it belongs. Eliminates many casts and
indirections.
Modified:
gnuradio/branches/developers/jcorgan/fg/gnuradio-core/src/lib/runtime/gr_basic_block.cc
===================================================================
---
gnuradio/branches/developers/jcorgan/fg/gnuradio-core/src/lib/runtime/gr_basic_block.cc
2007-08-22 17:27:12 UTC (rev 6164)
+++
gnuradio/branches/developers/jcorgan/fg/gnuradio-core/src/lib/runtime/gr_basic_block.cc
2007-08-22 17:58:06 UTC (rev 6165)
@@ -42,7 +42,8 @@
: d_name(name),
d_input_signature(input_signature),
d_output_signature(output_signature),
- d_unique_id(s_next_id++)
+ d_unique_id(s_next_id++),
+ d_color(WHITE)
{
s_ncurrently_allocated++;
}
Modified:
gnuradio/branches/developers/jcorgan/fg/gnuradio-core/src/lib/runtime/gr_basic_block.h
===================================================================
---
gnuradio/branches/developers/jcorgan/fg/gnuradio-core/src/lib/runtime/gr_basic_block.h
2007-08-22 17:27:12 UTC (rev 6164)
+++
gnuradio/branches/developers/jcorgan/fg/gnuradio-core/src/lib/runtime/gr_basic_block.h
2007-08-22 17:58:06 UTC (rev 6165)
@@ -41,10 +41,16 @@
class gr_basic_block : public boost::enable_shared_from_this<gr_basic_block>
{
protected:
+ friend class gr_flowgraph;
+ friend class gr_flat_flowgraph; // TODO: will be redundant
+
+ enum vcolor { WHITE, GREY, BLACK };
+
std::string d_name;
gr_io_signature_sptr d_input_signature;
gr_io_signature_sptr d_output_signature;
long d_unique_id;
+ vcolor d_color;
//! Protected constructor prevents instantiation by non-derived classes
gr_basic_block(const std::string &name,
@@ -61,6 +67,12 @@
d_output_signature = iosig;
}
+ /*!
+ * \brief Allow the flowgraph to set for sorting and partitioning
+ */
+ void set_color(vcolor color) { d_color = color; }
+ vcolor color() const { return d_color; }
+
public:
virtual ~gr_basic_block();
long unique_id() const { return d_unique_id; }
Modified:
gnuradio/branches/developers/jcorgan/fg/gnuradio-core/src/lib/runtime/gr_block_detail.cc
===================================================================
---
gnuradio/branches/developers/jcorgan/fg/gnuradio-core/src/lib/runtime/gr_block_detail.cc
2007-08-22 17:27:12 UTC (rev 6164)
+++
gnuradio/branches/developers/jcorgan/fg/gnuradio-core/src/lib/runtime/gr_block_detail.cc
2007-08-22 17:58:06 UTC (rev 6165)
@@ -38,8 +38,7 @@
gr_block_detail::gr_block_detail (unsigned int ninputs, unsigned int noutputs)
: d_ninputs (ninputs), d_noutputs (noutputs),
d_input (ninputs), d_output (noutputs),
- d_done (false),
- d_color (gr_block_detail::WHITE)
+ d_done (false)
{
s_ncurrently_allocated++;
}
Modified:
gnuradio/branches/developers/jcorgan/fg/gnuradio-core/src/lib/runtime/gr_block_detail.h
===================================================================
---
gnuradio/branches/developers/jcorgan/fg/gnuradio-core/src/lib/runtime/gr_block_detail.h
2007-08-22 17:27:12 UTC (rev 6164)
+++
gnuradio/branches/developers/jcorgan/fg/gnuradio-core/src/lib/runtime/gr_block_detail.h
2007-08-22 17:58:06 UTC (rev 6165)
@@ -75,13 +75,6 @@
void produce_each (int how_many_items);
- /*!
- * \brief Allow the flowgraph to set for sorting and partitioning
- */
- enum vcolor { WHITE, GREY, BLACK };
- void set_color(vcolor color) { d_color = color; }
- vcolor color() const { return d_color; }
-
//
----------------------------------------------------------------------------
private:
@@ -90,7 +83,6 @@
std::vector<gr_buffer_reader_sptr> d_input;
std::vector<gr_buffer_sptr> d_output;
bool d_done;
- vcolor d_color;
gr_block_detail (unsigned int ninputs, unsigned int noutputs);
Modified:
gnuradio/branches/developers/jcorgan/fg/gnuradio-core/src/lib/runtime/gr_flat_flowgraph.cc
===================================================================
---
gnuradio/branches/developers/jcorgan/fg/gnuradio-core/src/lib/runtime/gr_flat_flowgraph.cc
2007-08-22 17:27:12 UTC (rev 6164)
+++
gnuradio/branches/developers/jcorgan/fg/gnuradio-core/src/lib/runtime/gr_flat_flowgraph.cc
2007-08-22 17:58:06 UTC (rev 6165)
@@ -245,14 +245,14 @@
// Mark all blocks as unvisited
for (gr_basic_block_viter_t p = blocks.begin(); p != blocks.end(); p++)
- make_gr_block_sptr(*p)->detail()->set_color(gr_block_detail::WHITE);
+ (*p)->set_color(gr_basic_block::WHITE);
// Recursively mark all reachable blocks
reachable_dfs_visit(block, blocks);
// Collect all the blocks that have been visited
for (gr_basic_block_viter_t p = blocks.begin(); p != blocks.end(); p++)
- if ((make_gr_block_sptr(*p))->detail()->color() == gr_block_detail::BLACK)
+ if ((*p)->color() == gr_basic_block::BLACK)
result.push_back(*p);
return result;
@@ -263,13 +263,13 @@
gr_flat_flowgraph::reachable_dfs_visit(gr_basic_block_sptr block,
gr_basic_block_vector_t &blocks)
{
// Mark the current one as visited
- boost::dynamic_pointer_cast<gr_block,
gr_basic_block>(block)->detail()->set_color(gr_block_detail::BLACK);
+ block->set_color(gr_basic_block::BLACK);
// Recurse into adjacent vertices
gr_basic_block_vector_t adjacent = calc_adjacent_blocks(block, blocks);
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)
+ if ((*p)->color() == gr_basic_block::WHITE)
reachable_dfs_visit(*p, blocks);
}
@@ -304,10 +304,10 @@
// Start 'em all white
for (gr_basic_block_viter_t p = tmp.begin(); p != tmp.end(); p++)
- make_gr_block_sptr(*p)->detail()->set_color(gr_block_detail::WHITE);
+ (*p)->set_color(gr_basic_block::WHITE);
for (gr_basic_block_viter_t p = tmp.begin(); p != tmp.end(); p++) {
- if (make_gr_block_sptr(*p)->detail()->color() == gr_block_detail::WHITE)
+ if ((*p)->color() == gr_basic_block::WHITE)
topological_dfs_visit(*p, result);
}
@@ -345,19 +345,19 @@
void
gr_flat_flowgraph::topological_dfs_visit(gr_basic_block_sptr block,
gr_block_vector_t &output)
{
- make_gr_block_sptr(block)->detail()->set_color(gr_block_detail::GREY);
+ block->set_color(gr_basic_block::GREY);
gr_basic_block_vector_t blocks(calc_downstream_blocks(block));
for (gr_basic_block_viter_t p = blocks.begin(); p != blocks.end(); p++) {
- switch (make_gr_block_sptr(*p)->detail()->color()) {
- case gr_block_detail::WHITE:
+ switch ((*p)->color()) {
+ case gr_basic_block::WHITE:
topological_dfs_visit(*p, output);
break;
- case gr_block_detail::GREY:
+ case gr_basic_block::GREY:
throw std::runtime_error("flow graph has loops!");
- case gr_block_detail::BLACK:
+ case gr_basic_block::BLACK:
continue;
default:
@@ -365,8 +365,7 @@
}
}
- gr_block_sptr result_block = make_gr_block_sptr(block);
- result_block->detail()->set_color(gr_block_detail::BLACK);
- output.push_back(result_block);
+ block->set_color(gr_basic_block::BLACK);
+ output.push_back(make_gr_block_sptr(block));
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r6165 - gnuradio/branches/developers/jcorgan/fg/gnuradio-core/src/lib/runtime,
jcorgan <=