X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibr2c2%2Froute.cpp;h=80c61088eda68223be46299bac6621b289291d35;hb=54392d65e2053d1eacb4cfcc435f1013993f2973;hp=38ea9f681d77da64f10600b369124c27724aca59;hpb=ca9d278f9472206ad9a01190dcef9f0eb1bcc274;p=r2c2.git diff --git a/source/libr2c2/route.cpp b/source/libr2c2/route.cpp index 38ea9f6..80c6108 100644 --- a/source/libr2c2/route.cpp +++ b/source/libr2c2/route.cpp @@ -297,9 +297,12 @@ void Route::add_tracks(const set &trks) update_turnouts(); } -void Route::add_track_chain(Track &start, unsigned ep, const TurnoutMap &trnts) +void Route::add_track_chain(const TrackIter &start, const TurnoutMap &trnts) { - TrackIter iter(&start, ep); + if(!start) + throw invalid_argument("Route::add_track_chain"); + + TrackIter iter = start; while(iter) { if(iter->get_type().is_dead_end()) @@ -451,9 +454,9 @@ void Route::Loader::finish() { Track *link = (*i)->get_link(k); if(!obj.tracks.count(link)) - obj.add_track_chain(*link, link->get_link_slot(**i), turnouts); + obj.add_track_chain(TrackIter(link, link->get_link_slot(**i)), turnouts); if(!obj.tracks.count(*i)) - obj.add_track_chain(**i, k, turnouts); + obj.add_track_chain(TrackIter(*i, k), turnouts); break; }