237 auto edgeVertices = _edge.Vertices();
240 for (
auto const &v : {edgeVertices.first, edgeVertices.second})
242 if (this->vertices.find(v) == this->vertices.end())
243 return EdgeType::NullEdge;
247 for (
auto const &v : {edgeVertices.first, edgeVertices.second})
251 auto vertexIt = this->adjList.find(v);
252 assert(vertexIt != this->adjList.end());
253 vertexIt->second.insert(_edge.Id());
260 return ret.first->second;
297 auto vertexIt = this->adjList.
find(_vertex);
298 if (vertexIt == this->adjList.end())
301 for (
auto const &edgeId : vertexIt->second)
303 const auto &edge = this->EdgeFromId(edgeId);
304 auto neighborVertexId = edge.From(_vertex);
305 if (neighborVertexId != kNullId)
307 const auto &neighborVertex = this->VertexFromId(neighborVertexId);
353 auto incidentEdges = this->IncidentsTo(_vertex);
356 for (
auto const &incidentEdgeRef : incidentEdges)
358 const auto &incidentEdgeId = incidentEdgeRef.first;
359 const auto &incidentEdge = this->EdgeFromId(incidentEdgeId);
360 const auto &neighborVertexId = incidentEdge.To(_vertex);
361 const auto &neighborVertex = this->VertexFromId(neighborVertexId);
506 auto vIt = this->vertices.find(_vertex);
507 if (vIt == this->vertices.end())
513 auto incidents = this->IncidentsTo(_vertex);
514 for (
auto edgePair : incidents)
515 this->RemoveEdge(edgePair.first);
518 incidents = this->IncidentsFrom(_vertex);
519 for (
auto edgePair : incidents)
520 this->RemoveEdge(edgePair.first);
523 this->adjList.erase(_vertex);
526 this->vertices.erase(_vertex);
529 auto iterPair = this->names.equal_range(name);
530 for (
auto it = iterPair.first; it != iterPair.second; ++it)
532 if (it->second == _vertex)
534 this->names.erase(it);
574 auto edgeIt = this->edges.find(_edge);
575 if (edgeIt == this->edges.end())
578 auto edgeVertices = edgeIt->second.Vertices();
581 for (
auto const &v : {edgeVertices.first, edgeVertices.second})
583 if (edgeIt->second.From(v) != kNullId)
585 auto vertex = this->adjList.find(v);
586 assert(vertex != this->adjList.end());
587 vertex->second.erase(_edge);
591 this->edges.erase(_edge);
644 const typename std::map<VertexId, EdgeId_S>::const_iterator &adjIt =
645 this->adjList.find(_sourceId);
648 if (adjIt == this->adjList.end())
649 return EdgeType::NullEdge;
652 for (std::set<EdgeId>::const_iterator edgIt = adjIt->second.begin();
653 edgIt != adjIt->second.end(); ++edgIt)
656 const typename std::map<EdgeId, EdgeType>::const_iterator edgeIter =
657 this->edges.find(*edgIt);
660 if (edgeIter != this->edges.end() &&
661 edgeIter->second.From(_sourceId) == _destId)
663 assert(edgeIter->second.To(_destId) == _sourceId);
664 return edgeIter->second;
668 return EdgeType::NullEdge;