| 28 | } |
| 29 | |
| 30 | Graph_L graph_to_linkgraph(Graph &G, bool if_directed, std::string weight_key, bool is_deg, bool is_reverse){ |
| 31 | int node_num = G.node.size(); |
| 32 | const std::vector<graph_edge>& edges = G._get_edges(if_directed); |
| 33 | int edges_num = edges.size(); |
| 34 | Graph_L G_l(node_num, if_directed, is_deg); |
| 35 | for(register int i = 0; i < edges_num; i++){ |
| 36 | graph_edge e = edges[i]; |
| 37 | edge_attr_dict_factory& edge_attr = e.attr; |
| 38 | weight_t edge_weight = edge_attr.find(weight_key) != edge_attr.end() ? edge_attr[weight_key] : 1; |
| 39 | if(is_reverse){ |
| 40 | std::swap(e.u, e.v); |
| 41 | } |
| 42 | G_l.add_weighted_edge(e.u, e.v, edge_weight); |
| 43 | if (!if_directed){ |
| 44 | G_l.add_weighted_edge(e.v, e.u, edge_weight); |
| 45 | } |
| 46 | } |
| 47 | return G_l; |
| 48 | } |
no test coverage detected