[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r4002 - gnuradio/branches/developers/eb/mb/mblock/src/
From: |
eb |
Subject: |
[Commit-gnuradio] r4002 - gnuradio/branches/developers/eb/mb/mblock/src/lib |
Date: |
Fri, 17 Nov 2006 00:46:39 -0700 (MST) |
Author: eb
Date: 2006-11-17 00:46:38 -0700 (Fri, 17 Nov 2006)
New Revision: 4002
Modified:
gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock.cc
gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock.h
gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock_impl.cc
gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock_impl.h
Log:
added walk_tree
Modified: gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock.cc
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock.cc
2006-11-17 06:43:22 UTC (rev 4001)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock.cc
2006-11-17 07:46:38 UTC (rev 4002)
@@ -107,3 +107,9 @@
{
return d_impl->nconnections();
}
+
+bool
+mb_mblock::walk_tree(mb_visitor *visitor, const std::string &path)
+{
+ return d_impl->walk_tree(visitor, path);
+}
Modified: gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock.h
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock.h
2006-11-17 06:43:22 UTC (rev 4001)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock.h
2006-11-17 07:46:38 UTC (rev 4002)
@@ -26,11 +26,18 @@
#include <mb_port.h>
-class mb_runtime;
+/*!
+ * Abstract class implementing visitor pattern
+ * \ingroup internal
+ */
+class mb_visitor
+{
+public:
+ virtual ~mb_visitor();
+ bool operator()(mb_mblock *mblock, const std::string &path) { return
visit(mblock, path); }
+ virtual bool visit(mb_mblock *mblock, const std::string &path) = 0;
+};
-class mb_mblock;
-typedef boost::shared_ptr<mb_mblock> mb_mblock_sptr;
-
// ----------------------------------------------------------------------
/*!
@@ -169,6 +176,12 @@
public:
virtual ~mb_mblock();
+ /*!
+ * \brief Perform a pre-order depth-first traversal of the hierarchy.
+ *
+ * The traversal stops and returns false if any call to visitor returns
false.
+ */
+ bool walk_tree(mb_visitor *visitor, const std::string &path="");
};
Modified: gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock_impl.cc
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock_impl.cc
2006-11-17 06:43:22 UTC (rev 4001)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock_impl.cc
2006-11-17 07:46:38 UTC (rev 4002)
@@ -197,3 +197,18 @@
return (pmt_subsetp(p0_outgoing, p1_incoming)
&& pmt_subsetp(p1_outgoing, p0_incoming));
}
+
+bool
+mb_mblock_impl::walk_tree(mb_visitor *visitor, const std::string &path)
+{
+ if (!(*visitor)(d_mb, path))
+ return false;
+
+ mb_comp_map_t::iterator it;
+ for (it = d_comp_map.begin(); it != d_comp_map.end(); ++it)
+ if (!(it->second->walk_tree(visitor, path + "/" + it->first)))
+ return false;
+
+ return true;
+}
+
Modified: gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock_impl.h
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock_impl.h
2006-11-17 06:43:22 UTC (rev 4001)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock_impl.h
2006-11-17 07:46:38 UTC (rev 4002)
@@ -132,6 +132,8 @@
int
nconnections() const;
+ bool
+ walk_tree(mb_visitor *visitor, const std::string &path="");
/*
* Our implementation methods
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r4002 - gnuradio/branches/developers/eb/mb/mblock/src/lib,
eb <=