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())
{
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;
}