[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r3498 - gnuradio/branches/developers/eb/mb/mblock/src/
From: |
eb |
Subject: |
[Commit-gnuradio] r3498 - gnuradio/branches/developers/eb/mb/mblock/src/lib |
Date: |
Thu, 7 Sep 2006 18:00:42 -0600 (MDT) |
Author: eb
Date: 2006-09-07 18:00:42 -0600 (Thu, 07 Sep 2006)
New Revision: 3498
Modified:
gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock.cc
gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock_impl.cc
gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock_impl.h
gnuradio/branches/developers/eb/mb/mblock/src/lib/qa_mblock_prims.cc
gnuradio/branches/developers/eb/mb/mblock/src/lib/qa_mblock_prims.h
Log:
define_component works
Modified: gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock.cc
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock.cc
2006-09-07 23:37:08 UTC (rev 3497)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock.cc
2006-09-08 00:00:42 UTC (rev 3498)
@@ -28,7 +28,7 @@
#include <mb_protocol_class.h>
mb_mblock::mb_mblock(mb_runtime_sptr runtime)
- : d_impl(mb_mblock_impl_sptr(new mb_mblock_impl())),
+ : d_impl(mb_mblock_impl_sptr(new mb_mblock_impl(this))),
d_runtime(runtime)
{
// FIXME
@@ -90,6 +90,14 @@
return d_impl->disconnect(endpoint_1, endpoint_2);
}
+void
+mb_mblock::send(pmt_t port_name, pmt_t signal,
+ pmt_t data, pmt_t metadata, mb_pri_t priority)
+{
+ d_impl->send(port_name, signal, data, metadata, priority);
+}
+
+
const std::vector<mb_port_class_sptr>
mb_mblock::peer_interface() const
{
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-09-07 23:37:08 UTC (rev 3497)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock_impl.cc
2006-09-08 00:00:42 UTC (rev 3498)
@@ -25,7 +25,8 @@
#include <mb_mblock_impl.h>
#include <mb_port.h>
-mb_mblock_impl::mb_mblock_impl()
+mb_mblock_impl::mb_mblock_impl(mb_mblock *mb)
+ : d_mblock(mb)
{
// FIXME
}
@@ -42,10 +43,14 @@
mb_port_class::port_type_t port_type)
{
if (port_type == mb_port_class::RELAY)
- throw pmt_unimplemented("mb_block_impl::define_port: RELAY ports are not
implemented", port_name);
+ throw pmt_notimplemented(
+ "mb_block_impl::define_port: RELAY ports are not implemented",
+ port_name);
if (lookup_port(port_name))
- throw pmt_exception("mb_mblock_impl::define_port: port_name already
defined", port_name);
+ throw pmt_exception(
+ "mb_mblock_impl::define_port: port_name already defined",
+ port_name);
mb_port_sptr p = mb_port_sptr(new mb_port(port_name, protocol_class_name,
conjugated, port_type));
@@ -56,7 +61,13 @@
mb_mblock_impl::define_component(const std::string &component_name,
mb_mblock_sptr component)
{
- // FIXME
+ pmt_t name = pmt_intern(component_name);
+ if (lookup_component(name))
+ throw pmt_exception(
+ "mb_mblock_impl::define_component: component_name already defined",
+ name);
+
+ d_components.push_back(mb_component(name, component));
}
bool
@@ -89,11 +100,22 @@
return *p;
}
- return mb_port_sptr();
+ return mb_port_sptr(); // equivalent to the NULL pointer
}
+mb_mblock_sptr
+mb_mblock_impl::lookup_component(pmt_t component_name)
+{
+ for (std::vector<mb_component>::const_iterator p = d_components.begin();
+ p != d_components.end(); p++){
+ if (pmt_eq(component_name, p->name()))
+ return p->component();
+ }
+ return mb_mblock_sptr(); // equivalent to the NULL pointer
+}
+
const std::vector<mb_port_class_sptr>
mb_mblock_impl::peer_interface() const
{
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-09-07 23:37:08 UTC (rev 3497)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock_impl.h
2006-09-08 00:00:42 UTC (rev 3498)
@@ -30,14 +30,29 @@
{
private:
+ class mb_component
+ {
+ pmt_t d_name;
+ mb_mblock_sptr d_component;
+
+ public:
+ mb_component(pmt_t name, mb_mblock_sptr component)
+ : d_name(name), d_component(component) {}
+
+ pmt_t name() const { return d_name; }
+ mb_mblock_sptr component() const { return d_component; }
+ };
+
+ mb_mblock *d_mblock; // mblock to which we belong
std::vector<mb_port_sptr> d_ports; // our ports
+ std::vector<mb_component> d_components; // our components
// NOT IMPLEMENTED
mb_mblock_impl(const mb_mblock_impl &rhs); // no copy constructor
mb_mblock_impl &operator=(const mb_mblock_impl &rhs); // no assignment
operator
- mb_mblock_impl();
+ mb_mblock_impl(mb_mblock *mb);
friend class mb_mblock;
@@ -121,6 +136,9 @@
mb_port_sptr
lookup_port(pmt_t port_name);
+ mb_mblock_sptr
+ lookup_component(pmt_t component_name);
+
public:
~mb_mblock_impl();
Modified: gnuradio/branches/developers/eb/mb/mblock/src/lib/qa_mblock_prims.cc
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/qa_mblock_prims.cc
2006-09-07 23:37:08 UTC (rev 3497)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/qa_mblock_prims.cc
2006-09-08 00:00:42 UTC (rev 3498)
@@ -30,7 +30,7 @@
static pmt_t s_cs = pmt_intern("cs");
static pmt_t s_debug = pmt_intern("debug");
-// ----------------------------------------------------------------
+// ================================================================
class dp_1 : public mb_mblock
{
@@ -125,3 +125,69 @@
#endif
}
+
+// ================================================================
+
+class dc_0 : public mb_mblock
+{
+public:
+ dc_0(mb_runtime_sptr runtime);
+ ~dc_0();
+};
+
+dc_0::dc_0(mb_runtime_sptr runtime)
+ : mb_mblock(runtime)
+{
+}
+
+dc_0::~dc_0() {}
+
+// ----------------------------------------------------------------
+
+class dc_ok : public mb_mblock
+{
+public:
+ dc_ok(mb_runtime_sptr runtime);
+ ~dc_ok();
+};
+
+dc_ok::dc_ok(mb_runtime_sptr runtime)
+ : mb_mblock(runtime)
+{
+ define_component("c0", mb_mblock_sptr(new dc_0(runtime)));
+ define_component("c1", mb_mblock_sptr(new dc_0(runtime)));
+ define_component("c2", mb_mblock_sptr(new dc_0(runtime)));
+}
+
+dc_ok::~dc_ok(){}
+
+// ----------------------------------------------------------------
+
+class dc_not_ok : public mb_mblock
+{
+public:
+ dc_not_ok(mb_runtime_sptr runtime);
+ ~dc_not_ok();
+};
+
+dc_not_ok::dc_not_ok(mb_runtime_sptr runtime)
+ : mb_mblock(runtime)
+{
+ define_component("c0", mb_mblock_sptr(new dc_0(runtime)));
+ define_component("c0", mb_mblock_sptr(new dc_0(runtime))); // duplicate
name
+}
+
+dc_not_ok::~dc_not_ok(){}
+
+// ----------------------------------------------------------------
+
+void
+qa_mblock_prims::test_define_components()
+{
+ mb_runtime_sptr rt = mb_make_runtime();
+ mb_mblock_sptr mb1 = mb_mblock_sptr(new dc_ok(rt));
+
+ // raises pmt_exception because of duplicate component definition of "c0"
+ CPPUNIT_ASSERT_THROW(mb_mblock_sptr(new dc_not_ok(rt)), pmt_exception);
+}
+
Modified: gnuradio/branches/developers/eb/mb/mblock/src/lib/qa_mblock_prims.h
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/qa_mblock_prims.h
2006-09-07 23:37:08 UTC (rev 3497)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/qa_mblock_prims.h
2006-09-08 00:00:42 UTC (rev 3498)
@@ -29,10 +29,12 @@
CPPUNIT_TEST_SUITE(qa_mblock_prims);
CPPUNIT_TEST(test_define_ports);
+ CPPUNIT_TEST(test_define_components);
CPPUNIT_TEST_SUITE_END();
private:
void test_define_ports();
+ void test_define_components();
};
#endif /* INCLUDED_QA_MBLOCK_PRIMS_H */
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r3498 - gnuradio/branches/developers/eb/mb/mblock/src/lib,
eb <=