| 523 | } |
| 524 | |
| 525 | void Graph::RemoveEdge(const Edge* e) { |
| 526 | TF_DCHECK_OK(IsValidNode(e->src_)) << e->src_->DebugString(); |
| 527 | TF_DCHECK_OK(IsValidNode(e->dst_)) << e->dst_->DebugString(); |
| 528 | CHECK_EQ(e->src_->out_edges_.erase(e), size_t{1}); |
| 529 | CHECK_EQ(e->dst_->in_edges_.erase(e), size_t{1}); |
| 530 | CHECK_EQ(e, edges_[e->id_]); |
| 531 | CHECK_GT(num_edges_, 0); |
| 532 | |
| 533 | edges_[e->id_] = nullptr; |
| 534 | RecycleEdge(e); |
| 535 | --num_edges_; |
| 536 | } |
| 537 | |
| 538 | void Graph::RecycleEdge(const Edge* e) { |
| 539 | free_edges_.push_back(const_cast<Edge*>(e)); |