HLink MLGDao::mirrorEdge( const HLink& current, Direction dir, const Layer& newLayer, NodeMap& nodeMap ) { // Find equivalent in top layer Node topSrc; auto it = nodeMap.find(current.source()); if( it != nodeMap.end() ) { // not found topSrc = it->second; } else { topSrc = mirrorNode(current.source(), dir, newLayer); nodeMap.emplace(current.source(), topSrc); } Node topTgt; it = nodeMap.find(current.target()); if( it != nodeMap.end() ) { // not found topTgt = it->second; } else { topTgt = mirrorNode(current.target(), dir, newLayer); // Add to map to retrieve edges nodeMap.emplace(current.target(), topTgt); } // Add new HLink return m_link->addHLink(topSrc.id(), topTgt.id(), current.weight()); }