Esempio n. 1
0
 // 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;
 }
Esempio n. 2
0
 // 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);
 }
Esempio n. 3
0
 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;
 }
Esempio n. 4
0
    // 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;
    }
Esempio n. 5
0
 EdgeRange GetAdjacentEdgeRange(const NodeID node) const
 {
     return osrm::irange(BeginEdges(node), EndEdges(node));
 }
Esempio n. 6
0
 unsigned GetOutDegree(const NodeIterator n) const { return EndEdges(n) - BeginEdges(n); }