diff options
author | Josh Blum | 2012-11-06 21:52:00 -0800 |
---|---|---|
committer | Josh Blum | 2012-11-06 21:52:00 -0800 |
commit | b89c9abb84974492b4746a6fab5fe6cea920decb (patch) | |
tree | 12da2b8895390ff82d44a84db1feecfc9558b18f | |
parent | 4cec45599e1daf81db5aae72c15e005883f59088 (diff) | |
download | sandhi-b89c9abb84974492b4746a6fab5fe6cea920decb.tar.gz sandhi-b89c9abb84974492b4746a6fab5fe6cea920decb.tar.bz2 sandhi-b89c9abb84974492b4746a6fab5fe6cea920decb.zip |
add back in this best effort ref container
-rw-r--r-- | lib/hier_block.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/lib/hier_block.cpp b/lib/hier_block.cpp index 6c95e9b..a7ea896 100644 --- a/lib/hier_block.cpp +++ b/lib/hier_block.cpp @@ -45,6 +45,13 @@ void HierBlock::disconnect(const Element &elem) (*this)->topology->remove_topology(elem->topology.get()); } +static Apology::Wax get_ref(const Element &elem) +{ + boost::shared_ptr<Element> shared_self = elem.weak_self.lock(); + if (shared_self) return shared_self; + return elem; +} + void HierBlock::connect( const Element &src, const size_t src_index, @@ -53,8 +60,8 @@ void HierBlock::connect( ){ //TODO, this is the perfect place to validate IO sigs const Apology::Flow flow( - Apology::Port(src->get_elem(), src_index, src.weak_self.lock()), - Apology::Port(sink->get_elem(), sink_index, sink.weak_self.lock()) + Apology::Port(src->get_elem(), src_index, get_ref(src)), + Apology::Port(sink->get_elem(), sink_index, get_ref(sink)) ); (*this)->topology->add_flow(flow); } |