| 171 | } |
| 172 | |
| 173 | SimpleGraph::SimpleGraph(const Graph* g) : g_(g) { |
| 174 | int n_nodes = g_->num_node_ids(); |
| 175 | nodes_.resize(n_nodes, nullptr); |
| 176 | nodes_[g->kSourceId] = new SimpleNode(g->source_node(), g->kSourceId); |
| 177 | nodes_[g->kSinkId] = new SimpleNode(g->sink_node(), g->kSinkId); |
| 178 | int n_edges = g->num_edge_ids(); |
| 179 | edges_.resize(n_edges, nullptr); |
| 180 | for (int i = 2; i < n_nodes; i++) { |
| 181 | const auto n = g->FindNodeId(i); |
| 182 | if (n) { |
| 183 | nodes_[i] = new SimpleNode(n, i); |
| 184 | } else { |
| 185 | free_node_ids_.insert(i); |
| 186 | } |
| 187 | } |
| 188 | for (int i = 0; i < n_edges; i++) { |
| 189 | const auto e = g->FindEdgeId(i); |
| 190 | if (e) { |
| 191 | const auto tfsrc = e->src(); |
| 192 | const auto tfdst = e->dst(); |
| 193 | bool is_control = e->IsControlEdge(); |
| 194 | auto src = nodes_[tfsrc->id()]; |
| 195 | auto dst = nodes_[tfdst->id()]; |
| 196 | auto edge = new SimpleEdge(i, src, e->src_output(), dst, e->dst_input(), |
| 197 | is_control); |
| 198 | edges_[i] = edge; |
| 199 | src->out_edges_.push_back(edge); |
| 200 | dst->in_edges_.push_back(edge); |
| 201 | } else { |
| 202 | free_edge_ids_.insert(i); |
| 203 | } |
| 204 | } |
| 205 | } |
| 206 | |
| 207 | void SimpleGraph::AddEdge(SimpleNode* src, int out_port, SimpleNode* dst, |
| 208 | int in_port) { |
nothing calls this directly
no test coverage detected