X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibr2c2%2Froute.cpp;h=e3dfe36961c66a5a9e37d518373cc927d18df4c2;hb=bde934f7d5ba07a9442a305192e10024820d13ed;hp=795ae3215bbcbff77fa7eadc9b0baded96f70dd7;hpb=e621dd4120cb253417167b4295e436cee095ccb0;p=r2c2.git diff --git a/source/libr2c2/route.cpp b/source/libr2c2/route.cpp index 795ae32..e3dfe36 100644 --- a/source/libr2c2/route.cpp +++ b/source/libr2c2/route.cpp @@ -83,9 +83,9 @@ list dijkstra(const TrackIter &from, const Pred &goal) break; } - unsigned paths = lowest.track.endpoint().paths; - for(unsigned i=0; paths>>i; ++i) - if(paths&(1<>i; ++i) + if(ep.has_path(i)) { TrackIter next = lowest.track.next(i); if(!next) @@ -196,7 +196,7 @@ void Route::update_turnouts() if(unsigned tid2 = links[j]->get_turnout_id()) { - const TrackType::Endpoint &ep = links[j]->get_type().get_endpoint(links[j]->get_endpoint_by_link(**i)); + const TrackType::Endpoint &ep = links[j]->get_type().get_endpoint(links[j]->get_link_slot(**i)); int p = get_turnout(tid2); if(p>=0 && !ep.has_path(p)) { @@ -345,7 +345,7 @@ RouteValidityMask Route::check_validity(Track &trk) const if(unsigned tid = (*i)->get_turnout_id()) { - const TrackType::Endpoint &ep = (*i)->get_type().get_endpoint((*i)->get_endpoint_by_link(trk)); + const TrackType::Endpoint &ep = (*i)->get_type().get_endpoint((*i)->get_link_slot(trk)); int path = get_turnout(tid); if(path>=0) { @@ -364,7 +364,7 @@ RouteValidityMask Route::check_validity(Track &trk) const unsigned tid2 = tlinks[j]->get_turnout_id(); if(tid2) { - const TrackType::Endpoint &ep2 = tlinks[j]->get_type().get_endpoint(tlinks[j]->get_endpoint_by_link(**i)); + const TrackType::Endpoint &ep2 = tlinks[j]->get_type().get_endpoint(tlinks[j]->get_link_slot(**i)); path = get_turnout(tid2); // Ignore a linked turnout with some other path set if(path>=0 && !ep2.has_path(path)) @@ -444,7 +444,7 @@ void Route::Loader::finish() { Track *link = (*i)->get_link(k); if(!obj.tracks.count(link)) - obj.add_track_chain(*link, link->get_endpoint_by_link(**i), turnouts); + obj.add_track_chain(*link, link->get_link_slot(**i), turnouts); if(!obj.tracks.count(*i)) obj.add_track_chain(**i, k, turnouts); break;