X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibmarklin%2Flayout.cpp;h=1df37d3d3ea6b742dfb75e7f893a1d7056426fa0;hb=80dcfa55c913037066e43fa115ae56fa51b974f2;hp=121e19e937a1366ec1c4afd259a36943f522edd1;hpb=684cf3b8c41e9bb60b2d286bd6d632b0c5abf0ab;p=r2c2.git diff --git a/source/libmarklin/layout.cpp b/source/libmarklin/layout.cpp index 121e19e..1df37d3 100644 --- a/source/libmarklin/layout.cpp +++ b/source/libmarklin/layout.cpp @@ -45,6 +45,14 @@ void Layout::add_route(Route &r) signal_route_added.emit(r); } +Route &Layout::get_route(const string &name) const +{ + for(set::const_iterator i=routes.begin(); i!=routes.end(); ++i) + if((*i)->get_name()==name) + return **i; + throw KeyError("Unknown route", name); +} + void Layout::remove_route(Route &r) { if(routes.erase(&r)) @@ -137,9 +145,7 @@ void Layout::check_routes() Track *start = track; while(1) { - int out_ep = track->traverse(ep, trk_path); - if(out_ep<0) - break; + unsigned out_ep = track->traverse(ep, trk_path); Track *next = track->get_links()[out_ep]; if(!next || next == start) break;