[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r3970 - gnuradio/branches/developers/jcorgan/hier/gnur
From: |
jcorgan |
Subject: |
[Commit-gnuradio] r3970 - gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime |
Date: |
Sat, 11 Nov 2006 16:21:12 -0700 (MST) |
Author: jcorgan
Date: 2006-11-11 16:21:12 -0700 (Sat, 11 Nov 2006)
New Revision: 3970
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_hier_block2.h
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_runtime_impl.cc
Log:
Work in progress.
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-11 20:49:40 UTC (rev 3969)
+++
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_basic_block.h
2006-11-11 23:21:12 UTC (rev 3970)
@@ -27,6 +27,14 @@
#include <boost/enable_shared_from_this.hpp>
#include <string>
+class gr_tree_visitor
+{
+public:
+ virtual ~gr_tree_visitor() {};
+ bool operator()(gr_basic_block_sptr block) { return
visited(block); }
+ virtual bool visited(gr_basic_block_sptr block) = 0;
+};
+
/*!
* \brief The abstract base class for all signal processing blocks.
* \ingroup block
@@ -60,9 +68,7 @@
d_output_signature = iosig;
}
- //! overridden in gr_block and gr_hier_block2 for type specific behavior
- virtual bool validate() { return true; }
-
+
public:
virtual ~gr_basic_block();
long unique_id() const { return d_unique_id; }
@@ -71,6 +77,10 @@
gr_io_signature_sptr output_signature() const { return d_output_signature;
}
gr_basic_block_sptr basic_block();
+ /*! overridden in gr_hier_block2 to implement tree traversal
+ * otherwise invoke callback with shared pointer to this object
+ */
+ virtual bool visit(gr_tree_visitor &visitor) { return
visitor(shared_from_this()); }
/*!
* \brief Confirm that ninputs and noutputs is an acceptable combination.
*
@@ -85,6 +95,10 @@
* and output gr_io_signatures.
*/
virtual bool check_topology(int ninputs, int noutputs) { return true; }
+ /*!
+ * overridden in gr_block and gr_hier_block2 for type specific behavior
+ */
+ virtual bool validate() { return true; }
};
long gr_basic_block_ncurrently_allocated();
Modified:
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_hier_block2.h
===================================================================
---
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_hier_block2.h
2006-11-11 20:49:40 UTC (rev 3969)
+++
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_hier_block2.h
2006-11-11 23:21:12 UTC (rev 3970)
@@ -53,7 +53,7 @@
gr_hier_block2(const std::string &name,
gr_io_signature_sptr input_signature,
gr_io_signature_sptr output_signature);
-
+
public:
~gr_hier_block2();
@@ -61,8 +61,8 @@
void connect(const std::string &src_name, int src_port,
const std::string &dst_name, int dst_port);
- // Overrides gr_basic_block, performs recursive validation of connections
- bool validate();
+ // Overrides gr_basic_block, checks validity of connection/component
databases
+ virtual bool validate();
};
inline std::ostream &operator << (std::ostream &os, gr_basic_block_sptr
basic_block)
Modified:
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_runtime_impl.cc
===================================================================
---
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_runtime_impl.cc
2006-11-11 20:49:40 UTC (rev 3969)
+++
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_runtime_impl.cc
2006-11-11 23:21:12 UTC (rev 3970)
@@ -30,6 +30,7 @@
#include <gr_hier_block2.h>
#include <stdexcept>
#include <iostream>
+#include <boost/bind.hpp>
gr_runtime_impl::gr_runtime_impl(gr_hier_block2_sptr top_block) :
d_running(false),
@@ -41,6 +42,13 @@
{
}
+class validation_visitor : public gr_tree_visitor
+{
+public:
+ virtual bool visited(gr_basic_block_sptr block)
+ { std::cout << "validation_visitor::visited()" << std::endl; return
block->validate(); }
+};
+
void
gr_runtime_impl::start()
{
@@ -52,7 +60,8 @@
else
d_running = true;
- if (!d_top_block->validate())
+ validation_visitor validator;
+ if (!d_top_block->visit(validator))
throw std::runtime_error("tree validation failed");
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r3970 - gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime,
jcorgan <=