X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibmarklin%2Froute.cpp;h=daa044f9b9b4054b774421df3e6ada5168f76c43;hb=e392d397f6b86a49a05e9738357ccbfc2a922f01;hp=6dc7ae51e13350efe01269c06c199fde829675f8;hpb=2bb6ce8ada216c0b2caa48f4639d03f2c581098e;p=r2c2.git diff --git a/source/libmarklin/route.cpp b/source/libmarklin/route.cpp index 6dc7ae5..daa044f 100644 --- a/source/libmarklin/route.cpp +++ b/source/libmarklin/route.cpp @@ -89,7 +89,7 @@ list dijkstra(Track &from, unsigned ep, const Pred &goal) } const TrackType &type = lowest.track->get_type(); - const vector &eps = type.get_endpoints(); + const vector &eps = type.get_endpoints(); const vector &links = lowest.track->get_links(); for(unsigned i=0; i dijkstra(Track &from, unsigned ep, const Pred &goal) } } - if(!final) - throw InvalidParameterValue("Could not find a route"); - list result; for(Node *node=final; node; node=node->prev) result.push_front(node->track); @@ -125,6 +122,9 @@ Route *create_route(Track &from, unsigned ep, const Pred &goal) { list tracks = dijkstra(from, ep, goal); + if(tracks.empty()) + return 0; + Route *route = new Route(from.get_layout()); for(list::iterator i=tracks.begin(); i!=tracks.end(); ++i) route->add_track(**i); @@ -184,7 +184,7 @@ void Route::update_turnouts() { found.insert(tid); - const vector &endpoints = (*i)->get_type().get_endpoints(); + const vector &endpoints = (*i)->get_type().get_endpoints(); const vector &links = (*i)->get_links(); // Build a combined path mask from linked endpoints @@ -196,7 +196,7 @@ void Route::update_turnouts() if(unsigned tid2 = links[j]->get_turnout_id()) { - const Endpoint &ep = links[j]->get_type().get_endpoints()[links[j]->get_endpoint_by_link(**i)]; + const TrackType::Endpoint &ep = links[j]->get_type().get_endpoints()[links[j]->get_endpoint_by_link(**i)]; int p = get_turnout(tid2); if(p>=0 && !(ep.paths&(1< &endpoints = (*i)->get_type().get_endpoints(); + const vector &endpoints = (*i)->get_type().get_endpoints(); if(unsigned tid=(*i)->get_turnout_id()) { int r = get_turnout(tid); @@ -417,7 +417,7 @@ void Route::Loader::finish() continue; unsigned path_mask = 1<second; - const vector &eps = (*i)->get_type().get_endpoints(); + const vector &eps = (*i)->get_type().get_endpoints(); for(unsigned k=0; k