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)
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)
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 "
// 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);
}