// searches for a specific edge EdgeIterator FindEdge(const NodeIterator from, const NodeIterator to) const { for (const auto i : osrm::irange(BeginEdges(from), EndEdges(from))) { if (to == edge_array[i].target) { return i; } } return SPECIAL_EDGEID; }
// searches for a specific edge EdgeIterator FindEdge(const NodeIterator from, const NodeIterator to) const { for (const auto i : osrm::irange(BeginEdges(from), EndEdges(from))) { if (to == edge_list[i].target) { return i; } } return EndEdges(from); }
unsigned GetDirectedOutDegree(const NodeIterator n) const { unsigned degree = 0; for (const auto edge : osrm::irange(BeginEdges(n), EndEdges(n))) { if (GetEdgeData(edge).forward) { ++degree; } } return degree; }
// removes all edges (source,target) int32_t DeleteEdgesTo(const NodeIterator source, const NodeIterator target) { int32_t deleted = 0; for (EdgeIterator i = BeginEdges(source), iend = EndEdges(source); i < iend - deleted; ++i) { if (edge_list[i].target == target) { do { deleted++; edge_list[i] = edge_list[iend - deleted]; makeDummy(iend - deleted); } while (i < iend - deleted && edge_list[i].target == target); } } number_of_edges -= deleted; node_list[source].edges -= deleted; return deleted; }
EdgeRange GetAdjacentEdgeRange(const NodeID node) const { return osrm::irange(BeginEdges(node), EndEdges(node)); }
unsigned GetOutDegree(const NodeIterator n) const { return EndEdges(n) - BeginEdges(n); }