+void InterfaceGenerator::visit(InterfaceBlock &iface)
+{
+ if(iface.interface=="in")
+ {
+ if(!iface.linked_block && stage->previous)
+ {
+ const map<string, InterfaceBlock *> &prev_blocks = stage->previous->content.interfaces;
+ map<string, InterfaceBlock *>::const_iterator i = prev_blocks.find(iface.name);
+ if(i!=prev_blocks.end() && i->second->interface=="out" && i->second->name==iface.name)
+ {
+ iface.linked_block = i->second;
+ i->second->linked_block = &iface;
+ }
+ }
+ }
+
+ SetForScope<InterfaceBlock *> set_iface(iface_block, &iface);
+ TraversingVisitor::visit(iface);
+}
+