[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r3893 - in gnuradio/branches/developers/jcorgan/hier/g
From: |
jcorgan |
Subject: |
[Commit-gnuradio] r3893 - in gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src: lib/runtime python/gnuradio/gr |
Date: |
Sun, 29 Oct 2006 16:23:39 -0700 (MST) |
Author: jcorgan
Date: 2006-10-29 16:23:38 -0700 (Sun, 29 Oct 2006)
New Revision: 3893
Modified:
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_hier_block2.cc
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.i
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
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/python/gnuradio/gr/qa_hier_block2.py
Log:
Work in progress.
Modified:
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_hier_block2.cc
===================================================================
---
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_hier_block2.cc
2006-10-29 21:41:19 UTC (rev 3892)
+++
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_hier_block2.cc
2006-10-29 23:23:38 UTC (rev 3893)
@@ -41,8 +41,6 @@
: gr_basic_block(name, input_signature, output_signature),
d_impl(new gr_hier_block2_impl())
{
- if (GR_HIER_BLOCK2_DEBUG)
- std::cout << "Constructing hier_block2 with name '" << name << "'." <<
std::endl;
}
gr_hier_block2::~gr_hier_block2()
@@ -50,17 +48,12 @@
delete d_impl;
}
-void gr_hier_block2::define_component(const std::string name,
gr_basic_block_sptr comp)
+void gr_hier_block2::define_component(const std::string name,
gr_basic_block_sptr basic_block)
{
- if (GR_HIER_BLOCK2_DEBUG)
- std::cout << "Adding block '" << name << "' to container '" << d_name
<< "'" << std::endl;
+ d_impl->define_component(name, basic_block);
+}
- if (d_impl->get_component_by_name(name))
- throw std::invalid_argument("Name already in use");
-
- std::string result = d_impl->get_name_by_component(comp);
- if (d_impl->get_name_by_component(comp) != std::string(""))
- throw std::invalid_argument("Component already defined");
-
- d_impl->d_components.push_back(gr_hier_component(name, comp));
+void gr_hier_block2::connect(const std::string from_name, int from_port, const
std::string to_name, int to_port)
+{
+ d_impl->connect_prim(from_name, from_port, to_name, to_port);
}
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-10-29 21:41:19 UTC (rev 3892)
+++
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_hier_block2.h
2006-10-29 23:23:38 UTC (rev 3893)
@@ -61,11 +61,9 @@
public:
~gr_hier_block2();
- /*!
- * \brief Add a named block to container
- * \ingroup block
- */
- void define_component(const std::string name, gr_basic_block_sptr comp);
+ void define_component(const std::string name, gr_basic_block_sptr
basic_block);
+ void connect(const std::string from_name, int from_port,
+ const std::string to_name, int to_port);
};
#endif /* INCLUDED_GR_HIER_BLOCK2_H */
Modified:
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_hier_block2.i
===================================================================
---
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_hier_block2.i
2006-10-29 21:41:19 UTC (rev 3892)
+++
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_hier_block2.i
2006-10-29 23:23:38 UTC (rev 3893)
@@ -45,6 +45,9 @@
~gr_hier_block2 ();
// Add a named block to the container
- void define_component(const std::string name, gr_basic_block_sptr comp)
+ void define_component(const std::string name, gr_basic_block_sptr
basic_block)
throw (std::invalid_argument);
+ void connect(const std::string from_name, int from_port,
+ const std::string to_name, int to_port)
+ throw (std::invalid_argument);
};
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-10-29 21:41:19 UTC (rev 3892)
+++
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_hier_block2_impl.cc
2006-10-29 23:23:38 UTC (rev 3893)
@@ -29,32 +29,58 @@
gr_hier_block2_impl::gr_hier_block2_impl()
{
- if (GR_HIER_BLOCK2_IMPL_DEBUG)
- std::cout << "Constructing hier_block2_impl" << std::endl;
}
gr_hier_block2_impl::~gr_hier_block2_impl()
{
}
-gr_basic_block_sptr gr_hier_block2_impl::get_component_by_name(std::string
name)
+void gr_hier_block2_impl::define_component(const std::string &name,
gr_basic_block_sptr basic_block)
{
+ if (name == "input" || name == "output")
+ throw std::invalid_argument("name is reserved");
+
+ if (lookup_component(name))
+ throw std::invalid_argument("Name already in use");
+
+ if (lookup_component(basic_block) != "")
+ throw std::invalid_argument("Component already defined");
+
+ d_components.push_back(gr_hier_component(name, basic_block));
+}
+
+gr_basic_block_sptr gr_hier_block2_impl::lookup_component(const std::string
&name)
+{
for (std::vector<gr_hier_component>::const_iterator p =
d_components.begin();
p != d_components.end(); p++) {
if (name == p->name())
- return p->component();
+ return p->basic_block();
}
return gr_basic_block_sptr();
}
-std::string gr_hier_block2_impl::get_name_by_component(gr_basic_block_sptr
component)
+std::string gr_hier_block2_impl::lookup_component(gr_basic_block_sptr
basic_block)
{
for (std::vector<gr_hier_component>::const_iterator p =
d_components.begin();
p != d_components.end(); p++) {
- if (component == p->component())
+ if (basic_block == p->basic_block())
return p->name();
}
- return std::string();
+ return std::string("");
}
+
+void gr_hier_block2_impl::connect_prim(const std::string &from_name, int
from_port,
+ const std::string &to_name, int to_port)
+{
+ /* Need to validate the following:
+
+ from_name is either "input" or a defined component
+ to_name is either "output" or a defined component
+ from_port is valid for from_name
+ to_port is valid for to_name
+ to_name:to_port is not already in use
+ from_name:from_port is same type as to_name:to_port
+ */
+}
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-10-29 21:41:19 UTC (rev 3892)
+++
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_hier_block2_impl.h
2006-10-29 23:23:38 UTC (rev 3893)
@@ -33,14 +33,14 @@
{
private:
std::string d_name;
- gr_basic_block_sptr d_component;
+ gr_basic_block_sptr d_basic_block;
public:
- gr_hier_component(const std::string name, gr_basic_block_sptr component)
- : d_name(name), d_component(component) {}
+ gr_hier_component(const std::string name, gr_basic_block_sptr basic_block)
+ : d_name(name), d_basic_block(basic_block) {}
std::string name() const { return d_name; }
- gr_basic_block_sptr component() const { return d_component; }
+ gr_basic_block_sptr basic_block() const { return d_basic_block; }
};
class gr_hier_block2_impl
@@ -55,8 +55,11 @@
std::vector<gr_hier_component> d_components;
- gr_basic_block_sptr get_component_by_name(const std::string name);
- std::string get_name_by_component(gr_basic_block_sptr component);
+ void define_component(const std::string &name, gr_basic_block_sptr
basic_block);
+ gr_basic_block_sptr lookup_component(const std::string &name);
+ std::string lookup_component(gr_basic_block_sptr basic_block);
+ void connect_prim(const std::string &from_name, int from_port,
+ const std::string &to_name, int to_port);
public:
~gr_hier_block2_impl();
Modified:
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/python/gnuradio/gr/qa_hier_block2.py
===================================================================
---
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/python/gnuradio/gr/qa_hier_block2.py
2006-10-29 21:41:19 UTC (rev 3892)
+++
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/python/gnuradio/gr/qa_hier_block2.py
2006-10-29 23:23:38 UTC (rev 3893)
@@ -31,6 +31,21 @@
hblock.define_component("source", src1)
hblock.define_component("sink", sink1)
+
+ def test_002_define_component_reserved_input(self):
+ hblock = gr.hier_block2("test_block",
+ gr.io_signature(1,1,gr.sizeof_int),
+ gr.io_signature(1,1,gr.sizeof_int))
+ src1 = gr.nop(gr.sizeof_int)
+ self.assertRaises(ValueError, lambda: hblock.define_component("input",
src1))
+
+ def test_002_define_component_reserved_output(self):
+ hblock = gr.hier_block2("test_block",
+ gr.io_signature(1,1,gr.sizeof_int),
+ gr.io_signature(1,1,gr.sizeof_int))
+ src1 = gr.nop(gr.sizeof_int)
+ self.assertRaises(ValueError, lambda: hblock.define_component("output",
src1))
+
def test_003_define_component_name_in_use(self):
hblock = gr.hier_block2("test_block",
gr.io_signature(1,1,gr.sizeof_int),
@@ -51,6 +66,18 @@
nop2 = gr.nop(gr.sizeof_int)
hblock.define_component("nop1", nop1)
self.assertRaises(ValueError, lambda: hblock.define_component("nop2",
nop1))
+
+ def test_005_connect_internal(self):
+ hblock = gr.hier_block2("test_block",
+ gr.io_signature(1,1,gr.sizeof_int),
+ gr.io_signature(1,1,gr.sizeof_int))
+
+ nop1 = gr.nop(gr.sizeof_int)
+ nop2 = gr.nop(gr.sizeof_int)
+ hblock.define_component("nop1", nop1)
+ hblock.define_component("nop2", nop2)
+ hblock.connect("nop1", 0, "nop2", 0)
+
if __name__ == "__main__":
- gr_unittest.main()
\ No newline at end of file
+ gr_unittest.main()
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r3893 - in gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src: lib/runtime python/gnuradio/gr,
jcorgan <=