[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r3973 - gnuradio/branches/developers/jcorgan/hier/gnur
From: |
jcorgan |
Subject: |
[Commit-gnuradio] r3973 - gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime |
Date: |
Sun, 12 Nov 2006 11:03:14 -0700 (MST) |
Author: jcorgan
Date: 2006-11-12 11:03:13 -0700 (Sun, 12 Nov 2006)
New Revision: 3973
Modified:
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_basic_block.h
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_block.h
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_hier_block2_impl.cc
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_hier_block2_impl.h
Log:
Work in progress, completed tree visit.
Modified:
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_basic_block.h
===================================================================
---
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_basic_block.h
2006-11-12 17:15:05 UTC (rev 3972)
+++
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_basic_block.h
2006-11-12 18:03:13 UTC (rev 3973)
@@ -105,6 +105,9 @@
virtual bool validate() { return true; }
};
+typedef std::vector<gr_basic_block_sptr> gr_basic_block_vector_t;
+typedef std::vector<gr_basic_block_sptr>::iterator gr_basic_block_viter_t;
+
long gr_basic_block_ncurrently_allocated();
#endif /* INCLUDED_GR_BASIC_BLOCK_H */
Modified:
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_block.h
===================================================================
---
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_block.h
2006-11-12 17:15:05 UTC (rev 3972)
+++
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_block.h
2006-11-12 18:03:13 UTC (rev 3973)
@@ -217,4 +217,7 @@
void set_detail (gr_block_detail_sptr detail) { d_detail = detail; }
};
+typedef std::vector<gr_block_sptr> gr_block_vector_t;
+typedef std::vector<gr_block_sptr>::iterator gr_block_viter_t;
+
#endif /* INCLUDED_GR_BLOCK_H */
Modified:
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_hier_block2_impl.cc
===================================================================
---
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_hier_block2_impl.cc
2006-11-12 17:15:05 UTC (rev 3972)
+++
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_hier_block2_impl.cc
2006-11-12 18:03:13 UTC (rev 3973)
@@ -57,7 +57,7 @@
gr_basic_block_sptr
gr_hier_block2_impl::get_block_by_name(const std::string &name)
{
- for (std::vector<gr_hier_component>::const_iterator p =
d_components.begin();
+ for (gr_hier_component_viter_t p = d_components.begin();
p != d_components.end(); p++) {
if (name == p->name())
return p->basic_block();
@@ -69,7 +69,7 @@
std::string
gr_hier_block2_impl::get_name_by_block(gr_basic_block_sptr basic_block)
{
- for (std::vector<gr_hier_component>::const_iterator p =
d_components.begin();
+ for (gr_hier_component_viter_t p = d_components.begin();
p != d_components.end(); p++) {
if (basic_block == p->basic_block())
return p->name();
@@ -91,7 +91,7 @@
void
gr_hier_block2_impl::check_dst_not_used(const std::string name, int port)
{
- for (std::vector<gr_connection>::const_iterator p = d_connections.begin();
+ for (gr_connection_viter_t p = d_connections.begin();
p != d_connections.end(); p++) {
if (p->dst().name() == name && p->dst().port() == port)
@@ -130,6 +130,42 @@
bool
gr_hier_block2_impl::visit(gr_tree_visitor &visitor)
{
- // Iterate only through connected children and callback visitor on each
+ gr_basic_block_vector_t blocks = get_connected_blocks();
+
+ for (gr_basic_block_viter_t p = blocks.begin();
+ p != blocks.end(); p++) {
+
+ if (!visitor(*p))
+ return false;
+ }
+
return true;
}
+
+gr_basic_block_vector_t
+gr_hier_block2_impl::get_connected_blocks()
+{
+ gr_basic_block_vector_t blocks;
+ gr_basic_block_viter_t block_iter;
+
+ // Accumulate vector of blocks that are actually in connection list
+ for (gr_connection_viter_t p = d_connections.begin();
+ p != d_connections.end(); p++) {
+
+ gr_basic_block_sptr src_block = get_block_by_name(p->src().name());
+ gr_basic_block_sptr dst_block = get_block_by_name(p->dst().name());
+
+ block_iter = find(blocks.begin(), blocks.end(), src_block);
+ if (block_iter == blocks.end())
+ blocks.push_back(src_block);
+
+ block_iter = find(blocks.begin(), blocks.end(), dst_block);
+ if (block_iter == blocks.end())
+ blocks.push_back(dst_block);
+ }
+
+ if (GR_HIER_BLOCK2_IMPL_DEBUG)
+ std::cout << "Found " << blocks.size() << " connected blocks." <<
std::endl;
+
+ return blocks;
+}
Modified:
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_hier_block2_impl.h
===================================================================
---
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_hier_block2_impl.h
2006-11-12 17:15:05 UTC (rev 3972)
+++
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_hier_block2_impl.h
2006-11-12 18:03:13 UTC (rev 3973)
@@ -42,6 +42,9 @@
gr_basic_block_sptr basic_block() const { return d_basic_block; }
};
+typedef std::vector<gr_hier_component> gr_hier_component_vector_t;
+typedef std::vector<gr_hier_component>::iterator gr_hier_component_viter_t;
+
class gr_endpoint
{
private:
@@ -70,6 +73,9 @@
gr_endpoint dst() const { return d_dst; }
};
+typedef std::vector<gr_connection> gr_connection_vector_t;
+typedef std::vector<gr_connection>::iterator gr_connection_viter_t;
+
class gr_hier_block2_impl : boost::noncopyable
{
private:
@@ -86,6 +92,7 @@
void check_dst_not_used(const std::string name, int port);
void check_type_match(gr_io_signature_sptr src_sig, int src_port,
gr_io_signature_sptr dst_sig, int dst_port);
+ gr_basic_block_vector_t get_connected_blocks();
bool visit(gr_tree_visitor &visitor);
bool validate();
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r3973 - gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime,
jcorgan <=