]> git.gag.com Git - debian/gnuradio/commitdiff
Clean up shared pointer casting.
authorjcorgan <jcorgan@221aa14e-8319-0410-a670-987f0aec2ac5>
Wed, 29 Aug 2007 19:16:10 +0000 (19:16 +0000)
committerjcorgan <jcorgan@221aa14e-8319-0410-a670-987f0aec2ac5>
Wed, 29 Aug 2007 19:16:10 +0000 (19:16 +0000)
git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@6208 221aa14e-8319-0410-a670-987f0aec2ac5

gnuradio-core/src/lib/runtime/gr_hier_block2.h
gnuradio-core/src/lib/runtime/gr_hier_block2_detail.cc

index 51eb687edc758ee0b13f8ab16f5a814cb5efaa00..7ecc0d770bad3df136d0904a3045530563cb00c1 100644 (file)
@@ -89,4 +89,8 @@ public:
   gr_flat_flowgraph_sptr flatten() const;
 };
 
+inline gr_hier_block2_sptr make_hier_block2_sptr(gr_basic_block_sptr block) {
+  return boost::dynamic_pointer_cast<gr_hier_block2, gr_basic_block>(block);
+}
+
 #endif /* INCLUDED_GR_HIER_BLOCK2_H */
index 1412a284cd9a5fcf2fd901745ac64ec5ea065a29..76d23cab02c04c252759c00ae66db2570912cafd 100644 (file)
@@ -57,8 +57,8 @@ gr_hier_block2_detail::connect(gr_basic_block_sptr src, int src_port,
   if (src.get() == dst.get())
     throw std::invalid_argument("connect: src and destination blocks cannot be the same");
 
-  gr_hier_block2_sptr src_block(boost::dynamic_pointer_cast<gr_hier_block2, gr_basic_block>(src));
-  gr_hier_block2_sptr dst_block(boost::dynamic_pointer_cast<gr_hier_block2, gr_basic_block>(dst));
+  gr_hier_block2_sptr src_block(make_hier_block2_sptr(src));
+  gr_hier_block2_sptr dst_block(make_hier_block2_sptr(dst));
 
   if (src_block && src.get() != d_owner) {
     if (GR_HIER_BLOCK2_DETAIL_DEBUG)
@@ -111,8 +111,8 @@ gr_hier_block2_detail::disconnect(gr_basic_block_sptr src, int src_port,
   if (src.get() == dst.get())
     throw std::invalid_argument("disconnect: source and destination blocks cannot be the same");
 
-  gr_hier_block2_sptr src_block(boost::dynamic_pointer_cast<gr_hier_block2, gr_basic_block>(src));
-  gr_hier_block2_sptr dst_block(boost::dynamic_pointer_cast<gr_hier_block2, gr_basic_block>(dst));
+  gr_hier_block2_sptr src_block(make_hier_block2_sptr(src));
+  gr_hier_block2_sptr dst_block(make_hier_block2_sptr(dst));
 
   if (src_block && src.get() != d_owner) {
     if (GR_HIER_BLOCK2_DETAIL_DEBUG)
@@ -258,11 +258,11 @@ gr_hier_block2_detail::resolve_endpoint(const gr_endpoint &endp, bool is_input)
   std::stringstream msg;
 
   // Check if endpoint is a leaf node
-  if (boost::dynamic_pointer_cast<gr_block, gr_basic_block>(endp.block()))
+  if (make_gr_block_sptr(endp.block()))
     return endp;
   
   // Check if endpoint is a hierarchical block
-  gr_hier_block2_sptr hier_block2(boost::dynamic_pointer_cast<gr_hier_block2, gr_basic_block>(endp.block()));
+  gr_hier_block2_sptr hier_block2(make_hier_block2_sptr(endp.block()));
   if (hier_block2) {
     if (GR_HIER_BLOCK2_DETAIL_DEBUG)
       std::cout << "Resolving endpoint " << endp << " as an " 
@@ -298,7 +298,7 @@ gr_hier_block2_detail::flatten_aux(gr_flat_flowgraph_sptr sfg) const
 
   // Recurse hierarchical children
   for (gr_basic_block_viter_t p = blocks.begin(); p != blocks.end(); p++) {
-    gr_hier_block2_sptr hier_block2(boost::dynamic_pointer_cast<gr_hier_block2, gr_basic_block>(*p));
+    gr_hier_block2_sptr hier_block2(make_hier_block2_sptr(*p));
     if (hier_block2)
       hier_block2->d_detail->flatten_aux(sfg);
   }